Forum: Mikrocontroller und Digitale Elektronik Funktion in Interrupt auslösen


von Markus P. (sebastianwurst)


Lesenswert?

Hi,
ich will eine Funktion in einer Interrupt auslösen.
Die Funktion habe ich in der main deklariert:
1
// Timer Stoppen
2
void timer_stop()
3
  {
4
  TCNT0   =0;
5
  TCCR0B  =0b00000000;   // Timer stoppen
6
7
  }
8
  
9
  
10
// Triac Zünden  
11
 void TriacZuenden (uint8_t DimmWert, uint8_t Bit)
12
{
13
  if (TCNT0 >= DimmWert) 
14
    {    
15
    //Triac zünden
16
    AusgangSetBit(Bit);
17
    AusgangOut();  
18
    }  
19
}

Wenn ich dieses jetzt in der ISR aufrufe:
1
ISR (TIMER1_COMPA_vect)
2
{
3
  
4
TriacZuenden(90,0);
5
6
if (TCNT0 >= 140) 
7
  {
8
  timer_stop();
9
  }
10
}


Mache ich was falsch und es kommt eine Fehlermeldung :

undefined reference to `TriacZuenden'
undefined reference to `timer_stop'


Verwenden tu ich das Programmers Notepad und einen Atmega 644

Weis einer was ich falsch mache ?
Danke

von Ralf G. (ralg)


Lesenswert?

Markus P. schrieb:
> Die Funktion habe ich in der main deklariert:
Ich hoffe, du meinst eine Datei die 'main.c' heißt.
Und wo ist die ISR deklariert?

von Andreas (Gast)


Lesenswert?

Hi Markus,

ich hoffe du hast die Funktionen nicht innerhalb der main()-function 
deklariert!
Ansonsten versuche mal die Deklaration der Funktionen gleich zu Beginn:
void timer_stop();
void TriacZuenden (uint8_t DimmWert, uint8_t Bit);

Der Fehler sagt jedenfalls dass die Funktionen nicht gefunden werden.

Gruss
Andreas

von Markus P. (sebastianwurst)


Lesenswert?

Andreas schrieb:
> Hi Markus,
>
> ich hoffe du hast die Funktionen nicht innerhalb der main()-function
> deklariert!
> Ansonsten versuche mal die Deklaration der Funktionen gleich zu Beginn:
> void timer_stop();
> void TriacZuenden (uint8_t DimmWert, uint8_t Bit);

Verrückte Sache...... ;-) Danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.