Sooo täglich grüßt das Murmeltier und nach erfolgreichem Senden von
Daten an den PC wollte ich es nun mit dem Empfangen versuchen
1 | uint8_t uart_getc(void)
|
2 | {
|
3 | while (!(UCSR0A & (1<<RXC0))); // warten bis Zeichen verfuegbar
|
4 |
|
5 | return UDR0; // Zeichen aus UDR an Aufrufer zurueckgeben
|
6 | }
|
7 |
|
8 |
|
9 | int main(void)
|
10 | {
|
11 | UBRR0H = UBRR_VAL >> 8;
|
12 | UBRR0L = UBRR_VAL & 0xFF;
|
13 |
|
14 | UCSR0C=(0<<UMSEL0)|(1<<UCSZ00)|(1<<UCSZ01);
|
15 | UCSR0B= (1<<TXEN0)|(1<<RXEN0);
|
16 |
|
17 |
|
18 | while(1)
|
19 | {
|
20 |
|
21 | if ( (UCSR0A & (1<<RXC0)) )
|
22 | {
|
23 | uint8_t c;
|
24 | c = uart_getc();
|
25 | DDRC = 0xFF;
|
26 | PORTC = c;
|
27 | }
|
28 | else
|
29 | {
|
30 |
|
31 | }
|
32 |
|
33 | }
|
34 | }
|
Die Kommunikation scheint auch zu funktionieren, allerdings reagiert der
Controller auf jede mögliche Eingabe. So springen z.B. die LED's schon
beim Drücken der Leertaste hin und her.
Eigentlich wollte ich durch Eingaben wie "0b101100111" ein Muster mit
den LED's (alle am Port C)erzeugen, aber auch das kommt nur Falsches an.
Die Einstellungen im HyperTerminal: kein Handshaking, 8-bit, keine
Parität, ein StopBit. Leider finde ich auch im Internet kein
vergleichbares Problem...
Vielen Dank schonmal!