Timer1 mit Atmega8

OP #1875185
Lesenswert?

Hallo,ich möchte gern Timer1 von Atmega8 programmieren, aber mit 
unterschiedliche werte, d.h ich gebe die werte durch taster ( die werte 
werden im Display angezeigt ) , und diese werte werden automatisch 
weiter gegeben zu Timer1, den Timer1 muss mit einen Interrupt 
funktionieren, hat jemand hier solche programm geschrieben, oder hat 
jemand hier die Idee, wie wird das gemacht, weil ich allein versucht 
habe,aber leider ohne Erfolg.
Mfg David
#1875232
Lesenswert?

David Vivandis schrieb:
> ich möchte mit C schreiben, ich habe gemeint mit (ohne erfolg), dass ich
> mit alle diese versuche kein Ergebnis gegefunden habe.

Macht nichts. Zeigs trotzdem.

Dann wissen wir auf welchem Level du stehst und können die Antwort 
anpassen.

Im übrigen: du weist die Werte, die du haben willst, einfach an das 
betreffende Steuerregister zu. So wie du es beim ersten mal auch gemacht 
hast.
#1875240
Lesenswert?

Das Register musst du in Echtzeit verändern: TCCR0.

z.b. so
1
TCCR0 = (1<<CS01); // Prescaler 8
2

3
//oder so
4

5
TCCR0 = (1<<CS01 | 1 << CS00); // Prescaler 64

Wenn du z.b. die Geschwindigkeit verändern möchtest (wie ich glaube) 
musst du CS00 - CS02 im Register TCCR0 verändern um den Prescaler zu 
ändern. Allerdings ist die kleinstmögliche Änderung min. 4fach.
#1875252
Lesenswert?

Samuel K. schrieb:
> Das Register musst du in Echtzeit verändern: TCCR0.

Kann sein.

> Wenn du z.b. die Geschwindigkeit verändern möchtest (wie ich glaube)
> musst du CS00 - CS02 im Register TCCR0 verändern um den Prescaler zu
> ändern. Allerdings ist die kleinstmögliche Änderung min. 4fach.

Kommt drauf an.
Wenn man das ganze auf einen CTC runterbricht, kann man das Taktgenau 
verändern. Eventuell zwischendurch einen Prescalerwechsel, aber 
prinzipiell hat man beim Timer1 schon sehr gute Möglichkeiten die 
Interruptaufruffrequenz ziemlich exakt in einem weiten Bereich 
einzustellen.
#1875256
Lesenswert?

Karl heinz Buchegger schrieb:
> Wenn man das ganze auf einen CTC runterbricht, kann man das Taktgenau
> verändern. Eventuell zwischendurch einen Prescalerwechsel, aber
> prinzipiell hat man beim Timer1 schon sehr gute Möglichkeiten die
> Interruptaufruffrequenz ziemlich exakt in einem weiten Bereich
> einzustellen.

Klar allerdings wollte er das ja erstmal mit dem Timer1 machen. Ich weiß 
auch nicht wo so eine Änderung Sinn macht. Mit einem Zähler geht es 
einfacher (RTC hab ich ehrlich gesagt noch nie benutzt -> mit einer 
Variable + 8bit Timer kommt man auch aus, solange man nicht an der 
CPULeistung sparen muss).

spess53 schrieb:
> Wie kommst du darauf? Hellseher?

Wie kommst du nicht darauf? Schwarzseher?

Ich dachte wenn er sich mit Timer beschäftigt hat, muss er ihn ja nur 
noch ändern.
#1875261
Lesenswert?

Samuel K. schrieb:

> Klar allerdings wollte er das ja erstmal mit dem Timer1 machen. Ich weiß
> auch nicht wo so eine Änderung Sinn macht.

Na zb. Frequenzgenerator.

> RTC hab ich ehrlich gesagt noch nie benutzt

(CTC)
Probiers mal aus. Geht trivial.

> mit einer Variable + 8bit Timer kommt man auch aus, solange man nicht
> an der CPULeistung sparen muss

Geht auch. Alles nur eine Frage, wie fein die Abstufungen sein sollen.
Gast #1875262
Lesenswert?

Hi

>Wie kommst du nicht darauf? Ist doch logisch.

Nö. Bei CTC wäre es eher logisch OC-Register zu ändern. Bei einer PWM 
auch. Beim Prescaler sind die Gestaltungsmöglichkeiten eher gering.

MfG Spess

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren