Hi,
also zunächst mal solltest du Code immer in den dafür vorgesehenen "Bereich" posten, ist leslicher und die Einschübe bleiben erhalten.
Außerdem: Man kann in einem Tutorial nicht immer ALLES erklären, aber es gibt meist auch Tuts, die das erklären, auf das andere aufbauen.
So zum Thema:
Code:
TCCR0A = (1<<CS20) | (1<<WGM02); //Prescaler von 1 | CTC-Modus, ATtiny84 hat keine Prescaler Funktion ? richtig?
OCR0A = 10000;
TIMSK |= (1<<OCIE2); //Befehl aus Roboternetz Tutorial soll Interrupts aktivieren und damit Timer starten, bei mir Funktionirt es nicht
sei();
Dieser Teil deines Codes steht weder in der MainRoutine, noch in einer Setup-Routine noch in einer ISR. --> Fehler
Eigentlich sollte der Code am Anfang der Main-Routine aufgerufen werden, bevor dann in die Endlosschleife gesprungen wird.
Das Keyword "SIGNAL" ist veraltet (sollte deswegen durch "ISR" ersetzt werden) und kennzeichnet eine Interrupt-Service-Routine (also ein Interrupt-Sprungvector). In der Klammer ist dann der jeweilige Auslöser angegeben, also z.b. Timer0-Overflow.
Wie genau der Timer (und auch alle andere Hardware) eingestellt / aufgesetzt werden muss, erfährst du im DB. Im Prinzip musst du nur die Register richtig setzen und in deinem Fall noch die Interrupts global aktivieren. Dann wird bei erreichen eines bestimmten Zustands (z.b. Ovf) in die jeweilige ISR gesprungen, der Code darin abgearbeitet und anschließend gehts da weiter, wo vorher unterbrochen wurde.
Gruß
Chris
Lesezeichen