Wprowadzenie do MSP430G2553 i MPU6050 Liqiang Du 1 Tłumaczenie: Z. Kubiak
Plan Podstawowe cechy CPU wprowadzenie Przerwania Wejścia/wyjścia Zegar Timery ADC USCI 2
Podstawowe cechy Architektura niskiego poboru mocy przedłuża żywotność baterii – 0.1 μA - tylko potrzymanie RAM – 0.8 μA - tryb zegara czasu rzeczywistego – 250 μA/MIPS w stanie aktywności 16-bitowy procesor RISC ogranicza wielkość kodu – Duża liczba rejestrów usuwa wąskie gardło przetwarzania kodu – Zwarta konstrukcja rdzenia zmniejsza zużycie energii i koszty – Zoptymalizowany dla programowania wysokiego poziomu – Tylko 27 instrukcji podstawowych i siedem trybów adresowania – Szerokie możliwości przerwań wektorowych Programowalna „In-system” pamięć Flash (16KB) pozwala na elastyczne zmiany w kodzie, modernizacje pól i rejestrowanie danych 3
Architektura MSP430 4
CPU wprowadzenie Architektura RISC tu: 27 instrukcji i 7 trybów adresowania. Pełny dostęp do rejestrów w tym licznika programu, rejestrów stanu i wskaźnika stosu. Operacje rejestrowe w pojedynczym cyklu. Duży 16-bitowy rejestr transferu z pamięcią. 16-bitowa magistrala adresowa umożliwia bezpośredni dostęp i rozgałęzienia (skoki) w całym zakresie pamięci. 16-bitowa szyna danych pozwala na bezpośrednie operacje na argumentach o szerokości słów Generator stałych zapewnia sześć najczęściej używanych natychmiastowych wartości i zmniejsza rozmiar kodu. Bezpośrednie transfery pamięć-pamięć bez rejestru pośredniego Słowowe i bajtowe adresowanie i formaty instrukcji 5
27 Instrukcji rdzenia RISC 6
3 formaty instrukcji 7
CPU tryby działania 8
Przerwania Są zdarzeniami wymuszającymi zmianę wykonywania programu; Podprogram obsługi przerwań (ISR); Po zakończeniu programu obsługi przerwań (ISR), następuje powrót do uprzednio wykonywanego programu Istnieją trzy klasy przerwań: Reset. Przerwania niemaskowalne przez GIE - nie mogą być wyłączone przez ustawienie bitu przerwania globalnego (GIE), ale są uaktywniane przez bity indywidualne (NMIIE, ACCVIE, OFIE). Używane do zdarzeń o najwyższych priorytetach. Przerywania maskowalne przez GIE- przerwania urządzeń peryferyjnych jak Watchdog Timer w trybie timera interwałowego w momencie przepełnienia itp. Można wyłączyć je programowo Opóźnienie wykonania przerwania - jest czasem między zdarzeniem rozpoczynającym wykonanie ISR; Normalnie potrzeba 6 cykli 9
Wektor przerwań 11
#pragma vector = TIMER0_A0_VECTOR __interrupt void TA0_ISR(void) { __bic_SR_register_on_exit(CPUOFF); // Exit LPM0 } #pragma vector = USCIAB0TX_VECTOR __interrupt void USCIAB0TX_ISR(void) { UCB0TXBUF = (UCB0RXBUF << 4) | 0x0f; // Move RX data to TX __bic_SR_register_on_exit(CPUOFF); // Exit LPM0 } 12
Zegar Zegar pomocniczy ACLK. ACLK dzieli się przez 1, 2, 4 i 8 i jest wybierany programowo dla poszczególnych układów peryferyjnych. MCLK - zegara głównego. Zegara MCLK dzieli się przez 1, 2, 4 lub 8, i jest stosowany przez jednostkę centralną i system. SMCLK - podrzędny zegar. SMCLK dzieli się przez 1, 2, 4 i 8 i jest wybierany programowo dla poszczególnych modułów obwodowych. 13
Wprowadzenie do cyfrowych we/wy MSP430G2553 ma 2 porty (P1 i P2), każdy port ma do ośmiu linii I/O (P1.0-P1.7, P2.0-P2.5). Każda linia I/O jest indywidualnie konfigurowalna jako wejście lub wyjście, i każda linia I/O może być indywidualnie zapisywana lub odczytywana. Niezależnie programowalne indywidualnych I / O Dowolna kombinacja wejścia lub wyjścia Indywidualnie konfigurowalne przerwania P1 i P2 Niezależne rejestry danych wejściowych i wyjściowych Indywidualnie konfigurowalne rezystory podciągające Rejestry kierunku PxDIR (P1DIR = 0x01) Rejestry wejściowe PxIN Rejestry wyjściowe PxOUT 14
Timer WDT jest 16-bitowy zegarem, który może być stosowany jako watchdog lub jako generator czasowy. Rejestr sterowania WDT jest chroniony hasłem WDTCTL = WDTPW + WDTHOLD; 15
Timer_A Timer_A is a 16-bit timer/counter with three capture/compare registers 16-bitowy asynchroniczny timer / licznik z czterema trybami pracy Możliwość wyboru i konfiguracji źródła zegara Dwa lub trzy konfigurowalne rejestry przechwytujące / porównujące Konfigurowalne wyjścia z funkcją PWM 16
17
Timer control register(TACTL) 18
ADC Moduł ADC10 obsługuje szybkie, 10-bitowe przetwarzanie analogowo-cyfrowego 200 kb/s - maksymalna szybkość konwersji Sample-and-hold z programowaniem okresów próbkowania Rozpoczęcie konwersji przez oprogramowanie lub Timer_A Programowy wybór wbudowanego źródła napięcia odniesienia (1,5 V lub 2,5 V) Programowy wybór źródła napięcia odniesienia wewnętrznego lub zewnętrznego Do ośmiu zewnętrznych kanałów wejściowych Możliwość wyboru zegara SAR Tryby: jednokanałowy, powtarzany jednokanałowy, kolejności i powtarzany sekwencyjny tryb konwersji Rdzeń ADC i napięcia odniesienia mogą być wyłączony oddzielnie Sterownik transferu danych do automatycznego przechowywania wyników konwersji 19
ADC – kroki działania Definicja linii portów jako wejść kanałów analogowych (INCHx) Wybać źródło zegara dla operacji konwersji, lub ustawienie Watchdog. (ADC10SSELx) Wybór trybu (np., ciągły, jednorazowy, itd). (CONSEQx) Wybór napięcia odniesienia VREF. (SREFx) Wybór czasu S-H dla konwersji. (ADC10SHTx) Włączyć wybrany kanał. Włączyć działanie ADC (ADC10ON) Enable ADC (wykonanie pomiaru) Odczytać wartość po konwersji; 20
Przykład ADC10CTL1 = INCH_3 + CONSEQ_1; // A3/A2/A1, single sequence ADC10CTL0 = ADC10ON + ADC10IE; // ADC10ON, interrupt enabled ADC10AE0 |= 0x0E; // P1.1,2,3 ADC option select ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start 21
USCI I2C Mode Figure : I2C Bus Connection Diagram The two pull up resistor is necessary for I2C mode to work properly 22
I2C Module Operating Modes Transmitter Master Receiver I2C Transmitter Slave Receiver 23
I2C transfer danych Figure : I2C Module Data Transfer The first byte after a START condition consists of a 7-bit slave address and the R/W bit. When R/W = 0, the master transmits data to a slave. When R/W = 1, the master receives data from a slave. The ACK bit is sent from the receiver after each byte on the 9th SCL clock. 24
I2C kod inicjujący void Init_i2c(uint8_t devAddr) { UCB0CTL1 |= UCSWRST; // Enable SW reset UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC; // I2C Master, synchronous mode UCB0CTL1 = UCSSEL_2 + UCSWRST; // Use SMCLK, keep SW reset UCB0BR0 = 10; // fSCL = 1Mhz/10 = ~100kHz UCB0BR1 = 0; P1SEL = BIT6 + BIT7; // Assign I2C pins to USCI_B0 P1SEL2 = BIT6 + BIT7; // Assign I2C pins to USCI_B0 UCB0I2CSA = devAddr; // Slave Address is 069h UCB0CTL1 &= ~UCSWRST; // **Initialize USCI state machine** IE2 |= UCB0RXIE + UCB0TXIE; // Enable RX and TX interrupt } 25
Tryb USCI UART W trybie asynchronicznym, moduły USCI_Ax MSP430 należy podłączyć do zewnętrznego systemu za pośrednictwem dwóch linii zewnętrznych UCAxRXD i UCAxTXD. W trybie UART, USCI transmituje i odbiera znaki asynchronicznie do/z innego urządzenia. Urządzenia nadawcze i odbiorcze korzystają z tej samej szybkości transmisji. 26
UART – kod inicjujący void initUart(void) { UCA0CTL1 |= UCSSEL_2; // Use SMCLK UCA0BR0 = 104; // 1MHz 9600 UCA0BR1 = 0; // 1MHz 9600 UCA0MCTL = UCBRS0; // Modulation UCBRSx = 1 P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD P1SEL2 = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine** IE2 |= UCA0TXIE; } 27
Tryby USCI SPI Cechy trybu SPI to: 7-bitowa lub 8-bitowa długość danych 3-pin i 4-pin obsługa SPI Tryby master lub slave Niezależne nadawanie i odbieranie rejestrów przesuwnych Oddzielne rejestry buforowe nadawania i odbierania Wybierana polaryzacja UCLK i kontrola faz Programowalna częstotliwość UCLK w trybie master Niezależne możliwości generowania przerwania dla odbioru i nadawania 28
Tryby USCI SPI 29
SPI example code P1SEL = BIT1 + BIT2 + BIT4; UCA0CTL0 |= UCCKPL + UCMSB + UCMST + UCSYNC; UCA0CTL1 |= UCSSEL_2; UCA0BR0 |= 0x02; UCA0BR1 = 0; UCA0CTL1 &= ~UCSWRST; IE2 |= UCA0RXIE; 30
MPU6050 MPU6050: Gyroscope + Accelerometer ±2g, ±4g, ±8g and ±16g ±250, ±500, ±1000, and ±2000°/sec VCC and GND for power supply:3-5v SCL and SDA for I2C communication with MSP430 XCL and XDA to connect magnetic sensor Reference : MSP430 x2xx user guide MPU6050 datasheet and register file
Where to buy MSP430G2 $9.99 https://estore.ti.com/MSP-EXP430G2-MSP430-LaunchPad-Value-Line-Development-kit-P2031.aspx MPU6050 $5.75 http://www.ebay.com/itm/MPU-6050-3-Axis-Accelerometer-Sensor-Gyroscope-6DOF-Module-3-3V-5V-For-Arduino-/161108492494?pt=LH_DefaultDomain_0&hash=item2582d080ce