ATTiny 45 Timer Overflow Interrupt

Moin Leute,
ich versuche gerade einem meiner ATTiny45 beizubringen nach ca. jeder Sekunde einen Interrupt auszulösen.

Dazu möchte ich den Timer1 (8 Bit) des Tinys verweden, da der 0er scheinbar für millis() zuständig ist, was ich allerdings noch brauche. Bei einer Systemfrequenz von 1MHz muss ich dazu dann den Prescaler mit ner Teilung durch 4096 einstellen
((10^6/4096)/256 = 0.95). Laut Datenblatt (http://www.atmel.com/images/atmel-2586-avr-8-bit-microcontroller-attiny25-attiny45-attiny85_datasheet.pdf S.89 u. 90 ) geschieht das durch setzen der CS10, CS12, CS13 Bits im TCCR1 Register.
Leider kennt die Arduino IDE dieses Register scheinbar nicht, wie kann ich das trotzdem einstellen?.

Die 2te Frage, die ich habe, wie knüpfe ich die Overflows nun an ein Interrupt?

Durch setzten des TOIE1 Bits im TIMSK Register allein ist das ja noch nicht getan o.O?

Was ich bisher habe ist nicht wirklich viel, weil ich ausdem, was ich bisher alles gelesen habe nicht wirklich schlau werde.

void setup()
{
  TCCR1  = (1 << CS10);
  TCCR1 |= (1 << CS12);
  TCCR1 |= (1 << CS13);
  
  TIMSK |= (1 << TOIE1);
}

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

Perfekt, vielen Dank für die Hilfe :D.