Cechy układu UC3C - 32 bitowy mikrokontroler - zasilanie 5V lub 3,3V - moduł generecji impulsów PWM - FPU sprzetowy moduł wspomagania obliczeń - kontroler zdarzeń (PEVC- Peripheral Event Controller) - moduły DAC, ADC, AC - interfejsy komunikcaji szeregowej CAN
Budowa mikrokontrolera UC3C - 3 rodzaje obudów
Konfiguracja pinów moduł GPIO
Budowa pojedynczego pinu moduł GPIO
Sterowanie pinami moduł GPIO ustawienie 1 gpio_set_gpio_pin(numer pinu GPIO) przykład: Ustawiamy wartośc 1 na pinie PB11 gpio_set_gpio_pin(43); gpio_set_gpio_pin(avr32_pin_pb11); void gpio_set_gpio_pin(uint32_t pin) { volatile avr32_gpio_port_t *gpio_port = &AVR32_GPIO.port[pin >> 5]; } gpio_port->ovrs = 1 << (pin & 0x1F); gpio_port->oders = 1 << (pin & 0x1F); gpio_port->gpers = 1 << (pin & 0x1F);
Sterowanie pinami moduł GPIO ustawienie 0: gpio_clr_gpio_pin(numer pinu GPIO) przykład: Ustawiamy wartośc 0 na pinie PB11 gpio_clr_gpio_pin(43); gpio_clr_gpio_pin(avr32_pin_pb11); void gpio_clr_gpio_pin(uint32_t pin) { volatile avr32_gpio_port_t *gpio_port = &AVR32_GPIO.port[pin >> 5]; } gpio_port->ovrc = 1 << (pin & 0x1F); gpio_port->oders = 1 << (pin & 0x1F); gpio_port->gpers = 1 << (pin & 0x1F);
Sterowanie pinami moduł GPIO konfiguracja pinu dla układu peryferiów: gpio_enable_module_pin(numer pinu GPIO, Numer funkcji GPIO) gpio_enable_module_pin(43, 2); gpio_enable_module_pin(avr32_pin_pb11, 2); gpio_enable_module_pin(avr32_pin_pb11, 2); uint32_t gpio_enable_module_pin(uint32_t pin, uint32_t function) { volatile avr32_gpio_port_t *gpio_port = &AVR32_GPIO.port[pin >> 5]; switch (function) { case 0: /* A function. */ gpio_port->pmr0c = 1 << (pin & 0x1F); gpio_port->pmr1c = 1 << (pin & 0x1F); gpio_port->pmr2c = 1 << (pin & 0x1F); break; case 1: /* B function. */... } gpio_port->gperc = 1 << (pin & 0x1F); return GPIO_SUCCESS; }
Budowa modułu AC konfiguracja normalna
Budowa modułu AC konfiguracja okienkowa
Budowa modułu ADC - rozdzielczość 8, 10 lub 12 bitów - 1,5 miliona próbek na sekundę - źródła odniesienia: 1V wewnetrzne, 0.6AVCC i 2 zewnetrzne - start konwersji wyzwalanie: programowe, licznikiem, ciągłe i z PEVC - mechanizm okienka
Budowa modułu ADC
Budowa modułu DAC
Kontroler zdarzeń modułow peryferyjnych (PEVC) - bezpośrednia komunikacja pomiędzy peryferiami - 34 generatory źródła zdarzeń - 22 odbiorcy zdarzeń Źródła zdarzeń: - zmiana stanu pinu - komparator analogowy (AC) - licznik - moduł PWM porównanie rejestrów Odbiorcy zdarzeń: - przetwornik ADC, start konwersji - przetwornik DAC, start konwersji - moduł PWM wejście błędu
Moduł PWM - 4 kanały - 20 bitowy licznik na każdym kanale - 16 bitowy generator czasu martwego (dead-time) na każdy kanał - rejestry: licznika, okresu, wypełnienia, niezależne dla każdego kanału - tryb pracy synchronicznej - 8 rejestrów porównwczych do generacji zdarzeń - 5 wejść błędów
Moduł PWM schemat poglądowy
Moduł PWM budowa kanału
Moduł PWM wyjścia PWM_H I PWM L F_PWM=64 MHz, CPRD=64000, CDTY = CPRD*0.4 = 25600, generator czasu martwego wyłączony
Moduł PWM wyjścia PWM_H I PWM L F_PWM=64 MHz, CPRD=64000, CDTY = CPRD*0.4 = 25600, DTH=6400, DTL=6400
Moduł PWM wejście błędu
Moduł PWM wejście błędu
Obliczanie funkcji sinus gpio_set_gpio_pin(avr32_pin_pb13); t0=get_system_register(avr32_count); _pwm_kat_u = _kat_start; _pwm_kat_v = _pwm_kat_u + 2.0*M_PI/3.0; _pwm_kat_w = _pwm_kat_u + 4.0*M_PI/3.0; u=sin(_pwm_kat_u); v=sin(_pwm_kat_v); w=sin(_pwm_kat_w); t1=get_system_register(avr32_count); gpio_clr_gpio_pin(avr32_pin_pb13); dt = t1>t0? t1-t0 : UINT32_MAX - t0 + t1;
Obliczanie funkcji sinus czas wykonywania sinus liczony za pomocą funkcji sin(x) czas 123us
Obliczanie funkcji sinus czas wykonywania sinus liczony za pomocą tabeli czas 28us