www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer0 und fusebits


Autor: Joerg Seemann (joerg_seemann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo

ich hab probleme mit dem timer0.
im avrstudio-simulator läufts perfekt.
auf den ATmega168 gespielt und nix funktioniert.
möglicherweise ne fusebit sache?
Der Atmel soll mit dem 7.3728MHz Crystal laufen und macht es nich.

HILFE, schon zwei Tage versaut...

Autor: ecslowhand (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was genau läuft denn nicht ???

Autor: Joerg Seemann (joerg_seemann)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
naja, ich teste mich grad mit nem "einfachen LED an und nach 1s 
aus"-Programm
siehe anhang durch

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also mit dem Programm geht ganz sicher nichts an und wieder aus. Was 
soll das?

Autor: Joerg Seemann (joerg_seemann)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
sorry falsche datei...

Autor: ecslowhand (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Immerhin,  PIND6 und PIND7 sind als Ausgang initialisiert und gehen auf 
"High"......

Wo ist denn die Timerinitialisierung ????

mhh.......

Autor: Joerg Seemann (joerg_seemann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
        ldi     temp, 0x00
        out     TCCR0A, temp

        ldi     temp, 0x01
        out     TCCR0B, temp

    ldi     temp, 0x00
    out     TCNT0, temp

        ldi     temp, 1 << TOIE0      ; TOIE0: Interrupt bei Timer 
Overflow
        sts     TIMSK0, temp
    sei

...dachte ich

Autor: Joerg Seemann (joerg_seemann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... TCCR0B hab ich auf 0x05 für Teiler 1024 gestellt, zusammen mit dem 
dekrement von count sollte ca. 1s rauskommmen, sollte...

Autor: Nop M. (gtf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
 Interruptfreigabe Befehl "sei" gehört nicht in den Interrupt.
Das Interrupt Flag wird mit reti gesetzt.

Autor: Nop M. (gtf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe deinen Code bizzle getunt. Versuchs mal damit. Mir gefällt das 
springen ausm Interrupt(BRNE) nicht.

loop:   rjmp    loop

timer0_overflow:
    ;sei
    dec count
    cpse count,0x00 ;->
     reti
    ;brne loop
    call LED_aus
    reti



Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das Interrupt Flag wird mit reti gesetzt.

Du meinst die Interruptroutine sollte in der Art aussehen:
timer0_overflow: 
        dec count
        cpi count,0x00
        brne lreturn
        call LED_aus
lreturn:
        reti

Wo genau hängt die LED wie dran? Sie hätte derzeit nur an PD6 und PD7 
eine Chance zu funktionieren.

Autor: Nop M. (gtf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Stefan
Deine ist eindeutig die bessere Lösung.
Hab's vergesse dass "cpse" nur unter Registern geht.

Autor: joerg_seemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, danke, aber

geändert, geladen, getestet, LED an, aber nich aus.

doch die Fuses, oder mein unvermögen?

ja, PD6 und PD7 sind LED

Autor: joerg_seemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke männers, das klappt.

einen wunderschönen tag noch und danke...

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
    ldi     temp, 0x00
    out     TCNT0, temp

Der Timer0 ist mit diesem Code angehalten.
http://www.mikrocontroller.net/articles/AVR-Tutori...
        ;ldi     temp, 0x00      ; CS00 setzen: Teiler 1
        ;out     TCCR0A, temp

        ;ldi     temp, 0x01      ; CS00 setzen: Teiler 1
        ;out     TCCR0B, temp
     
        ldi     temp, 0x01       ; CS02=0 CS01=0 CS00=1 => Teiler 1
        out     TCNT0, temp

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Quatsch. TCCR0 und TCNT0 verwechselt. Dummer Stefan ;-)

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Nochwas ganz wichtiges: Flagregister bei Eintritt in die ISR sichern und 
am Ende zurückschreiben, sonst sind böse Überraschungen sicher.

Viel Erfolg, Uwe

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.