В данной статье рассмотрим подключение модуля TB387 к ATmega16 (ATmega32/Arduino) и приведем пример программы на C в Atmel Studio 6.
Информации о TB387 в интернете очень мало. Сделан он на базе контроллера STM8S003F3P6. Рабочее напряжение данного аппарата от 3.3В до 5.5В, но лучше подключить к 3.3В если необходимо интенсивно его использовать, ибо он перестаёт работать на неопределённое время, у меня бывало от сутки до несколько.
Подключается он просто, Vcc, GND…, вот только RXD и TXD нужно соединить наоборот: RXD модуля к TXD контроллера и TXD модуля к RXD контроллера. Так же подключаем второй к ПК.
Схема подключения радиомодуля TB387 к ATmega16/ATmega32
По умолчанию скорость TB387 равна 9600. Если нужна другая скорость, подключаем CMD к земле и меняем скорость. Как это сделать, смотрим на странице UART Радиомодуль TB387 20dBm 2.4GHz — передатчик/приёмник.
Прошивку для ATmega16 написал на C в Atmel Studio 6. Для программирования контроллера использовал программатор STK500, а программу — AVR Studio 4, очень удобный инструмент.
Ниже привёл пример прошивки. Не буду вдаваться в деталях, я всегда руководствуюсь по даташиту. Будет время напишу статью на эту тему.
Пример программы в Atmel Studio 6
#define F_CPU 11059200UL #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #define BAUD_RATE 9600 #define UBRR F_CPU/16/BAUD_RATE-1 char message[125] = "Hello! I am ATmega16!"; int n = 125; int i = 0; ISR(USART_UDRE_vect) { if(i == n) { UDR = 13; i++; } else if(i == n + 1) { UDR = 10; _delay_ms(1000); i = 0; } else { UDR = message[i++]; } } int main(void) { n = strlen(message); /* USART init */ /* Set baud rate */ UBRRH = (char)(UBRR>>8); UBRRL = (char)(UBRR); UCSRA = 0; /* Enable receiver and transmitter RXCIE: RX Complete Interrupt [Disable] TXCIE: TX Complete Interrupt [Disable] UDRIE: USART Data Register Empty Interrupt [Enable] */ UCSRB = (1<<RXEN) | (1<<TXEN) | (0<<RXCIE) | (0<<TXCIE) | (1<<UDRIE); /* Set frame format: 8data, 2stop bit URSEL: USART Mode Select [Synchronous Operation] USBS: Stop Bit Select [2-bit] UCSZ1,UCSZ0: Character Size [8-bit] */ UCSRC = (1<<URSEL) | (1<<USBS) | (1<<UCSZ1) | (1<<UCSZ0); sei(); while(1) { } }
После прошивки подключил модули, один к AVR другой к компьютеру, запустил Terminal v1.9b и вуаля, всё работает, микроконтроллер ATmega16 передаёт нам большой привет.
Результат
Если всё правильно сделать, то вы должны получить такой результат, какой мы видим на картинке.
корпоративное такси заказать такси по телефону недорого.
заказать такси эконом новочеркасск заказать такси эконом новочеркасск .