Порт В в Atmega 328

Тема в разделе "Микроконтроллеры AVR", создана пользователем a1000, 23 мар 2019.

  1. a1000

    a1000 Гик

    После забав с ардуино решил немного заглянуть глубже в мир микроконтроллеров. А именно заглянуть в ассемблер. Возник абсолютно нубский вопрос, но как-то ответа нигде не нашёл. Решил спросить тут.
    В Atmega 8 и 328 порт В имеет 8 выводов. Но если использовать внешний кварц PB6 и PB7 занимаются этим кварцем. Теперь собственно вопрос - если конфигурировать порт В на вход или на выход целиком это ни как не повлияет на работоспособность кварца?
     
  2. Asper Daffy

    Asper Daffy Гуру

    Никак, при условии, что кварц используется (прописан во фьюзах). А вот если кварц не использовать, то эти пины можно использовать как обычные GPIO
     
    DetSimen нравится это.
  3. a1000

    a1000 Гик

    Спасибо. Если я понял правильно - если фьюзами прописано тактирование от внешнего кварца, PB6 и PB7 не доступны программисту.
     
  4. Airbus

    Airbus Радиохулиган

    Можно и в ардуино высвободить эти два пина.Там ЕМНИП надо фьюзы другие и другой бутлоадер.Пошукаю ссылку где то видел но сам не пробовал.Типа так

     
    Последнее редактирование: 23 мар 2019
  5. Asper Daffy

    Asper Daffy Гуру

    Таки, да.
     
    Andrey12 нравится это.
  6. a1000

    a1000 Гик

    Спасибо за консультацию.
    Возник следующий вопрос. Он немного не соответствует теме, но что-бы не плодить новые темы спрошу здесь.
    Взял я Atmega 8 и что-бы сильно не вникать в конфигурацию fuse-битов на страничке http://homes-smart.ru/index.php/oborudovanie/arduino/avr-zagruzchik создал Bootloader под свой камень и залил fuse в соответствии с полученными. Всё бы ничего, но эта конфигурация предусматривает место под загрузчик. В даташите прочитал следующее "При размещении векторов прерываний в области загрузчика к значениям, указанным в таблице, следует прибавить значение начального адреса области загрузчика." На данный момент у меня такая конфигурация
    [​IMG]
    Для того, что-бы программа начиналась с нулевого адреса, как я понял, бит BOOTRST на надо установить в 1 (снять галочку). А вот что делать с BOOTSZ1 b BOOTSZ0?
    Если где-то можно подробно прочесть о fuse-битах ткните пальцем. А то везде описание типа - эти биты отвечают за выделение памяти под загрузчик и всё.
     
  7. parovoZZ

    parovoZZ Гуру

    так в апноутах всё есть.

    Вот здесь не понял:
    Так есть загрузчик или нет?
    Определяют размер области под загрузчик.
     
  8. a1000

    a1000 Гик

    Когда на указанном сайте создаёшь Bootloader там так-же создаётся текстовый блок для файла boards.txt. В нём, кроме всех прочих параметров, указаны значения fuse-битов которые дудка из Arduino IDE должна загрузить в камень при записи загрузчика. В моём случае
    a8_8MHz.bootloader.low_fuses=0xbf
    a8_8MHz.bootloader.high_fuses=0xdc

    Вот эти значения я и залил используя AVRDUDEPROG. Загрузчик я не записывал, но битом BOOTRST он у меня объявлен. Следовательно адреса прерываний не совпадут со стандартными.
    Есть книга Евстифеева "Микроконтроллеры AVR семейства Mega" В ней говорится, что если BOOTRST = 1, то вектор сброса располагается в самом начале памяти программ по адресу $0000. в то-же время там приведена таблица
    [​IMG]
    теперь более конкретный вопрос - если BOOTRST = 1 то на эту таблицу можно забить и нам по барабану в каком положении BOOTSZ1 и BOOTSZ0?
     
  9. Airbus

    Airbus Радиохулиган

    На этом сайте косячные бутлоадеры и некоректные фьюзы.Под Мегу 8 по крайней мере.Я один раз попал больше не пользуюсь.Может уже и исправили.
    ТС спрашивал-мне не надо.Я могу и на асме написать.Насчет женщины это больше про регистры похоже.Это к Вам ближе
     
  10. Asper Daffy

    Asper Daffy Гуру

    Не хочешь вникать - бросай это дело и возвращайся к ардуино. Хочешь работать с голыми контроллерами - придётся вникать по самые уши. По другому не бывает.
     
    Andrey12, Belkin, DetSimen и ещё 1-му нравится это.
  11. a1000

    a1000 Гик

    Я это уже понял. По этому и спрашиваю. Но, как и все спрашивающие на данном форуме, на конкретный простой вопрос
    получаю пространные рассуждения о совершенно левых вещах. В последнее время, к сожалению, это стало традицией форума. Посмотрите, к примеру, эту тему
    http://forum.amperka.ru/threads/Анти-дребезг-для-кнопок-с-разным-назначением.18036/
    Человек попросил помощи с конкретным скетчем и во что это вылилось. Чем ему помогли высокообразованные гуру? Пришлось мне малограмотному самоучке связаться с ним в личке и подправить код. У меня ушло минут 15-20. Может я и не совсем идеально, с точки зрения некоторых корифеев, это сделал, но у человека есть работающий код нормально решающий его задачу.
    У некоторых началось обострение звёздной болезни и это может привести к вырождению форума. Грустно, он мне очень нравился.
     
    znamen нравится это.
  12. ИгорьК

    ИгорьК Давно здесь Команда форума

    Форум - место для общения, а не несения повинности по ответам на запросы.
     
    Asper Daffy нравится это.
  13. parovoZZ

    parovoZZ Гуру

    Ну так давай обратимся к даташиту. А в нем написано, что область загрузчика занимает старшие адреса. Соответсвенно, если мы реснтимся на нулевой адрес, то и пофигу, какая область памяти отведена под загрузчик - мы в неё по ресету не попадаем.
     
  14. a1000

    a1000 Гик

    Ну вот, просто, кратко и понятно. Благодарю за консультацию.:)
     
  15. Airbus

    Airbus Радиохулиган

    Как же без повыЕживаться?
     
  16. parovoZZ

    parovoZZ Гуру

    Где это я так?
     
  17. Airbus

    Airbus Радиохулиган

    Да везде.Вот если бы сразу отвечал чтсто и конкретно стал бы народным любимцем как ИгорьК
     
  18. a1000

    a1000 Гик

    Очевидно знания должны доставаться только с определённым усилием. Наверное так лучше запоминаются.
     
    parovoZZ нравится это.
  19. parovoZZ

    parovoZZ Гуру

    Талант надо раскрыть.
     
  20. DetSimen

    DetSimen Гуру

    Лучше раскрывать с головы. Так надежнее :)