void Timer1Init(void) { TCCR1A = 0x00; TIMSK1 = 0x07; EIMSK |= 0x01; EICRA |= 0x03; /* OCR1A= 20000; OCR1B= 20000; ICR1 = 0x4e20; */ TCCR1B = 0x02; } Kann mir jmd sagen, wieso die hier auskommentierten Register für einen Phasenanschnitt/korrekten Ablauf des Timer1 im Quellcode vorhanden sein müssen? Der ICR1 macht mir zu schaffen. uC=ATMega 2561 Danke und Gruß
Hi
>Der ICR1 macht mir zu schaffen.
Braucht man nicht. Wenn der Code von dir wäre, wüsstest du das.
MfG Spess
spess53 schrieb: > Braucht man nicht. Wenn der Code von dir wäre, wüsstest du das. Wenn er C könnte, wüsste er, dass Kommentare sowieso komplett ignoriert werden.
Das stand deswegen in Kommentaren, damit gleich zu sehen ist, worauf ich Bezug nehme, ergo im Quellcode stehts nicht in Kommentaren. Der Quellcode ist ebenfalls von mir. Wenn ich das rausnehme, geht der Phasenanschnitt nicht.
Und du glaubst, wir alle warten jetzt nur darauf, raussuchen zu dürfen, welche Interrupts du hier TIMSK1 = 0x07; alle freigibst. Benutze die Bitnamen, dann sieht man auch was. TCCR1A = 0x00; TCCR1B = 0x02; Das dürften die Prescaler BIts sein. D.h. Spezialmodus ist schon mal keiner aktiv. Aber ehrlich gesagt, hab ich jetzt keine Lust, mir im Datenblatt die Bits zusammenzusuchen.
TIMSK = 0x07; -->TOIE1 & OCIE1A & OCIE1B sind gesetzt TCCR1A = 0x00; -->Normales Hochzählen EIMSK = 0x01; -->Interrupt 0 erlauben EICRA -->erkennt steigende Flanke TCCR1B --> 8-Prescale & Start Timer hätte ich gewusst, dass man sämtliche Register kennen muss, um mir den ICR1 zu erklären, hätte ich das im Vorfeld getan.
Hi >hätte ich gewusst, dass man sämtliche Register kennen muss, um mir den >ICR1 zu erklären, hätte ich das im Vorfeld getan. Du sollst nichts erklären, sondern es richtig schreiben: Nicht TIMSK = 0x07; sondern TIMSK = 1<<TOIE1 | 1<<OCIE1A | 1<<OCIE1B Da weiß jeder ohne Kommentar was Fakt ist und du weißt auch in einem halben Jahr was du dort gemacht hast ohne im Datenblatt nachzusehen. MfG Spess
spess53 schrieb: > Hi > >>hätte ich gewusst, dass man sämtliche Register kennen muss, um mir den >>ICR1 zu erklären, hätte ich das im Vorfeld getan. > > Du sollst nichts erklären, sondern es richtig schreiben: > > Nicht TIMSK = 0x07; > sondern TIMSK = 1<<TOIE1 | 1<<OCIE1A | 1<<OCIE1B > > Da weiß jeder ohne Kommentar was Fakt ist und du weißt auch in einem > halben Jahr was du dort gemacht hast ohne im Datenblatt nachzusehen. > > MfG Spess Gut, akzeptiert.
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.