Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Помогите разобраться с таймером в Atmega8

Непрочитано 16.07.2011, 20:40  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

Сообщение от SasaVitebsk Посмотреть сообщение
Обычно я не просматриваю длинные проги - как правило это пустая трата времени. А автор должен локализовать проблему и сжато её представить публике. Но сейчас я в отпуске. )) Глянул - проникся. ))) Автор суров!!!!
Этож каким надо быть монстром, чтобы так кодить. )))

п/п __sign, как писал незабвенный Гашек - это "один и не самый яркий пример того, какие ослы ещё рождаются под луной".

Обычно реализуется так ...
unsigned char const Digit[16] = {0x77, 0x05,... };
вместо __sign(a), к примеру, пишется
PORTB = Digit[a];

п/п __print - это надо полагать пример динамической индикации, в понимании автора. Я не кровожадный человек, но в некоторых странах мира, за такое бы казнили всю семью.

Если вы, artyomugr, планируете и дальше этими исходниками пользоваться, то в принципе могу помочь. Но всётаки общие рекомендации я бы дал совершенно другого плана.

===
Но для начала вопрос по аппаратной части. Там фотоприёмник должен быть с тем же фильтром, что и пульт. Это соблюдено?

Здравствуйте! =)

Вот и я в шоке с этого исходника... Но мне он понравился своей понятностью... Но вот он не рабочий это сто процентов, я еще в протеусе в этом убедился! Вот примерчик бы понятный как данные фиксировать определенной длительности...
Реклама:
artyomugr вне форума  
Непрочитано 16.07.2011, 20:49  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

Сообщение от SasaVitebsk Посмотреть сообщение
В вашем варианте он равен 8МГц/256/3 = 96 мкс.
Так так стоп... а почему еще нужно делить на 3 ?????!!!

TCCR0=0x04;
TCNT0=0xFD; // 253

что то я запутался..... нужно ведь делить на два?
А таймер я как раз и настраивал на частоту 31.250кГц
Попробую перелопатить значения переменной tick кто мне понятным языком расскажет алгоритм декодера sony sirc ?
С ув. Артем
artyomugr вне форума  
Непрочитано 16.07.2011, 20:52  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

Сообщение от SPKostenko Посмотреть сообщение
Вы пытаетесь отловить стартовый импульс длительностью: 96 мкс х 55= 5,280 мс, тогда как длительность стартовой последовательности всего 3 мс (2,4 мс + 0,6 мс), рекомендую :" if (tick ›= 29 && tick ‹ 35) " , дальше все приблизительно попадает, но у меня так " if (tick ›= 10 && tick ‹ 16 && start_cond)" и " if (tick ›= 22 && tick ‹ 28 && start_cond)". В Протеусе при таких значения все работает , а если что-то не так, то достаточно легко прочитать значение "tick" и сделать соответствующие изменения.
Вот спасибо Вам огромнейшее!!! Сегодня дома попробую!
artyomugr вне форума  
Непрочитано 16.07.2011, 20:56  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

Сообщение от MisterDi Посмотреть сообщение
Для работы с ИК рекомендую прогу RсЕxplorer сильно облегчает жизнь при отладке приема/передачи.
Спасибо Вам большое! Скачаю, попробую. У меня на компе есть winlirc Помогает сильно! Есть какие то приемущества в Вашей программе по сравнению с этой?
artyomugr вне форума  
Непрочитано 16.07.2011, 20:59  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

Сообщение от SPKostenko Посмотреть сообщение
К сведению, вы используете 12-битный вариант протокола в программе, но ведь есть и 15- и 20-битные варианты протокола , может быть есть смысл уточнить по пульту
Нет именно 12бит! Пульт самодельный, я и кода посылки знаю, собран он на пике (пик10ф200) Не помню на каком сайте нашел прошивку и схему, я его повторил. Но вот недавно захотел повторить уже имеющийся пульт только захотелось написать код самому, под атмегу и отправлять те самые кода посылок. У меня это получилось. У меня есть декодер для управления двумя реле (тоже с того сайта), вот я и хочу сделать декодер, хотя бы для того чтоб разобраться с таймером и дополнительно набраться опыта в программировании.

Последний раз редактировалось artyomugr; 16.07.2011 в 21:03.
artyomugr вне форума  
Непрочитано 16.07.2011, 21:06  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

Сообщение от CodeNameHawk Посмотреть сообщение
Посылка пульта выглядит так
Вам надо отловить стартовый импульс.
Первое прерывание у вас в точке 1, итог стартовый импульс потерян.
Декодирование будет работать и без стартового импульса, но это как то не "кошерно".
Что то я и с прерываниями запутался...

Разве прерывание не сработает когда придет стартовый импульс (лог 0) 2400мкс? я же настраиваю на спад, значит должно сработать по низкому уровню, переходом с высокого на низкий... у нас был лог. 1 а станет лог. 0 разве tick не начнет тикать?? =)
artyomugr вне форума  
Непрочитано 16.07.2011, 21:33  
SasaVitebsk
Гражданин KAZUS.RUN
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

