Поиск сообщества
Показаны результаты для тегов 'UART'.
Найдено: 43 результата
-
Добрый день, читаю датчик GPS MTK3339 по uart, везде, где бы не читал (ардуино, fdti, ubuntu) выдает следующее $GPGGA,061527.084,,,,,0,0,,,M,,M,,*43 $GPRMC,061527.084,V,,,,,0.00,0.00,110417,,,N*44 $GPGGA,061528.084,,,,,0,0,,,M,,M,,*4C $GPRMC,061528.084,V,,,,,0.00,0.00,110417,,,N*4B Из этого видно, что дату и время показывает верную, а координаты и позицию 0. Формат NMEA, также пробовал парить и с помощью ардуино и online парсеров, что подтвердило выводы. Тесты проводились в комнате, вот хочу понять, это до спутника не добивается или прошивка/модуль косячные? Может кто имел дело с данным модулем? По питанию все ок, подключил согласно даташиту платы (+5В там стоит преобразователь 5В в 3.3В) В поле еще не проверял
-
Здравствуйте. Необходимо получать данные с Bluetooth модуля HC-06 и ESP8266 (ESP-01 версия) на Arduino Nano. Подключил по схеме: В итоге: передача работает только если подключено только одно передающее устройство. Если подключены оба одновременно, то на ардуино приходит мусор или вообще ничего. Можно-ли решить проблему установкой диодов у выходов ESP и HC-06? Если да, то какие подойдут? Если нет, то какие еще есть варианты решения?
-
Всем привет. CVAVR начал осваивать только недавно. Да и вообще раньше не особо работал с UART. Такой вопрос. Допустим по UART приходят строки типа: T:21.33 E:0 B:73.0 T:21.29 E:0 B:73.1 T:21.25 E:0 B:73.2 Каким образом можно вытягивать нужную информацию? С последующим выводом в нужные места? Можете показать пример и тыкнуть носом? Заранее спасибо за помощь!
-
Превращение проводного сканера штрих кодов в Bluetooth сканер
tagir000 опубликовал тема в Начинающим
Имею проводной сканер штрих кодов Argox AS-8000 rs232, хочу переделать его в беспроводной с помощью модулей HC-05 и HC-06. Если я не ошибаюсь, то достаточно разрезать провод сканера пополам, найти линии Rx и Tx и к ним подпаять модули, которые будут работать в сквозном режиме, передавая по блутуз дальше, то что приходит к ним по линии Tx. Помогите мне пожалуйста, в этом деле новичок я. Сами модули я уже настроил: master-модуль сам соединяется со slave-модулем. -
Доброго времени суток. Я скачал проэкт (http://alex-exe.ru/radio/avr/avr-uart/), который работает на Proteus, но не работает в реальности. Использую Terminal, atmega16, PL-2303HX. Подсоединяю RXD (переходник) с TXD (микроконтроллер) и наоборот. Подскажите, что я не так делаю и как правильно надо подсоединять микроконтроллер с компьютером?
-
Доброго времени суток! Может кто-нибудь объяснить, в чём смысл и преимущества использования специализированных программаторов для STM32 типа ST-Link и клонов, работающих по интерфейсам SWD/JTAG, если записать флеш можно прямо по UART/ISP или быстрее по USB (при его наличии)? Я так понимаю, что программаторы, кроме записи в память, ещё умеют выполнять отладку - и это их единственное отличие. А если отладка не нужна? Вернее, часто ли она используется при написании каких-нибудь маленьких прикладных программ типа реле времени? Я собираюсь развести свою печатную плату для STM32F107, а потом хочется поэкспериментировать с STM32F407ZGT - в них в обоих есть USB интерфейс, они оба есть в списке поддерживаемых USB DFU (согласно AN 3156). Но на форуме я прочитал, что пока все сидят на дискавери, в основном из-за того, что в ней есть встроенный программатор ST-LINK прямо на плате, но почему его наличие так важно и не заменяется возможностью программирования по UART/ISP или по USB? Есть ли какое-либо отличие кроме возможности отладки? Может быть, как и в случае со фьюзами у AVR, у STM32 есть какие-то функции/настройки, которые можно использовать/изменять только программатором ST-LINK? И да, разве скорость программирования по USB будет существенно ниже, чем по тому же JTAG или SWD? Заранее спасибо за ответы! Заранее предупрежу, чот с микроконтроллерами я раньше работал, но вот от ST что-то более-менее делал только на STM32F030...
-
Вопрос. Почему не выполняется на atmega328 команды? Тестировал в протеусе на частоте 8 мгц (в настройках проекта 20 мгц, но думаю на это не так сильно должно влиять). На микроконтроллере запущен аппаратный таймер - работает нормально. Через юарт (настроен только TXD) всё время шлёт: 011111111101111111110... Но сам код не хочет выполняться: while (1) { delay_ms(0.4); // выполнилось при первом цикле PORTD.6=1; // выполнилось при первом цикле delay_ms(0.4); // выполнилось при первом цикле putchar(PORTC.0+PORTC.1*2); // заморозилось и далее не выполняется, но аппаратный таймер работает, юарт флудит (011111111101111111110...) // функцию putchar нашёл в интернете PORTD.6=0; } PORTD.6 - настроен на выход PORTC.0 и PORTC.1 настроены на вход. Включены подтягивающие резисторы. P.S. Проект сделан в CodeVisionAVR с использованием генератора кода.
-
Всем добра! Подскажите, если на плате оставить для пошивки 4 провода: 5В, GND, RX, TX можно ли будет отлаживать Atmega48 и прошивать его не как обычно с помощью (SPI)? Опыта прошивки пока нет, но планирую прошивать с помощью avrdude.
-
Добрый день. Необходимо передать изображение из камеры OV9655 на ПК и отобразить его, Камера имеет выходной формат изображения RGB 565, с камеры считываю с использованием DCMI: uint32_t cameraData = DCMI_ReadData(); И после этого передаю через USART на ПК: USART_SendData(Open_USART, (uint8_t) cameraData>>24); while (USART_GetFlagStatus(Open_USART, USART_FLAG_TC) == RESET) {} USART_SendData(Open_USART, (uint8_t) cameraData>>16); while (USART_GetFlagStatus(Open_USART, USART_FLAG_TC) == RESET) {} USART_SendData(Open_USART, (uint8_t) cameraData>>8); while (USART_GetFlagStatus(Open_USART, USART_FLAG_TC) == RESET) {} USART_SendData(Open_USART, (uint8_t) cameraData); while (USART_GetFlagStatus(Open_USART, USART_FLAG_TC) == RESET) {} На компьютере принимаю через терминал и сохраняю в HEX файл. Скажите как потом его можно открыть? В качестве просмотрщика планирую использовать Java, но теперь вопрос как преобразовать данные с камеры в изображение. Может уже кто-то имел опыт работы с данной камерой? Подскажите, как можно передать изображение с нее на ПК?
-
Уважаемые форумчане. Собираю комплекс взаимодействия компьютера (ПК) и микроконтроллера ATmega8 (МК). В качестве переходника от ПК использую Преобразователь USB-UART на базе PL2303. Подключил выходы крест-накрест: Выход USB-UART Rx к третьей ножке МК. Выход USB-UART Tx ко второй ножке МК. Скомпилировал и зашил в МК программу (см. текст ниже). Подключил USB-UART к ПК. Запустил программу Terminal.exe, подключился к COM3 Ожидаю, что при посылке определенного символа с терминала загорится нужный светодиод. По факту - никакой реакции. Интересная особенность. Если в этот момент подключу к USB входу ПК программатор BM9010, то символы начинают поступать к МК и на консоли (Terminal.exe) также отображаются. Правда не совсем те символы, что я отправляю, но закономерность наблюдается. ВОПРОС: почему не работает система из двух компонентов (USB-UART) и МК? Почему при подключении программатора BM9010 сигналы проходят? -------------- #define F_CPU 1000000UL #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> //макросы вычисления скорости #define BAUD 9600 #define UBRR_VAL F_CPU/16/BAUD-1 void usart_init(unsigned int speed) { // устанавливаем скорость Baud Rate: 9600 UBRRH=(unsigned char)(speed>>8); UBRRL=(unsigned char) speed; UCSRA=0x00; UCSRB|=(1<<TXEN)|(1<<RXEN);// Разрешение работы приемника UCSRB|=(1<<RXCIE);// Разрешение прерываний по приему // Установка формата посылки: 8 бит данных, 1 стоп-бит UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); } char x=0; //выводим принятый байт на порт ISR (USART_RXC_vect) { x=UDR;//читаем значение //if(48<x<57) PORTC^=(1<<(x-49)); //UDR=PORTC; UDR=x; } int main(void) { usart_init(UBRR_VAL);//инициализация модуля sei(); while(1); }
- 9 ответов
-
- atmega8 avr
- uart
-
(и ещё 1 )
C тегом:
-
Тестирую скорость порта. Есть МК соединенный через UART-USB CP2102 переходник к компу. МК передает пакеты длиной 64 байта на скорости 115200 со скоростью 100 пакетов в секунду. Комп передает ассинхронно данные 64 байт 100 пакетов / сек. Скорость USB 12 мегабит. Если передает данные только МК, то пакеты приходят с минимальной задержкой. Если включить передачу данных с ПК, то принимаемые ПК пакеты приходят сразу пачкой примерно 3 раза в секунду. Байты и сами пакеты не теряются. Пробовал большие скорости UART, но на склейку пакетов это не влияет. Есть способ сделать так, чтобы пакеты не склеивались друг с другом и приходили с минимальной задержкой? Это такая особенность USB шины или чипа CP2102?
-
Здравствуйте! За основу проекта взял этот материал, добавил лишь переключатель baud rate. Собрал, установил нужную частоту дискретизации, но прочитать сообщение не удалось, много ошибок. Извиняюсь за качество фото. Что стоит попробовать для устранения ошибок? Код прилагаю. sbit LCD_RS at RB0_bit; sbit LCD_EN at RB3_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; sbit LCD_RS_Direction at TRISB0_bit; sbit LCD_EN_Direction at TRISB3_bit; sbit LCD_D4_Direction at TRISB4_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D7_Direction at TRISB7_bit; sbit Btn1 at RA3_bit; char i; unsigned short row=1,col=1; unsigned short rate_idx=0; void main(){ TRISA = 0b00001000; PORTA = 0; CMCON |= 7; // Disable Comparators Lcd_Init(); Delay_ms(100); UART1_Init(2400); // set baud rate Delay_ms(200); Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_UNDERLINE_ON); Lcd_Out(1,1,"UART Reader"); Delay_ms(2000); Lcd_Cmd(_LCD_CLEAR); while(1){ if(!Btn1){ Delay_ms(500); Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1,"Baud rate: "); rate_idx++; if(rate_idx > 3) rate_idx=0; if(0 == rate_idx){ UART1_Init(1200); Lcd_Out(1,12,"12"); } else if (1 == rate_idx){ UART1_Init(2400); Lcd_Out(1,12,"24"); } else if (2 == rate_idx){ UART1_Init(4800); Lcd_Out(1,12,"48"); } else if (3 == rate_idx){ UART1_Init(9600); Lcd_Out(1,12,"96"); } Lcd_Out(1,14,"00"); Delay_ms(2000); Lcd_Cmd(_LCD_CLEAR); } if(1 == UART1_Data_Ready()){ i=UART1_Read(); if(27 == i){ Lcd_Cmd(_LCD_CLEAR); col=1,row=1; } else if(i > 31 && i < 127) { Lcd_Chr(row,col,i); col++; } } if(17==col && 1==row){ row=2; col=1; } if(2==row && 17==col){ Lcd_Cmd(_LCD_CLEAR); col=1; row=1; } } }
-
Всем привет, пытаюсь заставить общаться 2 микроконтроллера через UART, программа для atmega8 очень простая: #define BAUD 9600 #define BAUDRATE ((F_CPU)/(BAUD*16UL)-1) #include <avr/io.h> #include <util/delay.h> void uart_init (void) { UBRRH = (BAUDRATE >> 8); UBRRL = BAUDRATE; UCSRB = (1 << TXEN ) | (1 << RXEN); UCSRC = (1 << URSEL) | (1 << USBS) | (1 << UCSZ0) | (1 << UCSZ1); } void uart_transmit (uint8_t data) { while (!( UCSRA & (1 << UDRE))); UDR = data; } int main() { DDRC = 0xff; PORTC = 0x00; DDRB = 0xFF; PORTB = 0x00; DDRD = 0x00; PORTD = 0x00; uart_init(); while(1) { uart_transmit('1'); _delay_ms(100); } return 0; } На STM принимаю через UART2 (порт PA.3) вывожу через USB в терминал, за основу взял вот это: https://github.com/rowol/stm32_discovery_arm_gcc/tree/master/usb_cdc_vcp Принимать данные с клавиатуры принимает (через терминал) и символы распознает хорошо, помигал светодиодом на плате, но когда пытаюсь передать с atmega8 данные на stm32 получаю вместо символов вопросительные знаки... Что с этим делать не знаю, уже что только не пробовал. Пробовал конфигурацию которая автоматически создается как в примере выше, и пробовал сам конфигурировать: RCC_APB2PeriphClockCmd(DISCOVERY_COM_CLK, ENABLE); RCC_AHB1PeriphClockCmd(DISCOVERY_COM_RX_GPIO_CLK, ENABLE); GPIO_InitTypeDef gpio; USART_InitTypeDef usart; GPIO_StructInit(&gpio); gpio.GPIO_Mode = GPIO_Mode_AF; gpio.GPIO_Pin = DISCOVERY_COM_TX_PIN; gpio.GPIO_Speed = GPIO_Speed_50MHz; gpio.GPIO_OType = GPIO_OType_PP; gpio.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &gpio); gpio.GPIO_Mode = GPIO_Mode_AF; gpio.GPIO_Pin = DISCOVERY_COM_RX_PIN; gpio.GPIO_Speed = GPIO_Speed_50MHz; gpio.GPIO_OType = GPIO_OType_PP; gpio.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &gpio); GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1); GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1); USART_StructInit(&usart); usart.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; usart.USART_BaudRate = 9600; usart.USART_WordLength=USART_WordLength_8b; usart.USART_Parity=USART_Parity_No; usart.USART_StopBits = USART_StopBits_2; usart.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_Init(DISCOVERY_COM, &usart); USART_ITConfig(DISCOVERY_COM, USART_IT_RXNE, ENABLE); USART_Cmd(DISCOVERY_COM, ENABLE); Когда сам конфигурирую вообще ничего не приходит, точнее приходит, но вопросительные знаки не рисуются, но свитодиод мигает, и говорит что данные приходят. Еще один момент, микроконтроллер atmega работает не от кварцевого резонатора, может быть из-за этого?
-
Приветствую всех. Решил для своих радиолюбительских нужд собрать переходник из этой статьи. В статье прикреплены драйвера для XP, vista, 32-bit семерки. Но у меня 2 компа и на одном из них винда 8.1. На нём устройство не определяется, ну да ладно. На втором ноутбуке вин 7, но 64-bit. Когда вставляю в него переходник - определяет, как RS-232. Я устанавливаю драйвера по инструкции. В диспетчере задач теперь определяется как Virtual Communication Port и подсвечивается желтым восклицательным знаком. Но ни одна терминальная программа его не видит. Как это исправить? Обязательно нужна вин 7 х32?
- 7 ответов
-
- avr
- attiny2313
-
(и ещё 3 )
C тегом:
-
Есть задача спаять устройство, которое принимает и отправляет данные через UART. В приблизительной схеме стоят ATmega8 и MAX232 (через слеш ST232 хотя я видел что схема в них отличается а именно конденсатором одним) 1.Главный вопрос вот в чем. Зашел в интернет-магазин а там вариантов MAX232 около ста с различными индексами после названия, и цена очень отличается.Подскажите какую выбрать в DIP корпусе и планарном с рабочей температурой от -40. 2.А также поделитесь 100% рабочей схеме включения для MAX232, так как в интернете схема включения отличается от схемы с даташита а имено одним конденсатором включают его так же как в схеме ST232 и емкости везде разные бывают электролитические или керамические. еще какая-то ADM232 есть. в общем подскажите какую выбрать микросхему с каким индексом и схему включения. заранее спасибо. ссилка на интернет магазин
-
Добрый день! Стоит задача с компьютера задавать время отсчета таймера собранного на ATmega и семисегментном индикаторе в режиме онлайн. То есть организовать связь для обмена данными с микроконтроллером ATmega. Желательно используя USB дабы не искать компьютер с COM-портом. Подскажите, какой из интерфейсов выбрать исходя из стоимости компонентов и сложности самого решения?
-
Хочу реализовать передачу данных по блютуху. Возник такой вопрос: Как правильно подключать модуль блютух (HC-05) к МК (PIC16F628A)? У мк есть аппаратный UART. Данные от модуля, как я понял, тоже передаются по UART. Подключать надо так: RX(МК (7 нога)) - RX (Модуль (2 нога)) TX(МК (8 нога)) - TX (Модуль (1 нога)) или как на этой схеме: только вместо DB9 FEMALE подвести к RX и TX соответственно модуль. И если есть у кого-нибудь пример, поделитесь пожалуйста ) Сильно не пинайте я только начинаю.
- 4 ответа
-
- PIC16F628A
- HC-05
-
(и ещё 2 )
C тегом:
-
Добрый день ребят! Помогите пожалуйста с реализацией кода на Attimy2313A с UART Написал вот такой кодик по примерам: #define F_CPU 8000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <stdio.h> #include <stdlib.h> //макросы вычисления скорости #define BAUD 19200 #define UBRR_VAL F_CPU/8/BAUD-1 void usart_init(unsigned int speed) { // устанавливаем скорость Baud Rate: 9600 UBRRH=(char)(speed>>8); UBRRL=(char) speed; UCSRA=0x00; UCSRB|=(1<<RXEN);// Разрешение работы приемника UCSRB|=(1<<TXEN); //Разрешение работы передатчика UCSRB|=(1<<RXCIE);// Разрешение прерываний по приему // Установка формата посылки: 8 бит данных, 1 стоп-бит UCSRC=(1<<UCSZ1)|(1<<UCSZ0); } //выводим принятый байт на порт ISR(USART0_RX_vect) { PORTB=UDR; _delay_ms(100); UDR = PORTB; // "ЭХО" } int main(void) { usart_init(UBRR_VAL);//инициализация модуля sei(); DDRB= 0b11111111; //вывод на все пины порта B while(1); { } Цель текущего кода: принять и отправить по прерыванию. Пробовал тестить в протеусе, что то неочень получается. данные приходят но криво. Приколы с таблицой ASCII я уже просек, поэтому пробовал отправлять с зажатым альтом цифры. Результат неутешил. Конечный код должен принимать подряд 2 байта, где 1- содержит ИД устройства , если BlockID == 1 байту (где BlockID - const), то второй байт кидаем на PORTB Главный вопрос, работает ли мой код и как принимать подряд 2 байта в одном прерывании?? Пишу в Atmel Studio 7 Баудрэйт 19200 бод Частота мк 8МГц
- 46 ответов
-
- UART
- AtmelStudio
-
(и ещё 2 )
C тегом: