IF THEN im Timer Interrupt Mage128

Gast #410603
Lesenswert?
• ▲
▼
timer.c

#include <avr/io.h>
#include <avr/interrupt.h>
#include "timer.h"
#include "opti.h"

//Hier wird als Taktsignal ein Uhrenquarz genutz.

void init_timer1()
{
  int temp0,temp1;
   for(temp0=0;temp0<0x0040;temp0++)
    {
        for(temp1=0;temp1<0xFFFF;temp1++);
    }
    DDRB=0xFF;
    TIMSK &=~((1<<TOIE0)|(1<<OCIE0));
    ASSR |= (1<<AS0);

    TCNT0 = 0x00;
    TCCR0 = 0x05;
    while(ASSR&0x07);
    TIMSK |= (1<<TOIE0);
}


SIGNAL( TIMER0_OVF_vect )
 {

if(fix==1)
{
PORTLEDC ^=(1<<LED1); //soll blinken wenn fix=1 macht er nicht

}
PORTLEDC ^=(1<<LED2);//Blinkt alle 1 sec als test ob der INteruppt
auslöst macht er

}

timer.h
void init_timer1();
static volatile short fix=0;

fix ist in der headerdatei des Timers deklariert



wenn ich in einer funktion den Wert fix=1 setze müsste doch beim
nächsten auslösen des Interrupts die LED1 blinken???
#410604
Lesenswert?
• ▲
▼
> static volatile short fix=0;
> fix ist in der headerdatei des Timers deklariert

Dort sollte es aber nicht sein
oder aber das 'static' sollte da nicht davor stehen.

Entweder du willst die Variable tatsächlich 'static' haben,
dann gehört diese Variablendefinition in das zugehörige *.c
File. Den das static sorgt ja dafür, dass der Scope dieser
Variablen auf genau diese eine Datei eingeschränkt wird.
Im Extremfall, und ich vermute mal das ist genau das was bei
dir passiert, hat so jede *.c Datei, die timer.h inkludiert
ihre eigene, ganz persönliche Variable namens 'fix'.

Oder aber du willst die Variable tatsächlich ins Headerfile
haben, weil es eine globale Variable sein soll, dann macht man
das anders:

Im Header-File

timer.h
*******
  extern volatile short int fix;

und in einer, und nur einer C-Datei:

timer.c
*******
#include "timer.h"
volatile short int fix = 0;

...

Antwort schreiben

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.

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.