mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Timer1 will nicht


Autor: Ganymed (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute
Der Winterblues hat mir wohl das Hirn zugekleistert.

Ich nehme gerade eine Schaltung mit einem ATmega88
in Betrieb. Der Prozessor taktet mit 16MHz.
Mein erster Versuch: "Taste schalteteinen blaue LED"
hat noch prima geklappt.
Jetzt soll, mit Hilfe von Timer 1, die gleiche
LED mit etwa 0,4768Hz blinken. Dazu habe ich das folgende
kleine "Programm" geschrieben.
#include <avr/io.h>
#include <avr/interrupt.h>


//Makros für die Bitverarbeitung
#define SETBIT(adr, bit) (adr |=  (1<<bit))
#define CLEARBIT(adr, bit) (adr &= ~(1<<bit))
#define TOOGELBIT(adr, bit) (adr ^=  (1<<bit))
#define CHECKBIT(adr, bit) (adr  &  (1<<bit))

//Anschlussklemmen der blauen 3mm LED auf dem Board
#define led_blau PORTB3 //blaue LED
#define port_led PORTB


int main(void)
{
 SETBIT(DDRB,DDB3);   //blauer LED Pin zum Ausgangen machen
 
 TCCR1B  = (1<<CS12); //Vorteiler 256
 TIMSK1 = (1<<TOIE1); //16-Bit Timer Überlauf nach 65536
 sei();                //16E6Hz / (65536*256) = 0,95Hz

 while(1)

 return 0;
}

ISR(TIMER1_OVF_vect)
{
 TOOGELBIT(port_led,led_blau);
}

Aber die LED geht jetzt gar nicht an ;-(

Wo ist das Problem??

Autor: ahnungsloser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hinter while(1) muss ein simikolon,

sonst wird in der endlosschleife 0 returned

Autor: Justus Skorps (jussa)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganymed schrieb:
> Wo ist das Problem??

dein Programm ist durchgelaufen bevor der Interrupt zuschlagen kann...

Autor: ahnungsloser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ahnungsloser schrieb:
> endlosschleife 0 returned

also die schleife ist momentan keine endlosschleife, weil gleich die 
null zurückgegeben wird

Autor: Ganymed (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke
Hab gerade mal eine kleine
Pause gemacht. Jetzt sehe ich
wieder klarer ;-)

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.