Forum: Mikrocontroller und Digitale Elektronik ATmega1284P - bekommt kein ISR für USART0_TX_vect


von Adam P. (adamap)


Lesenswert?

hallo zusammen,
ich suche nun schon den ganzen tag...
ich nutze für die USART / UART datenübertragung die lib von Peter Fleury
(http://jump.to/fleury)
http://homepage.hispeed.ch/peterfleury/uartlibrary.zip

diese lib hat auf meinem mega32 so gut funktioniert, dass ich diese 
versucht habe um define's zu erweitern um sie auch auf einem mega1284p 
nutzen zu können.

laut google und auch dem datenblatt sind die register zum 644p 
kompatibel.
meine erweiterung in der usart.c datei:
1
...
2
#elif defined(__AVR_ATmega1284P__)
3
 /* ATmega with two USART */
4
 #define ATMEGA_USART0
5
 #define ATMEGA_USART1
6
7
 #define UART0_STATUS   UCSR0A
8
 #define UART0_CONTROL  UCSR0B
9
 #define UART0_DATA     UDR0
10
 #define UART0_UDRIE    UDRIE0
11
12
 #define UART1_STATUS   UCSR1A
13
 #define UART1_CONTROL  UCSR1B
14
 #define UART1_DATA     UDR1
15
 #define UART1_UDRIE    UDRIE1
16
...

laut dem avr-studio simulator springt er z.b. in der uart_init() fkt. 
auch in die richtigen ifdef abfragen um die register zu initialisieren.
sende ich daten vom terminal an den µc, dann empfängt er auch etwas.
problem besteht beim "versuch" etwas zu senden.
es passiert einfach nichts.
ich habe es schon soweit eingegrenzt, dass ich sicher sagen kann, er 
kehrt aus der fkt. uart_putc() nicht mehr wieder (danach würde ich eine 
led am port schalten)...passiert aber nicht. genau das gleiche war, als 
ich versucht habe im TX-ISR eine led anzusteuern, dadurch ist mir erst 
aufgefallen das der interrupt gar nicht eintritt.

hoffe ihr habt eine idee.

gruß
adam

von Matthias L. (Gast)


Lesenswert?

>USART0_TX_vect

Ich kenne die Lib nicht, aber ich nehm beim Senden nie den 
USART0_TX_vect sondern immer den USART0_UDRE_vect Interrupt. 
Ersterer kommt erst, nachdem ein bzw. das erste Zeichen gesendet 
wurde. Dagegen kommt der UDRE-Int immer wenn nix gesendet wird.

von Adam P. (adamap)


Lesenswert?

DANKE matthias :-D
genau das war es...aber dann hab ich mich beim umändern vertan, den in 
der lib waren noch die alten bezeichnungen:
1
SIGNAL(UART0_TRANSMIT_INTERRUPT)

somit dachte ich die neue bezeichnung wäre dann die o.g.

den auf dem mega32 geht das wohl noch mit SIGNAL aber beim 1284p gabs 
direkt fehlermeldungen.

trotzdem vielen dank!

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.