Register ICR1

Gast #2743508
Lesenswert?

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ß
Gast #2743653
Lesenswert?

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.
#2743663
Lesenswert?

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.
Gast #2743676
Lesenswert?

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.
Gast #2743682
Lesenswert?

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
Gast #2743696
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren