Hallo! Habe ein Problem! Und zwar will ich eine Stoppuhr basteln, die eigentlich schon ganz gut funktioniert. Mein Problem ist, dass die Zählvariable ein integer ist und somit nur bis 255 zählen kann. Ich lass die Stoppuhr in zehntelsekunden laufen - was heißt, dass bei 25.5 Sekunden Schluss ist. Wie kann ich nun auf einfachen Wege den counter weiter rauf zählen lassen? Der Timerinterrupt macht folgendes: ISR(TIMER1_COMPA_vect) { overflowcounter++; if(overflowcounter == 10) //alle zehntelsekunde counter erhöhen { counter++; overflowcounter=0; } } Grüße Markus
o.O Vieleicht genauso wie du das schon mit dem overflow counter gemacht hast nur mit einer weiteren Variablen?
Das Problem ist nicht "Counter". Es ist als "int" definiert uns sollte daher 2 byte habe und somit bis 2^16=65536 zöhlen können. Dein Problem steckt in "zahl", DAS ist eine 8Bit- variable und kann nur bis 255 zählen. Versuch eine andere Umrechnung von "Counter" für das Display!
limbo! schrieb: > Mein Problem ist, dass die Zählvariable ein integer ist und somit nur > bis 255 zählen kann. Seit wann das denn? int ist mindestens 16 Bit, aber nimm besser: uint8_t: 0 - 255 uint16_t: 0 - 65535 uint32_t: 0 - 4294967295 Peter
Hallo! Ach ich sehe schon, ich hab mich zu sehr auf den Counter versteift und dazu noch keine Ahnung gehabt wie groß ein int tatsächlich ist ^^ Ich sollte mir mal die Datentypen zu Gemüte führen... ich hab jetzt aus "zahl" ein uint16_t gemacht und alles läuft prächtig! Danke für eure Hilfe! Grüße Markus
limbo! schrieb:
> dazu noch keine Ahnung gehabt wie groß ein int tatsächlich ist ^^
Das hängt auch von der Architektur ab, ein int darf auch 8bit, 32bit
oder 64bit groß sein...
> if(overflowcounter == 10)
So was sollte man eigentlich immer als:
if (overflowcounter >= 10)
schreiben. Defensive Programmierung.
Gruß,
Nick
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.