• Объявления

    • admin

      Просьба всем принять участие!   24.11.2017

      На форуме разыгрывается спектроанализатор Arinst SSA-TG LC (цена 18500 руб). Просьба всем перейти по ссылке ниже и принять участие!

Поиск по сайту

Результаты поиска по тегам 'uart'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип публикаций


Категории и разделы

  • Вопрос-Ответ. Для начинающих
    • Песочница (Q&A)
    • Дайте схему!
    • Школьникам и студентам
    • Начинающим
    • Паяльник TV
    • Обсуждение материалов с сайта
  • Радиоэлектроника для профессионалов
    • Световые эффекты и LED
    • Роботы и модели на ДУ-управлении
    • Автоматика
    • Самодельные устройства к компьютеру
    • Программное обеспечение
    • Автомобильная электроника
    • Системы охраны и наблюдения. Личная безопасность
    • Питание
    • Электрика
    • Промышленная электроника
    • Ремонт
    • Металлоискатели
    • Измерительная техника
    • Мастерская радиолюбителя
    • Сотовая связь
    • Спутниковое ТВ
    • КВ и УКВ радиосвязь
    • Жучки
    • Телефония и фрикинг
    • Высокое напряжение
    • Идеи и технологии будущего
    • Справочная радиоэлементов
    • Литература
    • Разное
  • Аудио
    • FAQ, Технологии и компоненты
    • Для начинающих
    • Источники звука
    • Предусилители, темброблоки, фильтры
    • Питание аудио аппаратуры
    • Усилители мощности
    • Акустические системы
    • Авто-аудио
    • Ламповая техника
    • Гитарное оборудование
    • Прочее
  • Микроконтроллеры
    • МК для начинающих
    • AVR
    • PIC
    • STM32
    • Arduino и Raspberry Pi
    • ПЛИС
    • Другие микроконтроллеры и семейства
    • Алгоритмы
    • Программаторы и отладочные модули
    • Периферия и внешние устройства
    • Разное
  • Товары и услуги
    • Коммерческие предложения
    • Продам-Отдам, Услуги
    • Куплю
    • Уголок потребителя
    • Вакансии и разовая работа
    • Наши обзоры и тесты
  • Разное
    • Конкурсы сайта с призами
    • Сайт Паяльник и форум
    • Курилка
    • Технический английский (English)
    • Наши проекты для Android и Web
    • FAQ (Архив)
    • Личные блоги
    • Корзина
    • Вопросы с VK
  • ATX->ЛБП Переделки
  • Юмор в youtube Киловольты юмора
  • Надежность и группы продавцов Радиолюбительская доска объявлений exDIY
  • разные темы Переделки

Блоги

Нет результатов для отображения.

Нет результатов для отображения.

Местоположения

  • Пользователи форума

Группа


ICQ


Skype


Интересы


Город


Сфера радиоэлектроники


Оборудование

