???
Математика на уровне МГУ

Показано с 1 по 25 из 78

Тема: Скан-код POWER

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Старший инструктор Аватар для ZMIY
    Регистрация
    28.07.2007
    Адрес
    Магнитогорск
    Возраст
    48
    Сообщений
    3,142

    Re: Скан-код POWER

    Цитата Сообщение от LeonT Посмотреть сообщение
    И у меня!
    Поздравляю !

    А у меня наоборот - перестало работать
    Точнее перестало в другом кристале. Делал я на АТмеге16, а по задумке это основной контроллер управления и нефик его нагружать левыми задачами по приёму и дешифровке сигнала. Поэтому (на самом деле там ещё есть причины) было решено загнать эту прогу в отдельное устройство на АТмеге8, а от неё получать готовый номер кнопки по UART-у.
    Ну залил в 8-ю этот код. Не работает. Начал разбираться почему. Первая загвоздка всплыла быстро - разные вектора прерываний. Причём у 16-й двухбайтные и можно счётчик переполнения таймера прямо там сделать (inc,регистр и reti), а у 8-й однобайтные вектора, только джампами. Но это ладно, переделал. Не работает. Решил проверить что именно не работает дешифровка или UART. Набросал код, который просто байтики пересылает, а приёмник эти байты на светодиоды выводит. Всё нормально - пересылается стабильно и без ошибок. Значит загвоздка именно в программе дешифровки, как не странно. Вот только убей не пойму почему - всёж работало ! Трассирую в Студии - всё нормально. В кристале не хочет
    "У пилота есть работа - он летает самолёт" (с) М/Ф Смешарики
    Ник в WoT: Rulevoy

  2. #2
    Офицер Форума Аватар для Zorge
    Регистрация
    06.03.2004
    Адрес
    Байконур
    Возраст
    43
    Сообщений
    2,893
    Images
    10

    Re: Скан-код POWER

    Цитата Сообщение от ZMIY Посмотреть сообщение
    Значит загвоздка именно в программе дешифровки, как не странно. Вот только убей не пойму почему - всёж работало ! Трассирую в Студии - всё нормально. В кристале не хочет
    Ну так на вскидку несколько возможных причин:
    1. У ATmega8 другой адрес регистра MCUCR. Если он задавался не через файл include к соответствующему контроллеру - то нужно поправить. Многих остальных регистров тоже касается.
    2. Регистр TCСR0 у восьмерки содержит только prescaler. За всем остальным нужно ходить в другие регистры.
    3. Внешний тактовый генератор и кристалл у ней подключается к ножкам PC7 и PC6. Если на них назначить Output, или Input с подтяжками - будут глюки с частотой. Проверено. Поэтому PortC = 0b00XXXXXX, и DDRC = 0b00XXXXXX, если используется внешний тактовый генератор. Хотя, если UART работает - значит с частотой все в порядке.
    4. Вход прерывания первого таймера у него посередине корпуса (DIP), на шестой ноге. А не "с угла" (тоже DIP), как у 16-й. Ну и порт тоже другой - соответственно его надо переиначивать на input с подтяжкой или без - по требованию и подключению приемника.

    Это, кстати, еще одна из причин, по которой я не пользуюсь астмой - компилятору ЯВУ указал другой target и все - остальное "оно само думает". А тут сменил контроллер и началось - этот битик не там, а тот не здесь, а этого вообще нет, и надо извращаться как-то еще...
    Скрытый текст:
    Помнится доооолго я колотился головой в стену, пытаясь использовать порт C, после замены AT90S8515 на ATmega16, пока не прочитал внимательно datasheet и не отключил JTAG
    Крайний раз редактировалось Zorge; 30.11.2010 в 19:45.
    // 地辟于丑 - Земля рождена в час Быка

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •