wie geht den das mit der Berechnung,
( F_CPU / Prescaler = Frequenz mit der gezählt wirt )*(TCCRx bis 256) = ISR
ich glaube ich habe das noch nicht ganz verstanden?
Hier wird ausgerechnet, nach wie vielen Timerüberläufen eine Sekunde vergangen ist.Bei deinem Code verstehe ich manches nicht
#define COUNT F_CPU/(8ul*256ul) was wirt hier gemacht ?
Ich nehme immer SIGNAL(...) und das funktioniert, ich sehe keinen Grund darin, das mit ISR(...) zu machen, da mir diese Interruptbezeichnungen nicht gefallen. Aber sonst bewirkt beides das gleiche.SIGNAL (SIG_OVERFLOW0) das müsste glaube ich die alte Bezeichnung sein ist das das gleiche wie ISR(TIMER0_OVF_vect) ?
Der Teiler des Timers wird auf 64 gesetzt, um ihn zu starten. DIVIDER ist nur ein Symbol, das ich verwende, um bei einer Änderung nicht jede Codestelle einzeln ersetzen zu müssen.#define DIVIDER 0x2 was ist das für ein wert und wie kommst du darauf ?
TCCR0 |= DIVIDER; // Timer aktivieren, Du verknüpfst das mit einem ODER und der Timer soll ab dem 0x2; beginnen zu zahlen warum machst du das auf diese art ?
Ich verstehe in deinem Code deine Berechnungen nicht und denke, dass sie nicht ganz richtig sind. In meinem Code sind sie auf jeden Fall richtig, da er bei mir funktioniert.welche unterschiede siehst du in meinem Code zu deinem Code ?
Damit erreiche ich, dass bei jedem Timerüberlauf takt dekrementiert wird. Wenn takt 0 ist, ist eine Sekunde vergangen, da dies durch COUNT festgelegt wurde (nach wie vielen Überläufen eine Sekunde vergangen ist). Wenn takt nun 0 ist, wird die wieder Variable auf COUNT gesetzt, damit das ganze wieder von vorne beginnen kann und sec wird um eins erhöht, da eine weitere Sekunde verangen ist.takt--;
if(takt == 0)
{
takt=COUNT;
sec++;
...
} diese Prozedur kann ich nicht nachvollziehen was ereichst du damit ?
wie geht den das mit der Berechnung,
( F_CPU / Prescaler = Frequenz mit der gezählt wirt )*(TCCRx bis 256) = ISR
ich glaube ich habe das noch nicht ganz verstanden?
http://www.avr-praxis.de/forum/showthread.php?t=74
Guck dir den Timer Calculator mal an, der is echt top!
#define COUNT F_CPU/(8ul*256ul)
F_CPU = Systemtakt
8 = Prescaler
256 = 0x100 = 0b100000000 (wegen 8 Bit Timer, bei 256 gibt es einen Überlauf)
Formel
Anzahl der Überläufe, bis eine Sekunde vergangen ist = Systemtakt / (Prescaler * 256)
Lesezeichen