www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer1 mit Atmega8


Autor: David Vivandis (davidos)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit was willst du das Programm denn schreiben? C, Asm, Bascom?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>weil ich allein versucht habe,aber leider ohne Erfolg.

Dann zeige mal, was bis jetzt dabei herausgekommen ist.

MfG Spess

Autor: David Vivandis (davidos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich möchte mit C schreiben, ich habe gemeint mit (ohne erfolg), dass ich 
mit alle diese versuche kein Ergebnis gegefunden habe.
Mfg David

Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dafür gibt es ja das: 
http://www.mikrocontroller.net/articles/AVR-GCC-Tu....

Du musst nachdem eine Taste gedrückt worden ist, das Timer register 
verändern. Schau dir mal das Beispiel in Tut an. Das musst du nicht nur 
am Anfang sondern auch dann wenn du den Timer verändern willst tun.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Register musst du in Echtzeit verändern: TCCR0.

z.b. so

TCCR0 = (1<<CS01); // Prescaler 8

//oder so

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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

Wie kommst du darauf? Hellseher?

MfG Spess

Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.