Вопрос для проверки себя...

Тема в разделе "Микроконтроллеры AVR", создана пользователем Mestniy, 4 апр 2016.

  1. Mestniy

    Mestniy Гуру

    Здравствуйте, разбирался с портами вот по этой ссылке: http://easyelectronics.ru/avr-uchebnyj-kurs-ustrojstvo-i-rabota-portov-vvoda-vyvoda.html.
    Дошел до строчки:
    За порт «B» отвечают три восьмиразрядных регистра PORTB, PINB, DDRB, а каждый бит в этом регистре отвечает за соответствующую ножку порта. За порт «А» таким же образом отвечают PORTA, DDRA, PINA.
    Это поэтому в этой распиновке у каждого имени порта не больше 8 - выводов?
    Просто решил углубленно изучить эту тему и для проверки хочу спросить эту мелочь?
    Спасибо за ответ.
     

    Вложения:

    • port-pins.gif
      port-pins.gif
      Размер файла:
      14,1 КБ
      Просмотров:
      609
    Viquis нравится это.
  2. Mestniy

    Mestniy Гуру

    Если мое суждение верно, то один бит на пине PCx - свободен(нет PC7)?
     
    Viquis нравится это.
  3. Megakoteyka

    Megakoteyka Оракул Модератор

    Некоторых портов в регистре может вообще не быть. PC7 - как раз такой случай. Его бит в регистрах не используется.
     
    Mestniy нравится это.
  4. Mestniy

    Mestniy Гуру

    Верное заключение?
     
    Viquis нравится это.
  5. AlexU

    AlexU Гуру

    Это верное заключение, т.к. регистры 8-мибитные.

    PS: по поводу неиспользуемых битов регистров, тот же PC7, их лучше не трогать -- контроллеру может "поплохеть". За все AVR говорить не буду, а вот AT90USB162 сразу уходил в аут, как только неиспользуемый бит порта PORTС3 или DDRС3 изменялся.
     
    Mestniy нравится это.
  6. Mestniy

    Mestniy Гуру

    что вы!? и в мыслях не было. Я просто хотел уточнить))))
     
    Viquis нравится это.
  7. Airbus

    Airbus Радиохулиган Модератор

    На Меге8 ничего не будет.Часто использую PortC как выходы и тупо инициализирую их на выход командой DDRC=FF вместо "законной" DDRC=0x7F всё работает компилятор не ругается даже.И у тини-2313 также есть "неполноценный" PortD и тоже такая же Байда прокатывает.Просто лень лезть в даташиты и считать на калке.Идея не моя подсмотрел её у Di Halta
     
    ostrov нравится это.
  8. ostrov

    ostrov Гуру

    Да, несуществующие биты игноятся, я тоже сперва пугался, а потом забил.
     
  9. Megakoteyka

    Megakoteyka Оракул Модератор

    На других камнях такое забивание может вылезти в трудноуловимые глюки, так что нужно всегда читать даташит и эррату. Иногда бывает написано, что "результатом записи такого-то значения будет неопределенное поведение", а это полная задница.
     
  10. Unixon

    Unixon Оракул Модератор

    В этом месте всегда возникает недоумение - как можно так криво написать камень, чтобы в принципе было какое-то неопределенное поведение.
     
  11. Megakoteyka

    Megakoteyka Оракул Модератор

    Мало ли, какие там заморочки могут быть. Я сейчас вожусь с камнем, на который можно либо подать 10 МГц с точностью 50ppm и работать с PLL, либо подать сколько нужно, но тогда PLL работать не будет. Тоже загадка, но приходится изворачиваться. В нем же как раз обещают неопределенное поведение, если в регистрах выставить несуществующий режим - возможно, там какие-то заделы на будущее или просто не хотели лишнюю логику пихать.
     
  12. Unixon

    Unixon Оракул Модератор

    Про PLL это как раз понятно, оно по определению критично к таймингам. Вот зачем настолько сурово - вопрос.
     
  13. Megakoteyka

    Megakoteyka Оракул Модератор

    Ну не настолько же... Хотели поставить 12 МГц - а низя. Теперь придется пинать разработчиков и выяснять, почему именно нельзя. А то вдруг все же можно в каких-то условиях, а требования введены для перестраховки и особых случаев. Отечественные камни такие отечественные... :)