Здравствуйте, уважаемые АВР-щики!
В работе с ATmega32U4 возникла необходимость использовать порт F цифровым выходом. Настраивал следующим образом:
Первый вариант:
DDRF = B11111111;
Второй вариант:
DDRF = DDRF | B11110011; (на всякий случай, в нём нет PF2, PF3)
делаю тренировочный оператор:
PORTF = B10101010;
получаю: 11111110
В ходе анализа пришёл к выводу, что PF0 и PF1 работают правильно, а вот, что старше, - тупо пишет "1".
Что за хрень, ёрш его медь?..
Спасибо.
Вот так формирует порты CAVR : выход на единицу.
Порты F2 и F3 не описываются,
// Port F initialization
// Function: Bit7=Out Bit6=Out Bit5=Out Bit4=Out Bit1=Out Bit0=Out
DDRF=(1<<DDF7) | (1<<DDF6) | (1<<DDF5) | (1<<DDF4) | (1<<DDF1) | (1<<DDF0);
// State: Bit7=1 Bit6=1 Bit5=1 Bit4=1 Bit1=1 Bit0=1
PORTF=(1<<PORTF7) | (1<<PORTF6) | (1<<PORTF5) | (1<<PORTF4) | (1<<PORTF1) | (1<<PORTF0);
В вашем тренировочном операторе вы пытаетесь задать порты которых нет, поэтому возможно и не обрабатывается то что дальше. Попробуйте работать с каждым выходом отдельно по-битово посмотреть изменится результат?
Думаю более опытные коллеги опишут это более правильными словами.
Цитата(ikm @ Nov 16 2017, 10:59)
***
Думаю более опытные коллеги опишут это более правильными словами.
На соседнем форуме мне подсказали, что проблема в установке фьюзов. По умолчанию злосчастные пины установлены для работы с JTAG! Проверка полностью подтвердила догадку.
Спасибо.