Коды для пультов на attiny13
- rhf-admin
- администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
- Сообщения: 3060
- Зарегистрирован: 25 авг 2009, 23:19
- Откуда: Уфа
- Контактная информация:
Re: Коды для пультов на attiny13
Where is the source code??? (попробуем так)
Все изменения в каком коде? Пример на сайте под PIC, а ты пишешь под AVR.
Все изменения в каком коде? Пример на сайте под PIC, а ты пишешь под AVR.
С уважением, администрация сайта.
-
- Читатель
- Сообщения: 12
- Зарегистрирован: 14 мар 2012, 17:35
- Откуда: Тамбов
- Контактная информация:
Re: Коды для пультов на attiny13
Прошу прощения, что подзабил на это дело. Не было времени. Попробую все изложить аккуратно.
Итак.
Задача: зашить это в Attiny2313 и чтоб работало.
Код для Attiny13 вот тут был.
Измененный код выглядит так:
Изменения как я уже говорил минимальны.
По аппаратной части: на PB7 через транзистор висит ИК диод.
Итог: компиляция без проблем. прошивка без проблем. Реакция на нажатие кнопок - отсутствует.
Итак.
Задача: зашить это в Attiny2313 и чтоб работало.
Код для Attiny13 вот тут был.
Измененный код выглядит так:
код
По аппаратной части: на PB7 через транзистор висит ИК диод.
Итог: компиляция без проблем. прошивка без проблем. Реакция на нажатие кнопок - отсутствует.
Демократии нет и не будет!
Государство - это я!
Государство - это я!
- rhf-admin
- администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
- Сообщения: 3060
- Зарегистрирован: 25 авг 2009, 23:19
- Откуда: Уфа
- Контактная информация:
Re: Коды для пультов на attiny13
Хм, сам код вроде правильный.
Как определяется что реакции на нажатие кнопок нет? Осциллографом или каким-то интегральным фотоприёмником?
Как выставлены фьюзы? На внутренний генератор или ты в схему внешний кварц на 9,6 МГц поставил?
Камень-то другой. И внутренний генератор у него на другую частоту. Соответственно, если этот код запустить на внутреннем генераторе 2313, то все частоты ИК-импульсов съедут, включая несущую. В этом случае осциллограф будет показывать генерацию посылок (но с неправильными частотами), а фотоприёмник перестанет что-либо видеть (поскольку интегральные фотоприёмники имеют внутри полосовой фильтр и хорошо видят только сигналы на определённой частоте несущей).
Как определяется что реакции на нажатие кнопок нет? Осциллографом или каким-то интегральным фотоприёмником?
Как выставлены фьюзы? На внутренний генератор или ты в схему внешний кварц на 9,6 МГц поставил?
Камень-то другой. И внутренний генератор у него на другую частоту. Соответственно, если этот код запустить на внутреннем генераторе 2313, то все частоты ИК-импульсов съедут, включая несущую. В этом случае осциллограф будет показывать генерацию посылок (но с неправильными частотами), а фотоприёмник перестанет что-либо видеть (поскольку интегральные фотоприёмники имеют внутри полосовой фильтр и хорошо видят только сигналы на определённой частоте несущей).
С уважением, администрация сайта.
-
- Читатель
- Сообщения: 12
- Зарегистрирован: 14 мар 2012, 17:35
- Откуда: Тамбов
- Контактная информация:
Re: Коды для пультов на attiny13
Определяется камерой телефона. Для проверки схемы\ИК диода зашивал простой блинк - все светит-моргает. Кварца нет, генератор внутренний ибо все ноги на клавиатуре. Для того собственно и прижимаются все ноги. Фьюзы Low: 0xE4 High: 0xDF
Уплывающая частота, думаю, дело второе. Пока хотя бы заставить вообще работать. Думал может дело в настройках регистров\ног, но если правильно... попробую даташитики поглядеть внимательней.
Уплывающая частота, думаю, дело второе. Пока хотя бы заставить вообще работать. Думал может дело в настройках регистров\ног, но если правильно... попробую даташитики поглядеть внимательней.
Демократии нет и не будет!
Государство - это я!
Государство - это я!
- rhf-admin
- администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
- Сообщения: 3060
- Зарегистрирован: 25 авг 2009, 23:19
- Откуда: Уфа
- Контактная информация:
Re: Коды для пультов на attiny13
Насколько я понимаю, запрограммированы фьюзы SPIEN, SUT0, CKSEL3, CKSEL1, CKSEL0.
То есть стоит внутренний генератор на 4 МГц. Попробуй хотя бы на 8 МГц поменять (всё же ближе будет к 9,6).
P.S. А то, что пин PA2 работает как RESET, если его специально не выключить, надеюсь ты учитываешь? Соответственно, его нужно к питанию через резистор пристёгивать, чтобы камень в вечном ресете не висел. Это я к тому, что:
То есть стоит внутренний генератор на 4 МГц. Попробуй хотя бы на 8 МГц поменять (всё же ближе будет к 9,6).
P.S. А то, что пин PA2 работает как RESET, если его специально не выключить, надеюсь ты учитываешь? Соответственно, его нужно к питанию через резистор пристёгивать, чтобы камень в вечном ресете не висел. Это я к тому, что:
Смысл - прижать все ноги А\Д портов к земле а Б проверять
С уважением, администрация сайта.
- rhf-admin
- администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
- Сообщения: 3060
- Зарегистрирован: 25 авг 2009, 23:19
- Откуда: Уфа
- Контактная информация:
Re: Коды для пультов на attiny13
Короче, всё, что выше - неверно, я понял в чём косяк. Косяк не совсем в коде, косяк - в таблице прерываний.
У ATTiny13 - всего 10 векторов прерываний, а у ATTiny2313 - 19 штук, да и сами вектора не совпадают. Соответственно, если скомпилить код с таблицей векторов от tiny13 под 2313, то переход по вектору
будет выполняться не при переполнении таймера TIMER0, а от модуля Input Capture Unit, который нам нафиг не нужен и вообще у нас такое событие не запрограммировано. А для переполнения TIMER0 у нас в 2313 используется не 4-й вектор, а 7-й.
Короче, чтобы всё заработало - нужно исправить таблицу векторов. Для 2313 она должна выглядеть так:
У ATTiny13 - всего 10 векторов прерываний, а у ATTiny2313 - 19 штук, да и сами вектора не совпадают. Соответственно, если скомпилить код с таблицей векторов от tiny13 под 2313, то переход по вектору
Код: Выделить всё
rjmp Timer ; Timer (переход к обработч.прерывания от таймера)
Короче, чтобы всё заработало - нужно исправить таблицу векторов. Для 2313 она должна выглядеть так:
Код: Выделить всё
rjmp Init ; переход на начало программы
;-- вектора прерываний
reti ; INT0
reti ; INT1
reti ; TIMER1_CAPT
reti ; TIMER1_COMPA
reti ; TIMER1_OVF
rjmp Timer ; переход к обработч.прерывания от таймера. Вот этот вектор как раз TIMER0_OVF
reti ; USART0, TX
reti ; ANALOG_COMP
reti ; PCINT
reti ; TIMER1_COMPB
reti ; TIMER0_COMPA
reti ; TIMER0_COMPB
reti ; USI_START
reti ; USI_OVF
reti ; EE_READY
reti ; WDT_OVF
С уважением, администрация сайта.
Re: Коды для пультов на attiny13
2 rhf-admin
пользуй хидеры, не учи людей злу.
пользуй хидеры, не учи людей злу.
- rhf-admin
- администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
- Сообщения: 3060
- Зарегистрирован: 25 авг 2009, 23:19
- Откуда: Уфа
- Контактная информация:
Re: Коды для пультов на attiny13
В данном случае это добро. Пусть пока учатся - читают доки на камни. Вот когда научатся - сами догадаются как по-другому написать.
Специально для тебя:
Специально для тебя:
Код: Выделить всё
org 0 ; следующий за этой директивой код начинается по адресу 0
rjmp Init ; переход на начало программы
org OVF0addr ; по адресу вектора переполнения таймера 0
rjmp Timer ; переходим на обработчик прерывания от переполнения
org WDTaddr+1 ; следующий код будет сразу за таблицей прерываний
Init: ..... ; начало программы
С уважением, администрация сайта.
-
- Читатель
- Сообщения: 12
- Зарегистрирован: 14 мар 2012, 17:35
- Откуда: Тамбов
- Контактная информация:
Re: Коды для пультов на attiny13
Пока читал столкнулся с несовпадением таблицы векторов, но осознание не успело дойти до прочтения вашего поста. Вечером попробую и отпишусь о результате.
Демократии нет и не будет!
Государство - это я!
Государство - это я!
Re: Коды для пультов на attiny13
2 xorkrus
делай как в пр посте с применением хидеров., так буит работать на обоих чипах!.
как раз нужен для того дабы не забивать голову картой регистров и векторов
делай как в пр посте с применением хидеров., так буит работать на обоих чипах!.
Код: Выделить всё
.include "tn2313def.inc"