Сообщение от artyomugr Посмотреть сообщение
Так так стоп... а почему еще нужно делить на 3 ?????!!!

TCCR0=0x04;
TCNT0=0xFD; // 253

что то я запутался..... нужно ведь делить на два?
Именно на 3 так как 256-253 =3. Переполнение таймера.
Именно по этому я и рекомендовал запись типа (unsigned char) - 3. Было бы нагляднее.
===
Вот зачем вы мучаетесь одновременно ковыряясь в разных участках программы? Поясните?
Отладка осуществляется последовательно. Например в своей программе в прерываниях инвертируйте какую нибудь ногу и посмотрите осцилографом что получилось. Если вы не уверены в правильности формирования задержек. Отладили этот момент - и больше к нему не возвращаетесь, так как уверены в нём.
SasaVitebsk вне форума  
Непрочитано 16.07.2011, 21:50  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

Сообщение от SasaVitebsk Посмотреть сообщение
Именно на 3 так как 256-253 =3. Переполнение таймера.
Именно по этому я и рекомендовал запись типа (unsigned char) - 3. Было бы нагляднее.
===
Вот зачем вы мучаетесь одновременно ковыряясь в разных участках программы? Поясните?
Отладка осуществляется последовательно. Например в своей программе в прерываниях инвертируйте какую нибудь ногу и посмотрите осцилографом что получилось. Если вы не уверены в правильности формирования задержек. Отладили этот момент - и больше к нему не возвращаетесь, так как уверены в нём.
Вот если бы был овцелограф... я-бы наверное уже решил проблему...
А так приходится мучить в слепую...
Теперь я понял почему на три делится , спасибо Вам!
artyomugr вне форума  
Непрочитано 17.07.2011, 02:03  
AndryG
Вид на жительство
 
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 306
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
AndryG на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

Мысль прозвучала выше "не стоит останавливать таймер, пусть считает тики, а в нужное время их (тики) сбрасывать".
В таком случае можно отловить и разрыв пакета (если интервал между импульсами больше стандартного) и автоповтор (при зажатой кнопке пакеты посылаются в SIRC с определенным интервалом)
Но тут есть важное замечание! Нельзя допускать переполнение счетчика тиков. Нужно останавливать счет (просто не увеличивать значение) спустя время "пульт потух и все кнопки давно отпущены".

По поводу кода. Тоже присоединяюсь к мысли настроить перывание на изменение уровня и уже в прерывании смотреть фронт это или спад.

Дабы разобраться с таймером и его настройками, предлагаю настроить таймер по примеру моего кода (начало темы) - я помню, что те задержки я расчитывал в Экселе, дабы поддерживать максимально уход от стандартных таймингов и при этом не путать ноль с единицей и корректно определять стартовый.

Если нет осцилла -- COM Вам в руки
В данном случае это замечательный вариант отладки - можно увидеть, что и в какой последовательности делает Ваш код.

Последний раз редактировалось AndryG; 17.07.2011 в 02:06.
AndryG вне форума  
Непрочитано 17.07.2011, 15:06  
SPKostenko
Частый гость
 
Регистрация: 08.08.2008
Сообщений: 16
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
SPKostenko на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

Я бы задачу разделил на 2 части : 1-я - отладить и запустить программу виртуально , исходник (оригинал), который Вы указали прекрасно работает в Протеусе с моими исправлениями
if (tick ›= 29 && tick ‹ 35) ...

if (tick ›= 10 && tick ‹ 16 && start_cond) ...

if (tick ›= 22 && tick ‹ 28 && start_cond) ...
сам код в том же проекте Протеуса сделал на другой Мега 8, кроме того для удобства чтения в Протеусе при отладке, я исправил
volatile int tick , volatile char addr , volatile char cmd , что позволяет при отладке легко прочитать tick , addr , cmd, затем во 2-й части разобраться с железом - какое питание?, как установлены фьюзы?, кроме того смущает , что Ваш пульт - самоделка, убедиться выдает ли он то, что надо. В 1-й части проблем не вижу - все работает.
SPKostenko вне форума  
Сказали "Спасибо" SPKostenko
artyomugr (17.07.2011)
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться ,АЦП Тину 13, что то не так... Botan Микроконтроллеры, АЦП, память и т.д 2 14.09.2010 18:31
Помогите разобраться с таймером begun Proteus 1 11.04.2010 19:07
Помогите разобраться с импульсными стабилизаторами Vas2 Источники питания и свет 8 07.12.2007 17:27
pic16f870 - Помогите разобраться с таймерами bopohok Микроконтроллеры, АЦП, память и т.д 9 02.05.2007 16:50
кто пользуеться VMLABом. помогите разобраться... zuuuuk Proteus, KiCAD и другие ECAD 1 04.10.2006 12:12


Часовой пояс GMT +4, время: 23:58.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.