Hallo,
an der Hardware liegt es definitiv nicht da ich mit der Library von
peter erfolgreich senden kann.
Jetzt will ich aber das ganze nicht interruptgesteuert machen sondern
durch polling.
Also habe ich mir eigen Routinen zusammengestellt, wobei das meiste aus
dem datenblatt besteht.
1 | void USART1_Init( unsigned int baud )
|
2 | {
|
3 | /* Set baud rate */
|
4 | UBRR1H = (unsigned char)(baud>>8);
|
5 | UBRR1L = (unsigned char)baud;
|
6 |
|
7 | /* Enable receiver and transmitter */
|
8 | UCSR1B = (1<<RXEN1)|(1<<TXEN1);
|
9 |
|
10 | /* Set frame format: 8data, 1stop bit */
|
11 | UCSR1C = (3<<UCSZ10);
|
12 |
|
13 | /* Set Uart Mode to Ansynchronous Mode*/
|
14 | UCSR1C &=~ ( (UMSEL10) | (1<<UMSEL11) );
|
15 | }
|
16 | void USART1_Transmit( unsigned char data )
|
17 | {
|
18 | /* Wait for empty transmit buffer */
|
19 | while ( !( UCSR1A & (1<<UDRE1)) && !cancel_mode);
|
20 |
|
21 | /* Put data into buffer, sends the data */
|
22 | UDR1 = data;
|
23 | }
|
24 |
|
25 | unsigned char USART1_Receive( void )
|
26 | {
|
27 | /* Wait for data to be received */
|
28 | while ( !(UCSR1A & (1<<RXC1)) && !cancel_mode);
|
29 |
|
30 | /* Get and return received data from buffer */
|
31 | return UDR1;
|
32 | }
|
Problem: Senden und Empfangen funktioniert nicht, das bedeutet ich
bekomme am PC überhaupt nichts zu sehen.
Ich beutze als Terminalprogramm das Hercules.
Die Baudrate ist 9600 und auch beim PC eingestellt.
Es dürfte an SW eig nichts mehr fehlen, meiner Meinung nach, denn
Baudrate, Modus, RXEN und TXEN sind enabled und ja.
Die Peter Fleury Lib ist noch inkludiert da ich sie für die 2te UART
brauche.
Kann es vielleicht an dem liegen?
lg andy