System głosowania GSM, komunikacja
ARM7 / Kody źródłowe / System głosowania GSMOpublikowany 04192008, 11:21
Realizacja komunikacji między mikrokontrolerem i telefonem z użyciem UART.

Pierwszy etap projektu opisanego w poście System głosowania GSM. Do komunikacji z telefonem zdecydowałem się użyć UART1 (UART0 służy do ISP). Ponieważ oba łączone urządzenia są typu DCE (oba gniazda ,,żeńskie''), należy użyć kabel tzw. null modem. Można go wykonać stosując następujący przeplot:
| nazwa | pin | pin | nazwa |
| FG | - | - | FG |
| TxD | 2 | 3 | RxD |
| RxD | 3 | 2 | TxD |
| RTS | 7 | 8 | CTS |
| CTS | 8 | 7 | RTS |
| SG | 5 | 5 | SG |
| DSR | 6 | 4 | DTR |
| CD | 1 | 4 | DTR |
| DTR | 4 | 1 | CD |
| DTR | 4 | 6 | DSR |
Inicjalizacja UART1 dla PCLK=15MHz:
PINSEL0 |= 1 < < 16 | 1 << 18; // P0.8 jako TXD, P0.9 jako RXD PINSEL0 |= 1 << 20 | 1 << 22; // P0.10 jako RTS, P0.11 jako CTS U1LCR = 1 << 7 | 3; // 8N1 U1DLM = 0; U1DLL = 15000000/(16*19200); U1LCR &= ~(1 << 7); U1MCR |= 1 << 6 | 1 << 7; // auto RTS and CTS U1TER |= 1 << 7; // kontrola przepływu
Funkcje testowe do wysyłania i odbierania bajtów:
int sendC(char c) { while((U1LSR & 1 < < 5)==0); U1THR = c; return 0; } char recvC(void) { while((U1LSR & 1 << 0)==0); return U1RBR; }
Ciąg dalszy nastąpi ...