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

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

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

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

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

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

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

 
Опции темы

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

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

Исторически сложилось так, что в основном работал с продукцией Микрочипа и Интела. Сейчас Altera NIOS-II.
Реклама:
__________________
misterdi<@>i.ua
MisterDi вне форума  
Непрочитано 13.07.2011, 00:19  
AndryG
Вид на жительство
 
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 306
Сказал спасибо: 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.RUN
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,284
Сказал спасибо: 441
Сказали Спасибо 1,040 раз(а) в 701 сообщении(ях)
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
Адрес: Украина
Сообщений: 306
Сказал спасибо: 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, время: 20:05.


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