Перейти к содержанию

Uart Странные Символы Принимает От Atmega8


Int64

Рекомендуемые сообщения

Всем привет, пытаюсь заставить общаться 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 работает не от кварцевого резонатора, может быть из-за этого?

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Atmega8 по умолчанию работает на частоте 1 MHz, а на такой частоте скорость 9600

получается с большой ошибкой -7%. Поэтому лучше фузе битами выбрать частоту 8 MHz.

На STM для альтернативных функций выбран GPIO_AF_USART1, а пишете что вывод через

USART2

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

при работе с уарт первым делом кварц на обоих сторонах. Иначе путнего ничего не выйдет

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...