Pro Micro на Atmega32u4

Vitalmsk
Offline
Зарегистрирован: 04.05.2018

Необходимо на пинах 4,5,6,7 (Pro Micro на Atmega32u4) организовать перебор по 16 адресам (т.е. пройтьсь от 0 до F) Понятное дело, что работа с регистрами. На UNO проблем нет, а на Atmega32u4 затык.  Для проверки делал:

DDRD = DDRD | 0xfc;

PORTD = B1111100;

Дает 1 только на 4 пине.

Простите первый раз на форуме, как все правильно оформлять еще не научился.

Green
Offline
Зарегистрирован: 01.10.2015

Ну так и играйтесь пинами. А если хочется напрямую, т.е., менять одновременно, то используйте выводы одного порта.

Vitalmsk
Offline
Зарегистрирован: 04.05.2018

Спасибо! Вот я и играюсь регистром. Для проверки я работаю с регистром D. Насколько я понимаю команда DDRD = DDRD | 0xfc; устанавливает цифровые пины регистра D нв выход кроме 0 и 1. Команда PORTD = B1111100; устанавливает в 1 все цифровые пины регистра D в 1 кроме 0 и 1, а у меня устанавливается в 1 только 4 пин. Хотя если я работаю не с регистром, а digitalWrite(pin,HIGH) то все нормально со всеми пинами. Аналогично и для регистров B и С вот поэтому и обратился с вопросом. Еще раз нопомню, что с UNO все работает как часы, а вот с Pro Micro на Atmega32u4 при простом переносе программы с UNO все и встало!!!!

Green
Offline
Зарегистрирован: 01.10.2015

Вы сопоставьте выводы порта с пинами. Они разные на Уно и Микро.

Vitalmsk
Offline
Зарегистрирован: 04.05.2018

А как? если Я хочу работать через регистры.

Green
Offline
Зарегистрирован: 01.10.2015
Vitalmsk
Offline
Зарегистрирован: 04.05.2018

Действительно тяжело ...)) Повторюсь я работаю с регистром D а проверяю установку на всех пинах и результат ... Ну уж подскажи для совсем бестолковому.

Green
Offline
Зарегистрирован: 01.10.2015

Vitalmsk пишет:
Необходимо на пинах 4,5,6,7 (Pro Micro на Atmega32u4) организовать перебор по 16 адресам (т.е. пройтьсь от 0 до F)...

Смотрим книгу - видим...
2,3 - заняты
5,6 - отсутствуют
4 - работает, осталось найти 7, не?
Удачи!

roman2712@mail.ru
Offline
Зарегистрирован: 16.01.2014

ноги, которые вас интересуют порта на Pro Micro на Atmega32u4 разведены подругому. Смотрите приложенную ранее ПДФку. Хотите работать с портом напрямую и что бы пины шли подряд, возьмите порт F.  

A3 - PF4 

A2 - PF5

A1 - PF6

A0 - PF7

Устанавливая PORTD = B1111100, вы ставие в 1 с 2 по 7 ногу порта, но на Pro Micro на Atmega32u4 разведены только 0,1,2,3,4,7 (5, 6 не разведены на выходы платы, 7 на другом пине, не на том котором Вы ожидаете)

Vitalmsk
Offline
Зарегистрирован: 04.05.2018

После экспериметов со всеми известными регистрами составил таблицу соответствия бит регистров и ног. Теперь все получится. Спасибо за помощь.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Vitalmsk пишет:

После экспериметов со всеми известными регистрами составил таблицу соответствия бит регистров и ног. Теперь все получится. Спасибо за помощь.

Сам, небось, составил? Трудился долго? Малацца!

Vitalmsk
Offline
Зарегистрирован: 04.05.2018

Кстати, я даже выяснил как зажечь/потушить RX, TX которые на плате. 

Green
Offline
Зарегистрирован: 01.10.2015

И тоже методом тыка, небось?

bwn
Offline
Зарегистрирован: 25.08.2014

Green пишет:

И тоже методом тыка, небось?

Ну что вы, лабораторного эксперимента.))))

Vitalmsk
Offline
Зарегистрирован: 04.05.2018

О сколько нам открытий чудных

Готовят просвещенья дух

И опыт, сын ошибок трудных,

И гений, парадоксов друг,

И случай, бог изобретатель...

                           А.С Пушкин.