Найдено 57 результатов

  1. Програмный UART CVAVR

    Всем привет. Сделал устройство с семисегментным индикатором,но понадобилось снимаемые значения еще и на пк выводить. А порт UART'а занят,связь нужна симплексная,т.е. в одну сторону. Можно ли как-то вывести инфу на порт В0?Или проще задействовать реализацию железа,а индикатор перебросить на другие порты?
  2. Доброго времени суток!!! Я столкнулся с тем, что не работает UART и не реагирует на AT-команды. Пробовал с 2-мя переходниками: CH340 и FT232RL, тот, что в Arduino. Пробовал и менять контакты RX-TX местами, и скорость менял (должно быть 9600 бод) - терминал молчит от слова совсем. CH340 просто светит своим индикатором приема, а FT232 моргнет при включении и все. Должно выводиться в терминале при включении ON, но не выводится ничего и никак не реагирует. Проверял и обвязкой, и упрощенным подключением (4 провода - 2 питания и 2 UART), и напряжение то 3.3 делал, то 3.7, то питал с аккумулятора - молчание. Подумал, что UART нагнулся из-за моих кривых рук - махнулся с другом на свежую, проверить UART, но результат тот же, полагаю, что в моем даже и не сдох. А сам модуль работает, не считая злосчатного UART. Так в чем может быть проблема?
  3. Програмный UART atmega16

    Добрый день. Мне требуется реализовать программный юарт на атмеге16. Он нужен для того, чтобы принятые по нему данные отправить на аппаратный юарт. В интернете нашел примеры кода, но понять его мне трудно. Прошу вас словами в общих чертах объяснить принцип реализации программного юарта. Буду рад примерам, которые, на ваш взгляд, являются наиболее простыми и понятными. Заранее спасибо.
  4. Читается порт UART на микроконтроллере Atmega. Применяю типовой алгоритм, но аппаратно вижу ошибки. Что неверное, или отчего они могут быть? unsigned char rx_buffer[128]; //накопительный буфер unsigned char indexW; // индекс при наполнении накопительного буфера unsigned char Count; // счетчик накопительного буфера unsigned char indexR; // индекс при опорожнении накопительного буфера int Max; // максимум до переполнения char tempMessage; // временная переменная int main(void) { Max=100; // пробовал разные while(1) { _delay_us(40); // пробовал от 10 мкс до мс if (Count > 0) { tempMessage=rx_bufferR[indexR]; MesComplite(tempMessage); //тут анализ каждого считанного байта. Это занимает время //поэтому и нужен буфер indexR++; if (indexR>=Max) indexR=0; //Значение Max одинаковое для чтения и записи. Может разные проба? cli(); // для надежности запрет прерывания Count--; sei(); //разрешение if (Count>=Max) Count=0; } } } ISR(USART_RXC_vect) { if (UCSRA & (1<<7)) { rx_buffer[indexW]=UDR; indexW++; if (indexW>=Max) indexW=0; Count++; if (Count>Max) Count=0; } } 1. Задержка нужна в цикле whole? У меня при нуле еще больше ошибок((( 2. Размеры 128 и 100 методом подбора? 3. Инкременты ++ ставить после команды? 4. запреты прерывания нужны? 5. If делаю на "равенство и больше". Верно? 6. Какие есть иные методы повышения надежности, кроме повторной отправки при ошибке?
  5. Не работает ubs-usart на attiny2313

    Здравствуйте, на днях собрал ubs-usart на attiny2313 на макетной плате, всё работало. Припаял к плате - не работает. В диспетчере задач показывается, как Неизвестное устройство. В чём может быть проблема, контакты проверил тестером в режиме прозвонки, вроде не коротит ничего.
  6. Чтение GPS MTK3339

    Добрый день, читаю датчик 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В) В поле еще не проверял
  7. Здравствуйте. Необходимо получать данные с Bluetooth модуля HC-06 и ESP8266 (ESP-01 версия) на Arduino Nano. Подключил по схеме: В итоге: передача работает только если подключено только одно передающее устройство. Если подключены оба одновременно, то на ардуино приходит мусор или вообще ничего. Можно-ли решить проблему установкой диодов у выходов ESP и HC-06? Если да, то какие подойдут? Если нет, то какие еще есть варианты решения?
  8. CVAvr Uart Нужна помощь

    Всем привет. 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 Каким образом можно вытягивать нужную информацию? С последующим выводом в нужные места? Можете показать пример и тыкнуть носом? Заранее спасибо за помощь!
  9. Не Работает Приём Usart

    Плата Sstm32f4discovery. Использую HAL. Стандартная инициализация не вырезана. Тактирование настраивается так: RCC_ClkInitTypeDef RCC_ClkInitStruct; RCC_OscInitTypeDef RCC_OscInitStruct; // Enable Power Control clock __PWR_CLK_ENABLE(); // The voltage scaling allows optimizing the power consumption when the // device is clocked below the maximum system frequency, to update the // voltage scaling value regarding system frequency refer to product // datasheet. __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); // Enable HSE Oscillator and activate PLL with HSE as source RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; // This assumes the HSE_VALUE is a multiple of 1MHz. If this is not // your case, you have to recompute these PLL constants. RCC_OscInitStruct.PLL.PLLM = (HSE_VALUE/1000000u); RCC_OscInitStruct.PLL.PLLN = 336; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; RCC_OscInitStruct.PLL.PLLQ = 7; HAL_RCC_OscConfig(&RCC_OscInitStruct); // Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 // clocks dividers RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2); RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5); То есть тактируемтся от 16 MHz HSI, все делители - 1. Сам код передачи/приёма тоже HAL: #include <stm32f4xx_hal.h> UART_HandleTypeDef comp; uint8_t for_send[] = {0}; uint8_t for_receive[] = {1}; void init_led ( void ) { GPIO_InitTypeDef led; __HAL_RCC_GPIOD_CLK_ENABLE( ); led.Mode = GPIO_MODE_OUTPUT_PP; led.Pin = GPIO_PIN_14 | GPIO_PIN_15; led.Speed = GPIO_SPEED_LOW; led.Pull = GPIO_NOPULL; HAL_GPIO_Init( GPIOD, &led ); } void HAL_UART_MspInit ( UART_HandleTypeDef * huart ) { __HAL_RCC_USART1_CLK_ENABLE( ); __HAL_RCC_GPIOB_CLK_ENABLE( ); GPIO_InitTypeDef gpio; gpio.Mode = GPIO_MODE_AF_PP; gpio.Pin = GPIO_PIN_6 | GPIO_PIN_6; gpio.Pull = GPIO_PULLUP; gpio.Alternate = GPIO_AF7_USART1; gpio.Speed = GPIO_SPEED_MEDIUM; HAL_GPIO_Init( GPIOD, &gpio ); HAL_NVIC_EnableIRQ( USART1_IRQn ); } int main ( void ) { comp.Init.BaudRate = 9600; comp.Init.Mode = UART_MODE_TX_RX; comp.Init.HwFlowCtl = UART_HWCONTROL_NONE; comp.Init.WordLength = UART_WORDLENGTH_8B; comp.Init.OverSampling = UART_OVERSAMPLING_16; comp.Init.Parity = UART_PARITY_NONE; comp.Init.StopBits = UART_STOPBITS_1; comp.Instance = USART1; comp.State = 0; HAL_UART_Init( &comp ); __HAL_USART_ENABLE_IT( &comp, UART_IT_TXE ); __HAL_USART_ENABLE_IT( &comp, UART_IT_RXNE ); init_led( ); HAL_GPIO_WritePin( GPIOD, GPIO_PIN_15, SET ); while ( 1 ) { for( volatile int i = 0; i < 100000; i ++ ) { ; } HAL_GPIO_TogglePin( GPIOD, GPIO_PIN_14 ); } } void USART1_IRQHandler( void ) { if ( __HAL_UART_GET_FLAG( &comp, UART_FLAG_TXE ) ) { __HAL_UART_DISABLE_IT( &comp, UART_IT_TXE ); HAL_UART_Transmit( &comp, for_send, 1, 0 ); __HAL_UART_CLEAR_FLAG( &comp, UART_FLAG_TXE ); } if ( __HAL_UART_GET_FLAG( &comp, UART_FLAG_RXNE)) { __HAL_UART_DISABLE_IT( &comp, UART_FLAG_RXNE ); HAL_UART_Receive( &comp, for_receive, 1, 0 ); HAL_GPIO_WritePin( GPIOD, GPIO_PIN_15, RESET ); __HAL_UART_CLEAR_FLAG( &comp, UART_FLAG_RXNE ); } } Всё просто. Включаем передачу, приём. Передаём, в приёмнике забираем информацию и гасим включенный светодиод. ЗАходит в прерывание по TXE отправляет данные (Должны ли мы увидеть изменение регистра DR в отладчике, просто он остаётся пустой) Отослал, вышел из прерывания, начитает мигать светодиодом( просто как индикатор что схема работает). Но приёма не происходит. Все инициализации сверены с user_manual. По всему коду прошёлся с отладчиком, все биты HAL выставляет правильно. PB6 и PB7 просто перемычкой соединены.
  10. Имею проводной сканер штрих кодов Argox AS-8000 rs232, хочу переделать его в беспроводной с помощью модулей HC-05 и HC-06. Если я не ошибаюсь, то достаточно разрезать провод сканера пополам, найти линии Rx и Tx и к ним подпаять модули, которые будут работать в сквозном режиме, передавая по блутуз дальше, то что приходит к ним по линии Tx. Помогите мне пожалуйста, в этом деле новичок я. Сами модули я уже настроил: master-модуль сам соединяется со slave-модулем.
  11. Доброго времени суток. Я скачал проэкт (http://alex-exe.ru/radio/avr/avr-uart/), который работает на Proteus, но не работает в реальности. Использую Terminal, atmega16, PL-2303HX. Подсоединяю RXD (переходник) с TXD (микроконтроллер) и наоборот. Подскажите, что я не так делаю и как правильно надо подсоединять микроконтроллер с компьютером?
  12. Доброго времени суток! Может кто-нибудь объяснить, в чём смысл и преимущества использования специализированных программаторов для 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...
  13. uart + atmega328 + codevisionavr

    Вопрос. Почему не выполняется на 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 с использованием генератора кода.
  14. Всем добра! Подскажите, если на плате оставить для пошивки 4 провода: 5В, GND, RX, TX можно ли будет отлаживать Atmega48 и прошивать его не как обычно с помощью (SPI)? Опыта прошивки пока нет, но планирую прошивать с помощью avrdude.
  15. Добрый день. Необходимо передать изображение из камеры 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, но теперь вопрос как преобразовать данные с камеры в изображение. Может уже кто-то имел опыт работы с данной камерой? Подскажите, как можно передать изображение с нее на ПК?
  16. Уважаемые форумчане. Собираю комплекс взаимодействия компьютера (ПК) и микроконтроллера 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); }
  17. Тестирую скорость порта. Есть МК соединенный через UART-USB CP2102 переходник к компу. МК передает пакеты длиной 64 байта на скорости 115200 со скоростью 100 пакетов в секунду. Комп передает ассинхронно данные 64 байт 100 пакетов / сек. Скорость USB 12 мегабит. Если передает данные только МК, то пакеты приходят с минимальной задержкой. Если включить передачу данных с ПК, то принимаемые ПК пакеты приходят сразу пачкой примерно 3 раза в секунду. Байты и сами пакеты не теряются. Пробовал большие скорости UART, но на склейку пакетов это не влияет. Есть способ сделать так, чтобы пакеты не склеивались друг с другом и приходили с минимальной задержкой? Это такая особенность USB шины или чипа CP2102?
  18. Здравствуйте! За основу проекта взял этот материал, добавил лишь переключатель 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; } } }
  19. Всем привет, пытаюсь заставить общаться 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 работает не от кварцевого резонатора, может быть из-за этого?
  20. Переходник Usb -> Uart На Attiny2313

    Приветствую всех. Решил для своих радиолюбительских нужд собрать переходник из этой статьи. В статье прикреплены драйвера для XP, vista, 32-bit семерки. Но у меня 2 компа и на одном из них винда 8.1. На нём устройство не определяется, ну да ладно. На втором ноутбуке вин 7, но 64-bit. Когда вставляю в него переходник - определяет, как RS-232. Я устанавливаю драйвера по инструкции. В диспетчере задач теперь определяется как Virtual Communication Port и подсвечивается желтым восклицательным знаком. Но ни одна терминальная программа его не видит. Как это исправить? Обязательно нужна вин 7 х32?
  21. Uart С Max232

    Есть задача спаять устройство, которое принимает и отправляет данные через UART. В приблизительной схеме стоят ATmega8 и MAX232 (через слеш ST232 хотя я видел что схема в них отличается а именно конденсатором одним) 1.Главный вопрос вот в чем. Зашел в интернет-магазин а там вариантов MAX232 около ста с различными индексами после названия, и цена очень отличается.Подскажите какую выбрать в DIP корпусе и планарном с рабочей температурой от -40. 2.А также поделитесь 100% рабочей схеме включения для MAX232, так как в интернете схема включения отличается от схемы с даташита а имено одним конденсатором включают его так же как в схеме ST232 и емкости везде разные бывают электролитические или керамические. еще какая-то ADM232 есть. в общем подскажите какую выбрать микросхему с каким индексом и схему включения. заранее спасибо. ссилка на интернет магазин
  22. Добрый день! Стоит задача с компьютера задавать время отсчета таймера собранного на ATmega и семисегментном индикаторе в режиме онлайн. То есть организовать связь для обмена данными с микроконтроллером ATmega. Желательно используя USB дабы не искать компьютер с COM-портом. Подскажите, какой из интерфейсов выбрать исходя из стоимости компонентов и сложности самого решения?
  23. Bluetooth Hc-05 И Pic16F628A

    Хочу реализовать передачу данных по блютуху. Возник такой вопрос: Как правильно подключать модуль блютух (HC-05) к МК (PIC16F628A)? У мк есть аппаратный UART. Данные от модуля, как я понял, тоже передаются по UART. Подключать надо так: RX(МК (7 нога)) - RX (Модуль (2 нога)) TX(МК (8 нога)) - TX (Модуль (1 нога)) или как на этой схеме: только вместо DB9 FEMALE подвести к RX и TX соответственно модуль. И если есть у кого-нибудь пример, поделитесь пожалуйста ) Сильно не пинайте я только начинаю.
  24. Добрый день ребят! Помогите пожалуйста с реализацией кода на 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МГц
  25. Не Работает Uart

    Работаю в AvrStudio 5. Есть две проблемы: не прописывается биты в UCSRC а также не реагирует на запись данных UDR. Возможно проблем в студии, но как по мне 5-я одна из работоспособных. UartInit: ldi r16, low(bauddivider) out ubrrl, r16 ldi r16, high(bauddivider) out ubrrh, r16 ldi r16, (1<<RXEN)|(1<<TXEN) out UCSRB,r16 ldi r16, (1<<URSEL)|(1<<USBS)|(3<<UCSZ0) out UCSRC,r16 ldi r16, 0xa out udr, r16 ret