Современная электроника №8/2021

ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ 47 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 8 2021 Рассмотрим передачу данных по интерфейсу USART в микроконтрол- лере ATmega128, для чего напишем аналогичную программу передачи символов «ABC» на экран виртуально- го терминала на языке программиро- вания С. #include <inttypes.h> #include <avr/io.h> #include <avr/interrupt.h> #include <avr/sleep.h> #include <util/delay.h> #define F_CPU 8000000 // Рабочая частота контроллера #define BAUD 9600L // Скорость обмена данными #define UBRRL_value (F_CPU/ (BAUD × 16)) – 1 // Согласно задан- ной скорости //подсчитываем значение для реги- стра UBRR void init_USART() { UBRR0L = UBRRL_value; // Младшие 8 бит UBRRL_value UBRR0H = UBRRL_value >> 8; // Старшие 8 бит UBRRL_value UCSR0B = (1<<TXEN0); // Бит раз- решения передачи UCSR0C = (1<< UCSZ00)|(1<< UCSZ01); } // Устанавливаем формат 8 бит данных void send_USART(char value) { while(!( UCSR0A & (1 << UDRE0))); // Ожидаем когда очистится буфер передачи UDR0 = value; } // Помещаем дан- ные в буфер, начинаем передачу int main(void) { init_USART(); // инициализация USART send_USART(0b01000001); // посы- лаем двоичный код символа ‘A’ send_USART(0b01000010); // посы- лаем двоичный код символа ‘B’ send_USART(0b01000011); // посы- лаем двоичный код символа ‘C’ while(1) { _delay_ms(1000); } } Здесь необходимо отметить, что в микроконтроллере ATmega128 два модуля USART: USART0, USART1. Таким образом, при написании программ- ного кода необходимо указывать, к регистрам какого модуля USART мы обращаемся. Если при работе с интер- фейсом USART микроконтроллера ATmega16 мы обращались к регистру данных по имени UDR, то при работе, к примеру, с модулем USART0 микрокон- троллера ATmega128 к регистру дан- ных необходимо обращаться по име- ни UDR0. На рис. 23 показана схема передачи данных при помощи модуля USART0 микроконтроллера ATmega128. Код программы инициализации микрокон- троллера на вкладке Source Code пред- ставлен на рис. 24. На рис. 25 показа- но окно настроек микроконтроллера ATmega128. Литература 1. Proteus VSM Help, Labcenter Electronics, 2020. 2. STM32F103х4, STM32F103х6 MCU Datasheet. STMicroelectronics. 2009. 3. HD44780U (LCD-II) (Dot Matrix Liquid Crystal Display Controller/Driver). Hitachi, Ltd. 1998. 4. STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx advanced ARM-based 32-bit MCUs. Reference manual. STMicroelectronics. 2010. Реклама МОСКВА (495) 234-0636 info@prosoft.ru САНКТ-ПЕТЕРБУРГ (812) 448-0444 info@spb.prosoft.ru ЕКАТЕРИНБУРГ (343) 356-5111 info@prosoftsystems.ru (912) 620-8050 ekaterinburg@regionprof.ru

RkJQdWJsaXNoZXIy MTQ4NjUy