Tiny85 CTC Interrupt + OVF Interrupt @ TIMER1

Gast #5183298
Lesenswert?
• ▲
▼
Hallo,

ich weiß nicht was das bei mir ist. Ich nutze den Tiny85, PLL auf 16 Mhz 
intern. Der Timer 0 wird zur Signalerfassung an einem I/O genutzt.

Der Timer1 soll Systemtakte erzeugen.
1
TCCR1 |= (1<<CS10)|(1<<CS11)|(1<<CS12);    //prescaler 64
2
  TIMSK |= (1<<TOIE1)|(1<<OCIE1A);      //TOIE ==> ~1 kHz, OCR1A = 125 kHz
3
  OCR1A = 2;
4
sei();


ISR(TIMER1_OVF_vect) erzeugt mir 1 Khz Takt. Passt also.

ISR(TIMER1_COMPA_vect) erzeugt mir auch 1 kHz Takt?! Warum? Da müsste 
125 kHz sein.
Gast
Lesenswert?
• ▲
▼
Patrick J. schrieb:
> Hi
>
> Ohne jetzt ins DaBla reingeschaut zu haben - der Timer1 wird beim Match
> nicht resettet, wodurch Er immer bis 255 hoch läuft und erst nach dem
> Überlauf wieder auf die 2 kommt, wo der nächste Interrupt ausgelöst
> wird.
> Denke, Du suchst nach CTC.
>
> Dann hast Du aber keinen OVF-Interrupt mehr :/
>
> MfG

Ja, stimmt, da habe ich einen Gedankenfehler. Stimmt, dann macht bei 
beiden 1 kHz auch sinn. Da der Tiny nur 2 Timer hat (blöd) wollte ich 
jetzt folgendes haben:

1. Timer (Timer0) ist weg für die Signaldetection (da muss das TCNT 
Register immer resettet werden, daher kann man da nichts mehr mit 
machen, ist auch unregelmäßig).

2. Timer (Timer1) soll 1ms Takt OVF generieren um die Systemzeiten zu 
erzeugen. Außerdem soll er im CTC 125 kHz erzeugen, geht das dann 
überhaupt mit beiden?


Mist. Wo war ich denn da mit meinen Gedanken. Hat jmd. ne Idee wie ich 
die Kuh vom Eis bekomme?
Lesenswert?
• ▲
▼
MOBA 2. schrieb:
> Hat jmd. ne Idee wie ich
> die Kuh vom Eis bekomme?

Du hast noch 2 weitere Timer.

Erstens kannst du den Watchdog als Timer laufen lassen. Der ist 
allerdings recht langsam. Kürzeste Zeit 16ms.

Zweitens kannst du den ADC im Free Running Mode laufen lassen. Der 
generiert dann je nach Vorteiler einen exakten Takt. Daß er dabei 
irgendwas wandelt, stört keinen großen Geist. Mit dem kommst du auch 
einigermaßen an 1KHz ran. Hab jetzt keine Lust das auszurechnen. Wohl 
nicht genau, aber das muß ja meistens gar nicht sein. Hauptsache 
regelmäßig.



batman schrieb:
> Laß den Timer doch ne ISR mit 125kHz takten und darin noch nen Zähler
> auf 125:1 für den 1kHz runterteilen.

Damit der Ausgangspin mit 125KHz wackelt, muß der Timer mit 250KHz 
takten. Das ergibt dann alle 32 Takte einen Interrupt bei 8MHz. Könnte, 
vorsichtig ausgedrückt, knapp werden.
Gast
Lesenswert?
• ▲
▼
Thomas E. schrieb:
> MOBA 2. schrieb:
>> Hat jmd. ne Idee wie ich
>> die Kuh vom Eis bekomme?
> Zweitens kannst du den ADC im Free Running Mode laufen lassen. Der
> generiert dann je nach Vorteiler einen exakten Takt. Daß er dabei
> irgendwas wandelt, stört keinen großen Geist. Mit dem kommst du auch
> einigermaßen an 1KHz ran. Hab jetzt keine Lust das auszurechnen. Wohl
> nicht genau, aber das muß ja meistens gar nicht sein. Hauptsache
> regelmäßig.
>
>
>
> batman schrieb:
>> Laß den Timer doch ne ISR mit 125kHz takten und darin noch nen Zähler
>> auf 125:1 für den 1kHz runterteilen.
>
> Damit der Ausgangspin mit 125KHz wackelt, muß der Timer mit 250KHz
> takten. Das ergibt dann alle 32 Takte einen Interrupt bei 8MHz. Könnte,
> vorsichtig ausgedrückt, knapp werden.


Nene 16 MHz habe ich uns mit reichen die 125khz ist klar das das die 
halbe frequency ist.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.