8Bit Timer/Counter 0

Gast #781210
Hallo erstmal.

Ich habe ein Problem mit meinem Atmega 8L. Ich habe alle Parameter 
eingestellt für den 8 Bit Timer/Counter0, aber die angeschlossene 
Leuchtdiode will nicht angehen. Ich verwende den internen clock und noch 
nicht einen Quarz. Oder liegt es vielleicht daran? Richtig angeschlossen 
ist alles an dem Atmega 8L. Hier erstmal das Programm:

#include <stdint.h>
#include <stdlib.h>

#include <avr/eeprom.h>
#include <avr/interrupt.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/sleep.h>
#include <avr/wdt.h>

int main (void)
{
 DDRC=1; //Daten Direction Register->PCO als Ausgang Schalten
 TCCR0=00000101;  //Prescaler einstellen-> Division von 1024
 TIMSK=1;         //Interrupt für Overflow counter aktiviert
 TCNT0=0;         //counter auf 0 setzen
 PORTC=1;         //PC0 auf 1 setzen->Diode aus
 sei();           //Atkivierung des Global Interrupt

 while(1);       //unendlichschleife

   return 0;
}


ISR(TIMER0_OVF_vec)    //ISR von 8 Bit Timer/Counter0
{
PORTC=0;    //PCO-> wird zu null->LED sollte angehen
}
Gast
#include <avr/interrupt.h>
#include <avr/io.h>

Die Reihenfolge der #includes ist nicht egal - pack mal das #include 
<avr/io.h> ganz nach oben. Da sind die prozessorabhängige Defines drin, 
die in anderen headern gebraucht werden.

Oliver
Gast
sie leuchtet bei 0. übrigens ich benutze kamavr und ponyprog um die hex 
rüberzuschieben. Der Compiler zeigt ab und an eine Warnmeldung an:

TIMER0_OVF_vec appears to be misspelled signal handler
Gast
So hab das Programm mal berichtigt und die anderen includes auch mal 
weggemissen, aber geht so immer noch nicht





#include <avr/io.h>
#include <avr/interrupt.h>



int main (void)
{
 DDRC=1;        //Daten Direction Register->PCO als Ausgang Schalten
 TCCR0=0b00000101;  //Prescaler einstellen-> Division von 1024
 TIMSK=1;           //Interrupt für Overflow counter aktiviert
 TCNT0=0;           //counter auf 0 setzen
 PORTC=0;           //PC0 auf 1 setzen->Diode an
 sei();             //Atkivierung des Global Interrupt

 while(1);         //unendlichschleife

   return 0;
}


ISR(TIMER0_OVF_vect)    //ISR von 8 Bit Timer/Counter0
{
PORTC=1;    //PCO-> wird zu null->LED sollte aus gehen
}
Gast
na ja, aber Simulator ist halt nicht die Realität. ich kann es mir beim 
besten willen nicht erklären. Die led leuchtet vor sich hin, aber aus 
geht sie nicht. Hab die led an einen 100 ohm widerstand gehängt.
Gast
So hab jetzt das Programm mal geändert und so geht die led aus. Das 
heisst, der counter zählt auf jeden fall, aber ich komme nicht in die 
ISR


#include <avr/io.h>
#include <avr/interrupt.h>



int main (void)
{
 DDRC=1;        //Daten Direction Register->PCO als Ausgang Schalten
 TCCR0=0b00000101;  //Prescaler einstellen-> Division von 1024
 TIMSK=1;           //Interrupt für Overflow counter aktiviert
 TCNT0=0;           //counter auf 0 setzen
 PORTC=0;           //PC0 auf 1 setzen->Diode an
 sei();             //Atkivierung des Global Interrupt

 while(1)         //unendlichschleife
 {
  if(TCNT0==255)
  PORTC=1;

 }

   return 0;
}


ISR(TIMER0_OVF_vect)    //ISR von 8 Bit Timer/Counter0
{
PORTC=1;    //PCO-> wird zu null->LED sollte aus gehen
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.