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

Discussion in 'WASM.ELECTRONICS' started by cupuyc, Dec 13, 2009.

  1. cupuyc

    cupuyc New Member

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

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

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

    Black_mirror Active Member

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

    S_Alex Alex

    Blog Posts:
    0
    Joined:
    Aug 27, 2004
    Messages:
    561
    Location:
    Ukraine
    эмулятор - скорее всего. Бывали у меня проекты (AtMega8) в реале работает, а на модели х...
    Или с точностью до наоборот. Модель пашет - железяка дохлая.

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

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

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

    S_Alex Alex

    Blog Posts:
    0
    Joined:
    Aug 27, 2004
    Messages:
    561
    Location:
    Ukraine
    Black_mirror
    А мне кажется что чтение, а запись со старшего.

    PDF...
     
  5. cupuyc

    cupuyc New Member

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

    S_Alex Alex

    Blog Posts:
    0
    Joined:
    Aug 27, 2004
    Messages:
    561
    Location:
    Ukraine
    Я как раз это и имел ввиду.
    Доверяй лучше своему опыту и здравому смыслу.
     
  7. Black_mirror

    Black_mirror Active Member

    Blog Posts:
    0
    Joined:
    Oct 14, 2002
    Messages:
    1,035
    S_Alex
    Ну я честно сказал что про atmega не помню, просто указал что на этот момент нужно более пристальное внимание обратить. А для xmega вот что doc8077.pdf говорит:
     
  8. cupuyc

    cupuyc New Member

    Blog Posts:
    0
    Joined:
    Apr 2, 2009
    Messages:
    763
    Black_mirror
    Да про регистры то я знаю. Я не думаю, что avrgcc про это не знает. Думаю, дело не в этом.
     
  9. cupuyc

    cupuyc New Member

    Blog Posts:
    0
    Joined:
    Apr 2, 2009
    Messages:
    763
    да, видать, дело в протеусе, т.к. на VMLAB всё пучком.