глюки в протеусе

Тема в разделе "WASM.ELECTRONICS", создана пользователем cupuyc, 13 дек 2009.

  1. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    написал апликуху для генерации шимов на avr gcc для atmega32, собрал схему в протеусе (version 7.5 sp3). шимы генерируются, но довольно часто подглючивает. причём, такое ощущение, что подглючивает сам протеус.

    глючит следующим образом: OCR1B = 76С0, а прерывание sig_output_compare1b срабатывает при TCNT1 = 5dF3. вообще, значение OCR1B я изменяю при переполнении счётчика. в даташите написано, что сравнение происходит на каждый такт.

    может ли такое быть, что протеус просто коряво генерирует прерывания, не утруждая себя сравнениями на каждый такт? может есть другие средства отладки, помимо протеуса, чтобы быть увереным что именно глючит: прога или эмулятор?
     
  2. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    cupuyc
    avr gcc очень любит глючить при включённой оптимизации. Еще, не помню как в atmega, но в xmega при записи в некоторые регистры устройств размером более одного байта, запись нужно начинать с младшего байта и записывать все байты значения, потому что там используются буферные регистры, из которых данные переносятся в регистры устройства только при записи старшего байта, чтобы обеспечить атомарность. Завтра может внимательнее посмотрю как там шимы генерируются.
     
  3. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    эмулятор - скорее всего. Бывали у меня проекты (AtMega8) в реале работает, а на модели х...
    Или с точностью до наоборот. Модель пашет - железяка дохлая.

    Ну это на первый взгляд. Начинаешь копать и оказывается, что глючит всё сразу, и эмулятор и прога шалит.
    Очень частая ошибка - это обработка прерываний. Забыл где то регистр сохранить, или еще хуже пишеш в регистр (в прерывании) который сейчас используется в основной проге. Было у меня парочку такого рода глюканов когда свою ОС писал. Долго парился, выяснял в чем дело. То прога работает долго и не глючит, дописываю пару строк, вылетает почти сразу. Вытираю их, добавляю один NOP - тоже вылетает. Думаю как NOP может влиять на работоспособность всей проги? Целый день потратил. Это был ППЦ.
    Оказалось всё очень даже просто было в проге одно "мрачное" место в 3 такта. Если было прерывание именно там то всё вылетало. Можешь прикинуть какая вероятность того, что это "блин" прерывание и именно одно (Таймер 1) будет за эти 3 такта (за 375 нс). И, таки, оно каким то образом происходило именно в этом месте.

    IHMO: Посмотри свою прогу, и не доверяй на 100% всяким там эмуляторам.
    Удачи.

    ЗЫ: Я не наСильник - по этому ничем не смогу тебе помочь. Пишу на асме.
     
  4. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    Black_mirror
    А мне кажется что чтение, а запись со старшего.

    PDF...
     
  5. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    вобщем, скорее всего, придётся проверять на железяке... сейчас новый протеус скачаю - посмотрю как на нём будет пахать...
    Это я всё к тому, что протеус, насколько я понимаю, глючит довольно часто и особо доверять ему нельзя... так?
     
  6. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    Я как раз это и имел ввиду.
    Доверяй лучше своему опыту и здравому смыслу.
     
  7. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    S_Alex
    Ну я честно сказал что про atmega не помню, просто указал что на этот момент нужно более пристальное внимание обратить. А для xmega вот что doc8077.pdf говорит:
     
  8. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    Black_mirror
    Да про регистры то я знаю. Я не думаю, что avrgcc про это не знает. Думаю, дело не в этом.
     
  9. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    да, видать, дело в протеусе, т.к. на VMLAB всё пучком.