Hallo zusammen,
Ich habe Folgendes Problem. Ich besitze ein Mikrocontroller Board mit
einem Mikrocontroller von Philips LPC2136. Nun möchte ich ein
Bluetoothmodul (MITSUMI BLUETOOTH WML-C46A), dass auf dem Board bereits
verbaut ist, über die UART1 ansprechen und ein Char Zeichen vom PC über
die Bluetooth Schnittstelle an den Mikrocontroller senden. Dieser gibt
im Anschluss das Zeichen via Bluetooth an ein Terminalprogramm auf den
PC zurück und visualisiert es. Bei jeder Eingabe soll zudem noch eine
LED, die auf dem Board verbaut ist getoggelt werden.
Eine Serielle Übertragung über USB mit der UART0 Schnittstelle habe ich
bereits realisiert und klappt auch einwandfrei (siehe Code).
Hier mein fertiger Code für die USB Übertragung sowie der bisheriger
Code für die Bluetoothübertragung (Achtung: Derzeit sind zwei Main
Funktionen implementiert)
Vielleicht sieht einer den Fehler von Euch.
Gruß n3ssaja
1 | #include "lpc210x_gnuarm.h"
|
2 | #include "config.h"
|
3 | #include "uart.h"
|
4 |
|
5 | #define BAUD 38400
|
6 |
|
7 | // olimex LPC-P2106: one led on P0.7 (active low)
|
8 | #define LEDPIN 23
|
9 |
|
10 | void systemInit(void)
|
11 | {
|
12 | // --- enable and connect the PLL (Phase Locked Loop) ---
|
13 | // a. set multiplier and divider
|
14 | SCB_PLLCFG = MSEL | (PSEL<<5);
|
15 | // b. enable PLL
|
16 | SCB_PLLCON = (1<<PLLE);
|
17 | // c. feed sequence
|
18 | SCB_PLLFEED = PLL_FEED1;
|
19 | SCB_PLLFEED = PLL_FEED2;
|
20 | // d. wait for PLL lock (PLOCK bit is set if locked)
|
21 | while (!(SCB_PLLSTAT & (1<<PLOCK)));
|
22 | // e. connect (and enable) PLL
|
23 | SCB_PLLCON = (1<<PLLE) | (1<<PLLC);
|
24 | // f. feed sequence
|
25 | SCB_PLLFEED = PLL_FEED1;
|
26 | SCB_PLLFEED = PLL_FEED2;
|
27 |
|
28 | // --- setup and enable the MAM (Memory Accelerator Module) ---
|
29 | // a. start change by turning of the MAM (redundant)
|
30 | MAM_MAMCR = 0;
|
31 | // b. set MAM-Fetch cycle to 3 cclk as recommended for >40MHz
|
32 | MAM_MAMTIM = MAM_FETCH;
|
33 | // c. enable MAM
|
34 | MAM_MAMCR = MAM_MODE;
|
35 |
|
36 | // --- set VPB speed ---
|
37 | SCB_VPBDIV = VPBDIV_VAL;
|
38 |
|
39 | // --- map INT-vector ---
|
40 | #if defined(RAM_RUN)
|
41 | SCB_MEMMAP = MEMMAP_USER_RAM_MODE;
|
42 | #elif defined(ROM_RUN)
|
43 | SCB_MEMMAP = MEMMAP_USER_FLASH_MODE;
|
44 | #else
|
45 | #error RUN_MODE not defined!
|
46 | #endif
|
47 | }
|
48 |
|
49 | void gpioInit(void)
|
50 | {
|
51 | GPIO_IOSET = (1<<LEDPIN); // set Bit = LED off (active low)
|
52 | GPIO_IODIR |= (1<<LEDPIN); // define LED-Pin as output
|
53 | }
|
54 |
|
55 | void ledToggle(void)
|
56 | {
|
57 | static unsigned char state=0;
|
58 |
|
59 | state = !state;
|
60 | if (state) GPIO_IOCLR = (1<<LEDPIN); // set Bit = LED on
|
61 | else GPIO_IOSET = (1<<LEDPIN); // set Bit = LED off (active low)
|
62 | }
|
63 |
|
64 | // Main USB
|
65 |
|
66 | /*
|
67 | int main(void)
|
68 | {
|
69 | int ch;
|
70 |
|
71 | systemInit();
|
72 | gpioInit();
|
73 |
|
74 | uart0Init(UART_BAUD(BAUD), UART_8N1, UART_FIFO_8); // setup the UART
|
75 |
|
76 | uart0Puts("\r\nHello from USB!\r\n");
|
77 |
|
78 |
|
79 | ledToggle();
|
80 |
|
81 | while(1) {
|
82 | if ((ch = uart0Getch()) >= 0) {
|
83 | uart0Puts("You pressed : ");
|
84 | uart0Putch(ch);
|
85 | uart0Puts("\r\n");
|
86 | ledToggle();
|
87 | }
|
88 | }
|
89 |
|
90 | return 0;
|
91 | }
|
92 | */
|
93 |
|
94 | // Main Bluetooth
|
95 |
|
96 | int main(void)
|
97 | {
|
98 | int ch;
|
99 |
|
100 | systemInit();
|
101 | gpioInit();
|
102 |
|
103 | uart1Init(UART_BAUD(BAUD), UART_8N1, UART_FIFO_8); // setup the UART
|
104 |
|
105 | uart1Puts("\r\nHello from Bluetooth!\r\n");
|
106 |
|
107 | ledToggle();
|
108 |
|
109 | while(1) {
|
110 | if ((ch = uart0Getch()) >= 0) {
|
111 | uart1Puts("You pressed : ");
|
112 | uart1Putch(ch);
|
113 | uart1Puts("\r\n");
|
114 | ledToggle();
|
115 | }
|
116 | }
|
117 |
|
118 | return 0;
|
119 | }
|