Zitat Zitat von Maxtronik Beitrag anzeigen
Es macht bei mir keinen Unterschied ob ich Das CS11 Bit so schreibe:
TCCR1B = (1<<CS11); // starte timer Prescaler 8
oder so wie man es bei den Ausgängen macht:
TCCR1B |= (1<<CS11); // starte timer Prescaler 8
Solange TCCR1B vorher 0 war, macht das keinen Unterschied. Beim Einschalten des µC's ist das Register 0.
Nur soll man bei der ersten Initialisierung nicht verodern (|=), sondern direkt zuweisen. Grund dafür: Wenn z.B. ein Bootlader aktiv war, kann der das Register schon vorbesetzt haben, dann kommt mit Verodern Murks raus.
Was macht eigentlich das Init() ? Auch würde ich noch TCCR1A auf 0 setzen, einfach der Gründlichkeit halber und damit ich sicher bin, das alle beteiligten Register den von mir gewünschten Wert haben.
Mache ich vielleicht dort einen Fehler???
Nein, hab's simuliert und sieht alles gut aus, in Ergebnis steht der Wert in µs.
Vielleicht lösche ich das Bit ja auch falsch???
TCCR1B &= ~(1<<CS11); // Stoppe timer
Ist auch richtig. Du bist sicher das richtige Target gewählt und F_CPU definiert zu haben ?
Welcher Optimierungslevel ist eingestellt ?
Bekommst Du Warnings ? Wenn ja, welche ?