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