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

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

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

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

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

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

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

 
Опции темы
Непрочитано 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.RU
 
Регистрация: 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
Адрес: Украина
Сообщений: 308
Сказал спасибо: 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:34.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot