Hallo!
Der Mega16 befindet sich auf einer Platine, an der Pfostenleiste Rechts
liegen RXD und TXD, GND wird über eine extra Verbindung hergestellt,
getaktet mit 16 Mhz.
Der µC kann wunderbar Daten senden aber er möchte keine Empfangen, ich
benutze einen FT232.
Auf der Platine befindet sich noch ein Mega32, dieser empfängt Daten vom
FT232 deshalb schließe ich einen fehler des FT232 aus.
Der Mega32 auf dem Board kann auch nur Daten von dem Mega16 Empfangen
aber daten die an ihn gesendet werden kommen nicht an.
Leitungen sind durchgeklinkelt, auf Kurzschluss geprüft und nachgelötet.
Um PBMAC zu vermeiden habe ich den nächstbesten Code aus dem Netz per
C&P getestet, funktioniert leider auch nicht.
1 | #include <avr/io.h>
|
2 |
|
3 | #define USART_BAUDRATE 9600
|
4 | #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1)
|
5 |
|
6 | int main (void)
|
7 | {
|
8 | char ReceivedByte;
|
9 |
|
10 | UCSRB |= (1 << RXEN) | (1 << TXEN); // Turn on the transmission and reception circuitry
|
11 | UCSRC |= (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1); // Use 8-bit character sizes
|
12 |
|
13 | UBRRL = BAUD_PRESCALE; // Load lower 8-bits of the baud rate value into the low byte of the UBRR register
|
14 | UBRRH = (BAUD_PRESCALE >> 8); // Load upper 8-bits of the baud rate value into the high byte of the UBRR register
|
15 | while ((UCSRA & (1 << UDRE)) == 0) {};
|
16 | UDR = 0xAA;
|
17 |
|
18 | for (;;) // Loop forever
|
19 | {
|
20 | while ((UCSRA & (1 << RXC)) == 0) {}; // Do nothing until data have been recieved and is ready to be read from UDR
|
21 | ReceivedByte = UDR; // Fetch the recieved byte value into the variable "ByteReceived"
|
22 |
|
23 | while ((UCSRA & (1 << UDRE)) == 0) {}; // Do nothing until UDR is ready for more data to be written to it
|
24 | UDR = ReceivedByte; // Echo back the received byte back to the computer
|
25 | }
|
26 | }
|
Jemand eine Idee?
Mfg,
Peter