Gelöst: Timer0 != Timer2 auf Atmega328p?

Hallo,

stehe gerade auf dem Schlauch und da hilft mir das Handbuch auch nicht sonderlich weiter. Nachdem Handbuch, soweit ich das richtig deute, ist auf dem Atmega328P der Timer0 und Timer2 ein 8-Bit Timer mit den gleichen Eigenschaften. Soll heißen, beiden haben 2 Compare Register, Prescaler etc.
http://www.atmel.com/Images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf

Jedoch geht es bei mir mit Timer2 irgendwie nicht. Timer0 lieft wunderbar.

Timer0

ISR(TIMER0_OVF_vect)
{
//...
	TCNT0 = (uint8_t)(int16_t)-(F_CPU / 1024 * 10e-3 + 0.5);
//...
}

int main(void)
{
/...
	TCCR0B = (1<<CS02)|(1<<CS00);
	TCNT0 = (uint8_t)(int16_t)-(F_CPU / 1024 * 10e-3 + 0.5);
	TIMSK0 |= 1<<TOIE0;
//...
}

Timer2

ISR(TIMER2_OVF_vect)
{
//...
	TCNT2 = (uint8_t)(int16_t)-(F_CPU / 1024 * 10e-3 + 0.5);
//...
}

int main(void)
{
/...
	TCCR2B = (1<<CS22)|(1<<CS20);
	TCNT2 = (uint8_t)(int16_t)-(F_CPU / 1024 * 10e-3 + 0.5);
	TIMSK2 |= 1<<TOIE2;
//...
}

Nein. Die sind nicht gleich. Das sind beides 8 Bit Timer, aber die sind anders aufgebaut.

Timer2 hat z.B. mehr Prescaler Optionen als die anderen Timer (das ist der Grund weshalb er oft verwendet wird). Deshalb ist schon mal die Sache die mit den CS Bits anders.

CSn0 und CSn2 ist Prescaler 1024 auf Timer0. Auf Timer2 ist es dagegen 128!

Vergleiche mal Seite 162 mit Seite 110

Danke, für die schnelle Hilfe. Nun gehen beide Timer. Wobei Timer2 später vermutlich wegkommt, da ich mit Timer0 bereits die entsprechenden Sachen mit integrieren kann.

Prescalereinstellungen auf 158/159 gefunden ;)

Gibt es eigentlich auch anderen Zusammenfassungen für gängie Atmel Chips ohne jedesmal durch dieses mächtig aufgeblähte DB zu wurschteln?

Mikrokontroller hat für ein paar eine Auflistung, jedoch keinesfalls vollständig und auf unterschiedliche Prescalers wurde da auch nicht hingewiesen. Waren lediglich die normalen Basics.

Wenns nicht gibt, dann muss halt häufiger das DB herhalten.

Datenblatt ist die einzig wirklich zuverlässige Quelle. Nimm mal das hier: http://www.atmel.com/Images/doc8161.pdf

Dann passen auch die Seitennummern ;)

In Acrobat Reader (und wohl auch anderen PDF Readern) kann man sich links eine Leiste mit dem Inhaltsverzeichnis anzeigen lassen. Damit kann man eigentlich schnell von einem Punkt zu einem anderen springen.