Здравствуйте, разбирался с портами вот по этой ссылке: http://easyelectronics.ru/avr-uchebnyj-kurs-ustrojstvo-i-rabota-portov-vvoda-vyvoda.html. Дошел до строчки: За порт «B» отвечают три восьмиразрядных регистра PORTB, PINB, DDRB, а каждый бит в этом регистре отвечает за соответствующую ножку порта. За порт «А» таким же образом отвечают PORTA, DDRA, PINA. Это поэтому в этой распиновке у каждого имени порта не больше 8 - выводов? Просто решил углубленно изучить эту тему и для проверки хочу спросить эту мелочь? Спасибо за ответ.
Некоторых портов в регистре может вообще не быть. PC7 - как раз такой случай. Его бит в регистрах не используется.
Это верное заключение, т.к. регистры 8-мибитные. PS: по поводу неиспользуемых битов регистров, тот же PC7, их лучше не трогать -- контроллеру может "поплохеть". За все AVR говорить не буду, а вот AT90USB162 сразу уходил в аут, как только неиспользуемый бит порта PORTС3 или DDRС3 изменялся.
На Меге8 ничего не будет.Часто использую PortC как выходы и тупо инициализирую их на выход командой DDRC=FF вместо "законной" DDRC=0x7F всё работает компилятор не ругается даже.И у тини-2313 также есть "неполноценный" PortD и тоже такая же Байда прокатывает.Просто лень лезть в даташиты и считать на калке.Идея не моя подсмотрел её у Di Halta
На других камнях такое забивание может вылезти в трудноуловимые глюки, так что нужно всегда читать даташит и эррату. Иногда бывает написано, что "результатом записи такого-то значения будет неопределенное поведение", а это полная задница.
В этом месте всегда возникает недоумение - как можно так криво написать камень, чтобы в принципе было какое-то неопределенное поведение.
Мало ли, какие там заморочки могут быть. Я сейчас вожусь с камнем, на который можно либо подать 10 МГц с точностью 50ppm и работать с PLL, либо подать сколько нужно, но тогда PLL работать не будет. Тоже загадка, но приходится изворачиваться. В нем же как раз обещают неопределенное поведение, если в регистрах выставить несуществующий режим - возможно, там какие-то заделы на будущее или просто не хотели лишнюю логику пихать.
Про PLL это как раз понятно, оно по определению критично к таймингам. Вот зачем настолько сурово - вопрос.
Ну не настолько же... Хотели поставить 12 МГц - а низя. Теперь придется пинать разработчиков и выяснять, почему именно нельзя. А то вдруг все же можно в каких-то условиях, а требования введены для перестраховки и особых случаев. Отечественные камни такие отечественные...