Некорректно работающий таймер ATmega8

Тема в разделе "Микроконтроллеры AVR", создана пользователем losi_losi, 19 авг 2015.

  1. losi_losi

    losi_losi Нуб

    Привет всем.
    delay() Ошибается в 8 раз.
    Прошил через Arduino Uno как ISP микроконтроллер ATmega8.
    Для теста поставил стандартный скетч "Blink". Вопреки моим ожиданиям, функция delay(1000) засыпала не на 1 секудну а на ~ 8 секунд.
    При проверки ШИМ с помощью функции analogWrite() тоже было очевидно, что период ШИМ сильно увеличен: было заметно как моргает диод.
    Пробовал с другим МК (ATtiny13v) - все было корректно.
    Подскажите, как можно настроить таймер МК, чтобы можно было спокойно пользоваться адаптированным языком Arduino IDE, а не нискоуровневым Си.
    Заранее благодарен.
     
  2. iglooshtosser

    iglooshtosser Гик

    Рискну предположить что что ваша АТмега8 работает на внутреннем тактовом генераторе, как раз в 1МГц.
    Когда прошивали какую плату и какой процессор выбрали?
     
  3. losi_losi

    losi_losi Нуб

    На внутреннем, но на 8 МГц
    вот содержимое файла boards:

    atmega8noxtalfast.name=ATmega8(A) (8MHz int. RC osc, short bootloader delay, 38400 baud rate)
    atmega8noxtalfast.upload.protocol=arduino
    atmega8noxtalfast.upload.maximum_size=7168
    atmega8noxtalfast.upload.speed=38400
    atmega8noxtalfast.bootloader.low_fuses=0xe4
    atmega8noxtalfast.bootloader.high_fuses=0xc2
    atmega8noxtalfast.bootloader.path=atmega8a
    atmega8noxtalfast.bootloader.file=ATmegaBOOT.hex
    atmega8noxtalfast.bootloader.unlock_bits=0x3F
    atmega8noxtalfast.bootloader.lock_bits=0x0F
    atmega8noxtalfast.build.mcu=atmega8
    atmega8noxtalfast.build.f_cpu=8000000L
    atmega8noxtalfast.build.core=arduino:arduino
    atmega8noxtalfast.build.variant=arduino:standard
     
    Последнее редактирование: 19 авг 2015
  4. Airbus

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

    Могу предположить что для внутреннего Гены нужен другой Лодырь.Да и другие фьюзы.Посмотрите здесь http://tinyurl.com/ovjxh9a В Вашем случае low_fuses=0xa4 high_fuses=0xdc НЕХ файл можно там же скачать
     
    losi_losi нравится это.
  5. losi_losi

    losi_losi Нуб


    Большое спасибо. Проблема решена.
    Для таких же новичков, как и я, описываю свою ошибку:
    Я думал, что загрузчик=скетч для Ардуины "arduino as isp", однако загрузчиком является прошивка,
    которую нужно ставить именно на программируемый микроконтроллер перед тем, как заливать на него скетчи.
    В моем случае он был новый с корявым китовым загрузчиком.
     
  6. Unixon

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

    Зачем вам вообще нужен загрузчик, если вы все равно программатором прошивку заливаете?
     
  7. losi_losi

    losi_losi Нуб

    Я сначала залил загрузчик на новый мк с помощью Arduino IDE. А потом прошил скетч на новый мк тоже через ардуину. Таймер нормализовался и проблема решилась. Usbasp'ом тоже раньше не получалось прошить эту атмегу, но после заливки загрузчика все заработало.
     
  8. Unixon

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

    Если вы загрузчик заливали через IDE, то она вам еще и фьюзы прописала.
    Какая плата была выбрана в IDE?
     
  9. losi_losi

    losi_losi Нуб

    Атмега8. Фюзы в описании платы я рассчитывал калькулятором. Я правильно понял, на будущее, что для атмег процедура заливки загрузчика в ИДЕ автоматически подбирает фьюзы, не смотря на текст в boards.txt? Или всё-таки она берёт их оттуда?
     
  10. Unixon

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

    Берет из boards.txt