www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer0 ATmega 16 in C


Autor: Lars Elsner (larse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits,

ich habe folgendes Problem. Ich versuche grade einen simplen Timer zu 
programmieren, der nach einer bestimmmten Zeit eine LED aus und eine 
andere anschalten soll. Folgenden Code habe ich dazu geschrieben, wird 
auch ordentlich compiliert, allerdings sagt er zu meiner for-schleife, 
dass diese keine Funtion hat. Da sthe ich jetz auf dem Schlauch. Ich 
glaube, dass ich noc was im Code vergessen habe..nur was?
#include <avr/io.h>
#include <avr/interrupt.h>



int main(void)                  //Hauptprogramm
{
  int i;  
  sei();                    //globale Interrupts aktivieren
  DDRD |=0b01100000;              //PD5 & PD6 Ausgang, Rest Eingang
  PORTD |=0b00100000;              //PD5 high, PD6 low
    TCCR0 |= (1<<CS00)|(1<<CS02);        //TIMER0 auf 1/1024 Quarz-Takt
  TIFR |=0b00000010;              //Overflow Flag löschen
  TIMSK |= _BV(TOIE0);
  
  for(i;i<=150;i++)
  {
  
    while((TIFR&0b00000010)==0)        //Overflow Flag abwarten
    {
      PORTD |=(1<<PD5);          //PD5 immer noch high
    }
    TIFR |=0b00000010;              //Overflow Flag löschen
    PORTD &=~(1<<PD5);              //PD5 low
    PORTD |= (1<<PD6);              //PD6 high
  }
  return 0;
  
}



wer mag mir weiterhelfen oder sieht den/die Fehler?

Gruß Lars

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> int i;
> ...
> for(i;i<=150;i++)

Du initialisierst i nirgendwo.
Wie wäre es mit:
for(i=0;i<=150;i++)

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Funktionieren wird dein Programm aber trotzdem nicht, denn du aktivierst 
den Overflow-Interrupt, hast aber gar keine Interruptroutine.

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.