Hallo,
ich habe ein Arduino Every Board, bei dem ich vom Atmega4809 über dem
SAM, welcher als USB-Schnitstellenanbindung funktioniert, Daten an ein
Terminal senden möchte. Das Board meldet sich als COM6 an, jedoch kommt
im Terminal nur Müll an. Ich habe verschiedene Baud-Raten versucht und
auch die Pegel zum SAM mal invertiert (wegen des Levelshifters). Leider
ohne Erfolg. Auf welcher Baudrate muss der SAM denn angesprochen werden?
Ich programmiere das Ding ohne die Arduino-Lib -und IDE.
Auf dem Oszi sehe ich, dass das was am Pin des SAMs ankommt, mit dem was
ich sende übereinstimmt. Aber der SAM weigert sich, die Daten an das
Terminal bzw. die COM-Schnittstelle zu übergeben. Ich spreche auf 9600
Baud mit ihm.
Ich habe folgenden Code zum Initialisieren:
1 | #define USART0_BAUD_RATE(BAUD_RATE) ((float)(F_CPU * 64 / (16 * (float)BAUD_RATE)) + 0.5)
|
2 |
|
3 | //RS-232
|
4 | /*
|
5 | PB04 = TXD0
|
6 | PB05 = RXD0
|
7 | */
|
8 | //Remap Pins
|
9 | // PORTB.PIN4CTRL |= PORT_INVEN_bm;
|
10 | PORTB.DIRSET = PIN4_bm;
|
11 | PORTMUX.USARTROUTEA |= PORTMUX_USART3_ALT1_gc;
|
12 | USART3.BAUD = (uint16_t) USART0_BAUD_RATE( 9600 ); // Baudrate 9600k
|
13 | USART3.CTRLC |= USART_CHSIZE_8BIT_gc; // 8Bit Size
|
14 | USART3.CTRLB |= USART_RXEN_bm | USART_TXEN_bm; // Enable Reciever/Transmitter
|
Ich habe den globalen Prescaler deaktiviert vom 4809, er läuft also auf
20MHz.