www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega 162 ISR Globale Variable


Autor: Holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich habe ein kleines Problem mit einer globalen Variable im Zusammenhang 
mit dem Timer 0 des Atmega 162.

Wenn die globale Variable hier "//1" ausgelesen wird so "Zählt der Port 
hoch"

Wenn die globale Variable hier "//2" ausgelesen wird so passiert leider 
nichts.

Die Frage ist, warum kann ich in der main nicht auf die Variable korrekt 
zugreifen ?

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

unsigned int counter=0;        //Systemzeit
void timer_init  (void);
void warte (void);
void hard_init(void);


 ISR(TIMER0_COMP_vect)
 {
  counter++;
  //PORTC=counter;//1 Wenn hier aktiv, dann zählt der Port hoch
 }
 
 ISR(TIMER0_OVF_vect)
 {
 asm("NOP");  
 }

void main (void)
{
  warte();
  PORTB=0x00;
  timer_init();
  hard_init();    
  
  while(1)
    {
    PORTC=counter;  //2 Wenn hier aktiv, Passiert leider nichts..
    
    if(counter>=254)
    {
      counter=0;      
    }
    else
    {
      asm("NOP");      
    }
  }
}

void timer_init(void)
{
  TCNT0=0x00;
  OCR0=0x4E;  // 0x4E = 10 ms @8MHz
  TCCR0=(1<<CS00)|(1<<CS02)|(1<<WGM01); 
  TIMSK=(1<<OCIE0)|(1<<TOIE0);
  asm("SEI");
}

void hard_init(void)
{
  DDRB=0x01;
  DDRC=0xFF;
  PORTC=0x00;
}

void warte (void) // am Programmanfang 
{
  for( unsigned int lo=0;lo<2000;lo++)
  { 
    for( unsigned int lol=0;lol<1000;lol++)
    {asm("NOP");}
  }
}


mfg
Holger

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
volatile unsigned int counter=0;        //Systemzeit

Und da counter 16Bit hat sollte besser atomar darauf
zugegriffen werden.

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.