Ви не увійшли.
// define some macros
#define BAUD 9600 // define baud
#define BAUDRATE ((F_CPU)/(BAUD*16UL)-1) // set baud rate value for UBRR
// function to initialize UART
void uart_init (void)
{
UBRRH = (BAUDRATE>>8); // shift the register right by 8 bits
UBRRL = BAUDRATE; // set baud rate
UCSRB|= (1<<TXEN)|(1<<RXEN); // enable receiver and transmitter
UCSRC|= (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1); // 8bit data format
}
и это вся настройка для ATMega???
если бы мне было в облом читать доки то я сделал бы так )
UBRRH =0;
UBRRL = 0;
UCSRB = 0;
UCSRC = 0;
Ваш вариант - неработающий pin Rx/Tx при ручном управления явно говорит о том что ножки сконфигурированы для других целей , например UART в low_level_init например,
я бы предположил что при старте порты должны быть в третьем состоянии ) но кто знает этих кадров что Arduino делали ) может порт для дебага подняли )
а вариант pinMode для неработающих ног делали?
и резисторы уберите что б отсечь ноги от компа.
Возьми исходник digitalWrite, сделай скетч на его основе. Если мигает - начинай пошагово упрощать/приводить к своему варианту и найдеш где собака зарыта.
А может высокий, уже не помню, но не меняется.
На обеих платах ATmega328, схема подключения пинов TXD и RXD абсолютно идентичная (светодиод с резистором к плюсу питания, резистор на юсб-преобразователь CH340G). При загрузке скетча с digitalWrite обе платы работают одинаково (мигают). А вот с приложенным скетчем на этих выходах постоянно низкий уровень.
Предполагаю, что микросхемы ATmega на уно и нано разные. Мне попадались atmega168pa в tqfp корпусе, у которых 2 первых порта (TX, RX) настроенные на вход с включенной PULLUP внутренней подтяжкой имели на выводах 1-2 вольта. Все остальные порты нормально подтягивались к логической единице. Чтоб их подтянуть на лог. 1 пришлось ставить резисторы 2.7 кОм, при 3 кОм был лог. 0. Вот такие микросхемы бывают.
Ещё проверил- с arduino uno скетч работает по всем выходам, а с Nano- как выше описал.
https://github.com/arduino/Arduino/blob … _digital.c
ничего "такого" не увидел
попробуйте
pinMode(uint8_t pin, uint8_t mode) для RX Tx настроить.
maybe config PDSEL (?) preset UART mode
pls view https://github.com/arduino/Arduino
https://www.arduino.cc/en/uploads/Main/ … ematic.pdf
remove RP1B , RP1C )
Забыл написать, у меня ардуино нано (клон), кроме того, почему эти RN4B и RN4A не влияют при использовании digitalWrite?
https://www.arduino.cc/en/uploads/Main/ … ematic.pdf
remove RN4B,RN4A
Недавно начал изучать ардуино.
Часто использую светодиоды , распаянные на плате, для экспериментов.
Попробовал запись в порт (скорость гораздо выше, чем digitalWrite).
Скетч- обычная мигалка, сначала пробовал на 13 вывод- без проблем. Затем попробовал помигать ещё двумя, и почему-то не получилось (с помощью digitalWrite запросто). Согласно скетча должен изменяться уровень на всех выходах с D0 до D7 с частотой 1гц. Что интересно, на шести свободных выводах D2...D7 потенциал изменяется без проблем, а на D0 и D1,они же TXD и RXD (именно к ним распаяны ещё два светодиода) - не изменяется.
Что я делаю не так?
#include <avr/io.h>
#include <util/delay.h>
int main( void )
{
DDRD = B11111111; // выводы PD как выходы
while (1) { // вечный цикл
PORTD = B00000000; // низкий уровень на выводах
_delay_ms(500); // задержка 500 миллисекунд
PORTD = B11111111; // высокий уровень на выводах
_delay_ms(500);
}
return 0;
}