JellbieO
05.03.2009, 15:18
Hallo Leute,
wie der eine oder andere ja vll noch weiß ist mein Team nach wie vor am Projekt "autonomer Roboter" dabei und neigt sich langsam dem Ende.
Nächsten Donnerstag, also dem 19.03.2009, ist Abgabe Termin, somit bleibt nur noch wenig Zeit :-k
Wir stehen allerdings erneut vor einem Problem - dem UART
Wenn wir versuchen ein einziges Zeichen zu senden und abzufangen, kommt zwar etwas an, allerdings meist nicht das gewünschte Zeichen wie wir eigentlich wollten.
Eigentlich von uns gewollt ist eine Standard-Übertragung
8 Datenbits, 1 Stopbit, Parity None, Asynchronous Modus, bei 9600 BAUD
Unser leider gescheitertes Vorgehen:
- ATmega644P-20PU
- Externer 16Mhz Quarz
- ISP-Schnittstelle nach RN Standard
- verwendeter UART#1
- MAX232 mit Kondensatoren
- NULL-Modem Kabel
- Stecker (RXD & TXD)
Initialisierung des UART1
unsigned int baud=9600;
UBRR1H = (F_CPU / 16* (unsigned char)(baud>>8)-1)>>8;
UBRR1L = (F_CPU / 16* (unsigned char)(baud>>8)-1);
UBRR1 = 103;
UBRR1 = (F_CPU / (BAUD * 8L) - 1);
UCSR1A = (0<<U2X1);
UCSR1B = (1<<TXEN1);
UCSR1C = (0<<UMSEL10);
UCSR1C = (0<<UPM11) | (0<<UPM10);
UCSR1C = (0<<USBS1);
UCSR1C = (0<<UCSZ12) | (1<<UCSZ11) | (1<<UCSZ10);
UCSR1C = (0<<UCPOL1);
Senden eines Zeichens
void USART_Transmit( unsigned char data )
{
while ( !( UCSR1A & (1<<UDRE1)) )
;
UDR1 = data;
}
USART_Transmit(65);
Sämtliche Programmeinstellungen wurden kontrolliert, ebenfalls was die Baudrate von 9600 betrifft etc. Im Datenblatt des ATmega644P wurden wir unter anderem fündig was UBRR1 = 103; betrifft
Eigentlich sollte das ganze nun ein großes A übertragen.
Seit 2 Wochen probieren wir nun schon herum und kommen leider nicht weiter.
Wir würden uns wirklich über jeden Tipp freuen.
Hoffe natürlich bei möglichen Fragen schnell Antworten geben zu können.
wie der eine oder andere ja vll noch weiß ist mein Team nach wie vor am Projekt "autonomer Roboter" dabei und neigt sich langsam dem Ende.
Nächsten Donnerstag, also dem 19.03.2009, ist Abgabe Termin, somit bleibt nur noch wenig Zeit :-k
Wir stehen allerdings erneut vor einem Problem - dem UART
Wenn wir versuchen ein einziges Zeichen zu senden und abzufangen, kommt zwar etwas an, allerdings meist nicht das gewünschte Zeichen wie wir eigentlich wollten.
Eigentlich von uns gewollt ist eine Standard-Übertragung
8 Datenbits, 1 Stopbit, Parity None, Asynchronous Modus, bei 9600 BAUD
Unser leider gescheitertes Vorgehen:
- ATmega644P-20PU
- Externer 16Mhz Quarz
- ISP-Schnittstelle nach RN Standard
- verwendeter UART#1
- MAX232 mit Kondensatoren
- NULL-Modem Kabel
- Stecker (RXD & TXD)
Initialisierung des UART1
unsigned int baud=9600;
UBRR1H = (F_CPU / 16* (unsigned char)(baud>>8)-1)>>8;
UBRR1L = (F_CPU / 16* (unsigned char)(baud>>8)-1);
UBRR1 = 103;
UBRR1 = (F_CPU / (BAUD * 8L) - 1);
UCSR1A = (0<<U2X1);
UCSR1B = (1<<TXEN1);
UCSR1C = (0<<UMSEL10);
UCSR1C = (0<<UPM11) | (0<<UPM10);
UCSR1C = (0<<USBS1);
UCSR1C = (0<<UCSZ12) | (1<<UCSZ11) | (1<<UCSZ10);
UCSR1C = (0<<UCPOL1);
Senden eines Zeichens
void USART_Transmit( unsigned char data )
{
while ( !( UCSR1A & (1<<UDRE1)) )
;
UDR1 = data;
}
USART_Transmit(65);
Sämtliche Programmeinstellungen wurden kontrolliert, ebenfalls was die Baudrate von 9600 betrifft etc. Im Datenblatt des ATmega644P wurden wir unter anderem fündig was UBRR1 = 103; betrifft
Eigentlich sollte das ganze nun ein großes A übertragen.
Seit 2 Wochen probieren wir nun schon herum und kommen leider nicht weiter.
Wir würden uns wirklich über jeden Tipp freuen.
Hoffe natürlich bei möglichen Fragen schnell Antworten geben zu können.