www.mikrocontroller.net

Forum: Compiler & IDEs IF THEN im Timer Interrupt Mage128


Autor: Marcus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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???

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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;

...

Autor: Marcus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Alles Klar hat funktioniert besten Dank .

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.