насчет
Код: Выделить всё
pinMode(4, OUTPUT);
digitalWrite(4, HIGH)
первый устанавливает 4 ногу на выход, второй устанавливает на ней лог 1
Код: Выделить всё
pinMode(4, OUTPUT);
digitalWrite(4, HIGH)
Это я понял. Вопрос в другом, может ли несконфигурированость даного пина привести к таким сбоям которые я написал ранее.alexsis_76 писал(а): насчет;Код: Выделить всё
pinMode(4, OUTPUT); digitalWrite(4, HIGH)
первый устанавливает 4 ногу на выход, второй устанавливает на ней лог 1
На сколько понимаю 4 пин нужен для конкретной реализации модуля ENC + SD Card, что то вроде: 1-используем SPI с ENC, иначе с SD картой.alexsis_76 писал(а):А что висит на 4 пине
ни разу не слышал чтоб конфигурация пина загоняла контроллер в такой режим
можете написать тестовую программу и запустить ее на плате например подключите светодиод к портам которые не работают и поиграть ими
Код: Выделить всё
/* Disable SD card */
Да так оно и есть. Перефразирую вопрос: могут ли быть глюки от того, что я невыключил SD карту?alexsis_76 писал(а):насколько можно судить по описанию это вывод cs карты а приведенный ниже фрагмент кода устанавливает на нем 1 т.е отключает sd карту(переводит в неактивное состояние)Код: Выделить всё
/* Disable SD card */
Результат: Плата не зависла ни разу. Но сохранялись только значения IN. OUT выставлялись ->Save->back-> опять заходим в порт->NC.Andrey_B писал(а): У меня нет Arduino, чтобы протестировать работу.
Вы можете попробовать закомментировать код, отвечающий за изменения состояний пинов, начиная с
for ( i = 0; i < IO_SIZE; i++ )
и до
// Debouncing init
Скомпилировать, прошить и снова попробовать.
Код: Выделить всё
for ( i = 0; i < IO_SIZE; i++ )
и до
// Debouncing init
Это лишь говорит о том, что причину надо искать в "железе". Не обязательно оно неисправно, возможно что-то на этих пинах "висит". Пусть разбирающиеся в Arduino что-нибудь подскажут.edka писал(а):Результат: Плата не зависла ни разу. Но сохранялись только значения IN. OUT выставлялись ->Save->back-> опять заходим в порт->NC.Andrey_B писал(а): Вы можете попробовать закомментировать код, отвечающий за изменения состояний пинов, начиная с
Код: Выделить всё
if ( port_letter == 'C' )
{
DDRC |= (1<<port_num);
if (_port_d[i] == 1 )
PORTC|= (1<<port_num);
else
PORTD &= ~(1<<port_num);
}
У меня последняя версия. И там:alexsis_76 писал(а):А почему сдесьустанавливаем порт С а сбрасываем DКод: Выделить всё
if ( port_letter == 'C' ) { DDRC |= (1<<port_num); if (_port_d[i] == 1 ) PORTC|= (1<<port_num); else PORTD &= ~(1<<port_num); }
у вас в плате непредусмотрено тактирование от сетевого контроллера возможно потребуется скнфигурировать фьюзы
Код: Выделить всё
if ( port_letter == 'C' )
{
DDRC |= (1<<port_num);
if (_port_d[i] == 1 )
PORTC|= (1<<port_num);
else
PORTC &= ~(1<<port_num);
}