www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMEGA16 & Timer0


Autor: Max Meier (gbl1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich werd' noch verrückt. Versuche seit zwei Wochen an einem ATMEGA16 den 
Timer0 mittels C-Programm zum Laufen zu bekommen.

Mein µC ist mit 8MHz getaktet.
Am PORTD7 soll die LED alle 1ms ein/aus gehen.

Innerhalb der while Schleife funktioniert die LED - also kein 
HW-Problem.


#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <util/delay.h>


ISR (TIMER0_OVF_vect)
{
    PORTD ^= (1<<PD7);
}



int main(void)
{
    DDRD |= (1<<PD7);


    TCCR0  =  (1<<WGM01) | (1<<CS01) | (1<<CS00);
    OCR0   =  128;    
    TIFR = 1<<TOV0;
    TIMSK = 1<<TOIE0;
    sei();

    while(1)
    {
        //PORTD ^= (1<<PD7);

        _delay_ms(25);
    }


    return 0;
}


Danke im voraus.

Günter

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

Bewertung
0 lesenswert
nicht lesenswert
Du musst den Compare Match Interrupt benutzen.

Autor: david (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Günter

alle 1ms ein/aus...
von Auge kannst du das ein/aus ja nicht sehen (1000x pro Sekunde).
Ist also eher ein Dimmer welcher die Led mit 50% ansteuert.
Und da leuchtet die LED evt. schon gar nicht mehr.

Oder hast du den Ausgang am Oszi angesehen ob da was geht?

Gruss
David

Autor: Max Meier (gbl1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@david:

Ich habe auch ein Oszi am Ausgang. Da rührt sich nichts.
Innerhalb der While Schleife schon.

@Karl:

Könntest du mir mit einem Codebeispiel helfen. Ich wurschtel da schon so 
lange rum. Irgendwo habe ich da ein Brett vorm Kopf. BTW: Ich meine, ich 
verwende doch den Compare Macht Interrupt.

LG
Günter

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Könntest du mir mit einem Codebeispiel helfen. Ich wurschtel da schon so
>lange rum. Irgendwo habe ich da ein Brett vorm Kopf. BTW: Ich meine, ich
>verwende doch den Compare Macht Interrupt.

Nein. Du benutzt den Overflow-Interrupt .

MfG Spess

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

Bewertung
0 lesenswert
nicht lesenswert
Günter W. schrieb:

> Könntest du mir mit einem Codebeispiel helfen. Ich wurschtel da schon so
> lange rum.

Ähm. Wie lange sagtest du beschäftigst du dich jetzt mit dem Mega?
Und da bist du noch kein einziges Mal auf die Idee gekommen, ins 
Datenblatt zu sehen?
Ich hab mir das Datenblatt geholt, das Kapitel zum Timer 0 
aufgeschlagen, etwas überflogen und in 5 Minuten hatte ich die 
Information die ich gebraucht habe. Nämlich, dass im CTC kein Overflow 
Interrupt sondern ein Compare Match Interrupt ausgelöst wird. Ein paar 
Seiten weitergescrollt um zur Registerübersicht für diesen Timer zu 
kommen und da ist dann schön aufgeschlüsselt, welches Bit für den 
Compare Match Interrupt anstelle des Overflow Interrupts zuständig wäre. 
Und wie die ISR heißen musws ... wenn man das Schema kennt, nach dem die 
Namen gebildet werden, ist auch das keine Hexerei.

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.