Hast du die Attiny Core Files installiert und evtl. das Board entsprechend ausgewählt? z.B. hier:
https://code.google.com/p/arduino-tiny/
Addi2438:
Die 2te Frage, die ich habe, wie knüpfe ich die Overflows nun an ein Interrupt?
In dem du mit dem entsprechenden Makro eine Interrupt Service Routine/Interrupt Vektor erstellst:
ISR(TIM1_OVF_vect)
{
}
Diese wird dann aufgerufen wenn das entsprechende Interrupt Enable Bit gesetzt ist und ein Überlauf eintritt.
Außerdem müsstest du noch das Timer/Counter-Register anfassen um auf 1 Sekunde zu kommen! Besser geht das daher wenn du den CTC Modus verwendest (Seite 72.). Dann zählt der Zähler hoch und wenn ein bestimmter Wert erreicht ist, wird je nach Einstellung ein Interrupt ausgelöst und gleichzeitig der Zähler wieder auf 0 gesetzt (Clear Timer on Compare Match).
Der Wert des Compare Match Registers ist glaube ich:
(Zeit in Sek. / Takt Periode / Prescaler) - 1
Oder:
(Zeit in Sek * Frequenz / Prescaler) - 1
Also z:B.:
(1 Sek * 1.000.000 Hz / 4096) - 1 = 243
Dieser Wert kommt in das OCR1A und das OCR1C Register (Output Compare Match Register).
Dann musst du den CTC Modus aktivieren indem du das CTC1 Bit in TCCR1 setzt. Und in TIMSK statt dem TOIE1 (Timer Overflow Interrupt Enable) Bit das OCIE1A Bit aktivieren (Output Compare Match Interrupt Enable, Timer1, Kanal A).
Und dann statt dem Overflow den Compare Match Interrupt verwenden:
ISR(TIM1_COMPA_vect)
{
}
Hier ist es bei ATTiny etwas verwirrend, dass es für das Clear ein extra C Register gibt. Daneben gibt es noch A/B Register. Mit diesen zwei kann man mit den COM1A/B Bits automatisch Pins schalten (ist im Datenblatt erklärt). Völlig ohne extra ISR die den Code unterbricht. Komplett in Hardware. Auf den höheren Atmegas gibt es dieses extra Register nicht und der Clear Wert steht entweder in OCR1A oder ICR1 je nach Modus.
Es gibt auf dem ATTiny keinen Interrupt Vektor für Kanal C. Daher oben OCIE1A und TIM1_COMPA_vect.
Wenn man die Pins automatisch schaltet, entfällt die ISR wie gesagt und das OCIE1A Bit wird nicht gesetzt! Interrupt Enable braucht man nur wenn wirklich Code ausgeführt wird. Nicht um die Pins in Hardware zu schalten.
Die CS Bits kann man auch in einer Zeile setzen:
TCCR1 = (1 << CS10) | (1 << CS12) | (1 << CS13);
Siehe auch hier:
http://www.nongnu.org/avr-libc/user-manual/group__avr__interrupts.html