Показать сообщение отдельно
Старый 31.12.2018, 07:47   #20
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

Выводы PB0-2 на промикре это SPI.
Так что цифровые выводы придётся сдвинуть как не крути. И сдвинуть их проще на PB4-6.
При этом в коде менять минимум.

А что с УАРТом не так?
В коде про него ни слова нет.
И о порте D тоже.

Если хочешь с UART работать не средствами arduino ide, точнее библиотеки оттуда, то вот это почитай:
https://alex-exe.ru/radio/avr/avr-uart/

Но зачем он тебе?
Включи порт на котором диод на микре и мигай им как принят пакет. Ну чтоб видеть что происходит по началу.
Потом прикручивай уже usb.

В принципе тебе надо всего 3 ноги изменить для промикры. Или одну если обвес ещё из двух микрух не нужен.

И посмотри скорость кварца, а то в коде стоит 16 мегагерц.
При прошивке ардуино иде вообще можно это из кода убрать.

PS. Вот нормальный пример работы с uart.
Стоит заметить что скорость зависит от частоты тактирования проца
Цитата:
define F_CPU 8000000 // Рабочая частота контроллера
#define BAUD 9600L // Скорость обмена данными
#define UBRRL_value (F_CPU/(BAUD*16))-1 //Согластно заданной скорости подсчитываем значение для регистра UBRR

#include <avr/io.h>
#include <util/delay.h>

void init_USART() {
UBRRL = UBRRL_value; //Младшие 8 бит UBRRL_value
UBRRH = UBRRL_value >> 8; //Старшие 8 бит UBRRL_value
UCSRB |=(1<<TXEN); //Бит разрешения передачи
UCSRC |=(1<< URSEL)|(1<< UCSZ0)|(1<< UCSZ1); //Устанавливем формат 8 бит данных
}

void send_UART(char value) {
while(!( UCSRA & (1 << UDRE))); // Ожидаем когда очистится буфер передачи
UDR = value; // Помещаем данные в буфер, начинаем передачу
}

int main(void)
{
init_USART(); //инициализация USART в режиме 9600/8-N-1
send_UART(0x53); //посылаем ASCII код знака 'S'
send_UART(0x2D); //посылаем ASCII код знака '-'
send_UART(0x45); //посылаем ASCII код знака 'E'
while(1)
{
_delay_ms(1000);
}
}

Последний раз редактировалось T_r_D; 31.12.2018 в 08:57.
T_r_D вне форума   Ответить с цитированием