Hallo,
ich habe hier erstmals ein AtMega16 vorliegen und tue mich zur Zeit noch etwas schwer.
Ich habe in der Vergangenheit nur mit Mikroprozessoren der 8051Serie gearbeitet.
Und zwar möchte ich zur Einarbeitung erst mal eine ISR jede sekunde ausführen.
Ich habe mir dazu gedacht den 16Bit zähler hochzählen zu lassen und sobald der Wert mit meinem Errecheneten Wert übereinstimmt soll die ISR aufgerufen werden.
Nun meine erste frage, wie erechene ich den Wert.
Meine annahme: Vergleichswert = 8MHz * 1s / 1024
Wenn ich den Vorteiler auf 1024 setze.
Das macht bei mir 7812,5 -> 7812
Falls das richtig ist, was ist dann an meinem Code falsch bzw, was habe ich vergessen:
Meine ISR wird angesprungen aber häufiger als jede sekunde.Code:TCCR1B = (1<<WGM12) | (1<<CS12) | (1<<CS10); OCR1AH = 30; OCR1AL = 132; /*Representiert 7812*/ TIMSK |= (1<<OCIE1A); /*Interrupt bei gleichheit*/ sei();
CS12 und CS10 setzen den Vorteiler auf 1024.
WGM12 sorgt dafür das der Zähler geleert wird bei gleichheit.
Meine ISR sieht folgendermaßen aus:
mfg C-M-MCode:SIGNAL(SIG_OUTPUT_COMPARE1A) { /*mach was...*/ }
Lesezeichen