Forum: Mikrocontroller und Digitale Elektronik Komisches Verhalten und Frage zu Interrupts


von Christian F. (cmf) Benutzerseite


Lesenswert?

Hallo,

ich programmiere derzeit einen mega8 mit avrdude. Dabei hatte/habe ich 
folgende Probleme:
(1)
Einmal kam es zum folgenden Phänomen:

1. Überspielen des Programms auf den AVR
2. AVR startete das Programm immer wieder nach ca. 0,5 Sekunden von 
vorne, auch wenn der PC nicht verbunden war. Des Weiteren schaltete der 
AVR ein an PD3 (INT1) angeschlossenes Relais immer wieder ein und aus.
3. Nochmaliges Überspielen des gleichen Programms
4. selber Fehler
5. Kappen der Versorgungsspannung des AVR
6. Wieder herstellen der Versorgungsspannung
7. Programm läuft ohne Probleme

--> Zum Programm: Das habe ich nicht mehr im Original, aber ich bin 
SICHER, dass es da keine Fehler gab. Sonst hätte das Programm ja auch 
nach Wiederherstellung der Versorgungsspannung nicht funktioniert.

(2)

Weder PD2 (INT0) noch PD3 (INT1) kann ich als Eingang / Ausgang 
ansteuern. Ich will die Pins einfach ganz normal, ohne Interruptfunktion 
ansprechen. Muss man da irgendein Register setzen, damit sie als normale 
Pins funktionieren?

(3)

Ich verwende die UART Bibliothek von Peter Fleury. In dieser steht:
1
#define UART0_TRANSMIT_INTERRUPT  SIG_USART0_DATA
2
#define UART0_RECEIVE_INTERRUPT   SIG_USART0_RECV
3
SIGNAL(UART0_TRANSMIT_INTERRUPT)
4
{...}
5
SIGNAL(UART0_RECEIVE_ITERRUPT)
6
{...}

Ich wollte das mal zu ISR ändern, doch was steht dann in den Klammern? 
Dazu gibt es ja die folgende Anleitung:
>SIGNAL durch ISR ersetzen
>Name des Interrupt-Vektors anpassen (SIG_* durch entsprechendes *_vect)
>Im Datenblatt wird der Vektor mit TIMER2 COMP bezeichnet. Die Bezeichnung in der 
avr-libc entspricht dem Namen im Datenblatt, Leerzeichen werden durch Unterstriche 
(_) ersetzt und ein _vect angehängt

Im Datenblatt steht:

USART, RXC | USART, Rx Complete
USART, TXC | USART, Tx Complete

Also müsste das dann ISR(USART,_RXC_vect) heißen?

Danke, cmf

von Christian F. (cmf) Benutzerseite


Lesenswert?

(2) hat sich erledigt. Falsche Beschaltung war Schuld.

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.