Hi
ich möchte Daten von meinem PC auf mein µC - Board mit dem ATtiny2313
schicken. Dazu habe ich mich für das Bluetooth Module HC-06 entschieden,
welches, laut Datenblatt, mit einer Baudrate von 9600 läuft.
Deshalb hier meine UART Konfiguration beim µC (8MHz):
1 | UBRRH = 0;
|
2 | UBRRL = 51;
|
3 | UCSRA |= (1 << UDRE);
|
4 | UCSRB |= (1 << RXCIE);
|
5 | UCSRB |= (1 << RXEN);
|
6 | UCSRB |= (1 << TXEN);
|
7 | UCSRC |= (1 << UCSZ1);
|
8 | UCSRC |= (1 << UCSZ0);
|
Dann hab ich das Modul so mit meinem Board verbunden: TX - Pin des HC-06
mit Pin 2 vom ATtiny2313 und RX - Pin des HC-06 mit dem Pin 3 vom
ATtiny2313. Zusätzlich noch 3.3V und GND.
Hier meine Interrupt-Routine für das Empfangen von Daten.
1 | unsigned char rec_char = 0;
|
2 | unsigned char rec_char_buffer1 = 0;
|
3 | unsigned char rec_char_buffer2 = 0;
|
4 | unsigned char i = 0;
|
5 |
|
6 | SIGNAL (USART_RX_vect)
|
7 | {
|
8 | if (i == 0)
|
9 | {
|
10 | rec_char_buffer1 = UDR; // erste 8 Bit
|
11 | i++;
|
12 | }
|
13 | if (i == 1)
|
14 | {
|
15 | rec_char_buffer2 = UDR; // zweite 8 Bit
|
16 | i = 0;
|
17 | rec_char = (rec_char_buffer2) && (4 << rec_char_buffer1); //Bit Operation => zusammenfügen
|
18 | }
|
19 |
|
20 | if (rec_char = 0x61)
|
21 | {
|
22 | Field[0]=0;
|
23 | Field[1]=255; //grün
|
24 | update_PWM();
|
25 | _delay_ms(1000);
|
26 | }
|
27 | else
|
28 | {
|
29 | Field[1]=0;
|
30 | Field[0]=255; //rot
|
31 | update_PWM();
|
32 | _delay_ms(1000);
|
33 | }
|
34 | }
|
Meine denkweise: wenn ich mich über Putty mit der COM-Schnittstelle
verbinde, sende ich ja ASCII-Zeichen, also in meinem Fall "a" => a=0x61
Also, falls ein "a" gesendet wird, soll meine RGB-Lichterkette auf Grün
Schalten, ansonsten auf Rot.
1 | Field[0]=0;
|
2 | Field[1]=255; //grün
|
3 | update_PWM();
|
4 | _delay_ms(1000);
|
Wenn ich das in der while(1) setzte, wird die Lichterkette grün,
ansonsten rot, d.h. die Umschaltung zwischen den Farben sollte klappen.
Eine Verbindung bekomme ich hin, also kann das Bluetooth-Gerät pairen in
Windows und es werden die Treiber installiert. Ich verbinde mich dann
mit der Baudrate von 9600 auf das Gerät mit Putty und sende dann ein a -
Lichterkette wird zwar grün, aber es wechselt nicht und egal was ich
sende, sie wird immer grün.
Habe ich irgendwo einen Denkfehler?
Ich würde das ganze mit einem Oszi überprüfen, habe aber momentan keine
Möglichkeit, eines aufzutreiben.
Schöne Grüße