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

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

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

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

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

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

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

 
Опции темы
Непрочитано 12.07.2011, 20:57  
MisterDi
Почётный гражданин KAZUS.RU
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

Исторически сложилось так, что в основном работал с продукцией Микрочипа и Интела. Сейчас Altera NIOS-II.
Реклама:
__________________
misterdi<@>i.ua
MisterDi вне форума  
Непрочитано 13.07.2011, 00:19  
AndryG
Вид на жительство
 
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
AndryG на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

Не получается вникнуть в ваш код (давно под контроллеры писал)
Основная идея.
Ловим передний фронт импульса:
- запускаем таймер, который начинает считать (sirc_t) временные промежутки
- переключаем прерывание на отлов заднего фронта импульса
Ловим задний фронт импульса:
- останавливаем таймер
- анализируем, что там насчитал таймер.
-- если четыре отсчета - это стартовый импульс - инициализируем переменные.
-- если один или два, то это информационный бит - вдвигаем его в ответ
- если мы приняли полную посылку - выставляем флаг "принято"
- переключаем прерывание на отлов переднего фронта импульса

Время переполнения таймера для подсчета временных промежутков я прикидывал в excel (не сохранился), дабы алгоритм работал с макимальным разбросом базовой ширины импульсов.
AndryG вне форума  
Непрочитано 13.07.2011, 13:03  
heady69
Прописка
 
Регистрация: 25.09.2009
Адрес: Ivanovo
Сообщений: 156
Сказал спасибо: 3
Сказали Спасибо 67 раз(а) в 60 сообщении(ях)
heady69 на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

Сообщение от artyomugr Посмотреть сообщение
Захотел реализовать декодер Sony sirc
Тут у меня кое чего по этому вопросу завалялось
Вложения:
Тип файла: rar IR-SOURCE.RAR (3.4 Кб, 68 просмотров)
heady69 вне форума  
Непрочитано 13.07.2011, 14:28  
heady69
Прописка
 
Регистрация: 25.09.2009
Адрес: Ivanovo
Сообщений: 156
Сказал спасибо: 3
Сказали Спасибо 67 раз(а) в 60 сообщении(ях)
heady69 на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

Сообщение от AndryG Посмотреть сообщение
Ловим передний фронт импульса:
- запускаем таймер, который начинает считать (sirc_t) временные промежутки
- переключаем прерывание на отлов заднего фронта импульса
Ловим задний фронт импульса:
В Вашей программе режим внешнего прерывания установлен так что будет реагировать на любое изменение сигнала с IR приемника т.е. переключать на отлов заднего или переднего фронта не надо
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Any change
// INT1: Off
GICR|=0x40;
MCUCR=0x01;
GIFR=0x40;

При входе в прер. анализируете состояние входного сигнала с IR : если 0-сбрасываете значения счетчика "тиков",иначе читаете значение счетчика т.е получаете длительность нулевого сигнала с IR приемника. Что делать с этими данными смотрите по протоколу (с чисто SONY я не работал чаще использовал протокол RC5). Кстати некоторые пульты от SONY тоже его использовали. Как известно поначалу SONY много чего из PHILIPS-а брала
А в таймере реализуется что то подобное (тупо увеличивается значение счетчика "тиков")

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0xFD; //переинициализировали таймер - отсчитывает 96мкс
if (++tick › 1200) //если насчитали более 1200 тиков (т.е. недопустимо большая длительность импульса)
{
TCCR0=0x00; //сбросили все к исходному состоянию
TCNT0=0x00;
tick = 0;
start_cond = 0;
}
}

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

Сообщение от MisterDi Посмотреть сообщение
Исторически сложилось так, что в основном работал с продукцией Микрочипа и Интела. Сейчас Altera NIOS-II.
А на Ассемблере пишете? Сколько раз пытался вьехать в Ассемблер, так и не вышло

Altera NIOS-II. - Это ПЛИС?
artyomugr вне форума  
Непрочитано 13.07.2011, 21:27  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

Сообщение от heady69 Посмотреть сообщение
В Вашей программе режим внешнего прерывания установлен так что будет реагировать на любое изменение сигнала с IR приемника т.е. переключать на отлов заднего или переднего фронта не надо
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Any change
// INT1: Off
GICR|=0x40;
MCUCR=0x01;
GIFR=0x40;

При входе в прер. анализируете состояние входного сигнала с IR : если 0-сбрасываете значения счетчика "тиков",иначе читаете значение счетчика т.е получаете длительность нулевого сигнала с IR приемника. Что делать с этими данными смотрите по протоколу (с чисто SONY я не работал чаще использовал протокол RC5). Кстати некоторые пульты от SONY тоже его использовали. Как известно поначалу SONY много чего из PHILIPS-а брала
А в таймере реализуется что то подобное (тупо увеличивается значение счетчика "тиков")

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0xFD; //переинициализировали таймер - отсчитывает 96мкс
if (++tick › 1200) //если насчитали более 1200 тиков (т.е. недопустимо большая длительность импульса)
{
TCCR0=0x00; //сбросили все к исходному состоянию
TCNT0=0x00;
tick = 0;
start_cond = 0;
}
}
Добрый вечер! Я представляю как фиксировать данные, пишу код... а он не работает.... в реале все должно работать, но увы не работает.
Вот я два исходника выложил, пожалуйста подскажите что я не так делаю? Почему код не работает? Тактовая частота настроена верно таймер тоже....
Помогите мне пожалуйста.
artyomugr вне форума  
Непрочитано 13.07.2011, 21:29  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

Сообщение от heady69 Посмотреть сообщение
Тут у меня кое чего по этому вопросу завалялось
Спасибо Вам большое! Сейчас посмотрю исходник.

У меня точь в точь исходник есть, он не будет работать так как настроен таймер не правильно, если я не прав - поправьте. В предыдущем моем сообщении есть этот исходник посмотрите.

Последний раз редактировалось artyomugr; 13.07.2011 в 21:32.
artyomugr вне форума  
Непрочитано 13.07.2011, 23:14  
MisterDi
Почётный гражданин KAZUS.RU
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

Цитата:
А на Ассемблере пишете? Сколько раз пытался вьехать в Ассемблер, так и не вышло
Раньше писал, теперь очень редко, компиляторы дают практически такой же код.
Я начинал на "Электронике Б3-21" - первый советский программируемый калькулятор, если мне не изменяет склероз, у него вся память - 9 регистров и 60 ячеек программы.
Цитата:
Altera NIOS-II. - Это ПЛИС?
Да, Контроллер, ОЗУ + периферия в одном корпусе. Очень удобно, но голова временами пухнет.
__________________
misterdi<@>i.ua
MisterDi вне форума  
Непрочитано 13.07.2011, 23:37  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

› Да, Контроллер, ОЗУ + периферия в одном корпусе. Очень удобно, но голова временами пухнет.

=)))))
У меня и от Атмелей бывает гематомы с мозгов вылазят!
Особенно когда касается вопрос ввода/вывода причем вывода 15-20линий
Сегодня закончил программу для автоматической мойки форм (три датчика уровня, две кнопки, два джампера и 20 выходов на клапана и пускателя), намучился я отлавливать и устранять глюки в коде
artyomugr вне форума  
Непрочитано 13.07.2011, 23:40  
AndryG
Вид на жительство
 
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
AndryG на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

Автору топика могу посоветовать устроить отладку в Proteus.
Вместо пульта использовать второй контроллер.
Или VMLAB - там можно устроить нужный входной поток. (проект есть в моем архиве выше по тексту)
AndryG вне форума  
 

Закладки
Опции темы

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

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, время: 22:53.


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