Forum: Compiler & IDEs Mega16 führt Reset bei Interrupt durch


von Tux (Gast)


Lesenswert?

Ich hab ein kleines Problem mit meinem Mega16 bei folgendem Quellcode:

void ADC_Init(void)
{
  ADCSRA=(7<<ADPS0) | (1<<ADIE);
  ADCSRA|=(1<<ADEN);
}
void ADC_StartConversion(char pin)
{
  ADMUX=pin;
  ADCSRA|=(1<<ADSC);
}
SIGNAL (SIG_ADC)
{
}
int main(void)
{
  USART_Init(BAUD);
  sei(); //Enable Interrupts
  char text[]="test";
  USART_Transmit_String(text);
  ADC_Init();
  ADC_StartConversion(0);
  for(;;) { }
}

Sobald ADC_StartConversion() aufgerufen wird führt der µC einen Reset
durch und ich konnte keinen Fehler finden.
Wenn ich die AD Wandlung ohne Interrupt durchführe und mit einer
Schleife warte bis das Ergebnis bereitsteht funktioniert alles ohne
Probleme.

Achja, der Reset wird vor dem Ausführen des Codes in der
Interruptfunktion durchgeführt.

Schonmal danke für eure Hilfe!

Gruss Tux

von Tux (Gast)


Lesenswert?

Okay, hat sich erledigt. Ich hatte die sig-avr.h nicht eingebunden...

von Jörg Wunsch (Gast)


Lesenswert?

Die heißt jetzt übrigens <avr/signal.h>.

von Aart (Gast)


Lesenswert?

Hallo
Mein ATMEGA16 macht auch reset beim Interrupt , nachdem ich ape´s
Programm laufen habe ( 6100 Display) und ein Encoder am INT1 geklemmt
habe..

Gibt es dann keine Fehlermeldung beim compilieren wenn <avr/signal.h>.
fehlt??

Aart

von Jörg Wunsch (Gast)


Lesenswert?

Ja, es gibt derzeit keine Möglichkeit, daß der Compiler oder Linker
das feststellen.

,,Wir arbeiten dran.''[tm] :-)

Siehe auch

https://savannah.nongnu.org/bugs/?func=detailitem&item_id=8643

von Aart (Gast)


Lesenswert?

Ja jetzt läufts auch bei mir ..
Hatte meine letzte Frage von der Firma aus geschrieben zuhause
nachgesehen und auch signal.h vergessen.  Lesen bildet.  hihi  danke..
Aart

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.