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

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

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

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

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

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

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

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

Сообщение от AndryG Посмотреть сообщение
Автору топика могу посоветовать устроить отладку в Proteus.
Вместо пульта использовать второй контроллер.
Или VMLAB - там можно устроить нужный входной поток. (проект есть в моем архиве выше по тексту)
Я знаю этот трюк пробовал когдато, но я сейчас тестирую в железе, у меня есть самопальная отладка, так вот в ней код не работает... таймер настроен вроди бы правильно. Посмотрите пожалуйста на первой странице мой исходник, у меня таймер правильно настроен???
Реклама:
artyomugr вне форума  
Непрочитано 13.07.2011, 23:56  
AndryG
Вид на жительство
 
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
AndryG на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

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

Сообщение от AndryG Посмотреть сообщение
(хотя бы VMLAB)
Его я к сожалению вообще не знаю... а протеус кое как, очень полезный симулятор для основной отловки глюков в коде чтоб не насиловать МК использую сначала симулятор
artyomugr вне форума  
Непрочитано 14.07.2011, 12:26  
heady69
Прописка
 
Регистрация: 25.09.2009
Адрес: Ivanovo
Сообщений: 156
Сказал спасибо: 3
Сказали Спасибо 67 раз(а) в 60 сообщении(ях)
heady69 на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

Сообщение от artyomugr Посмотреть сообщение
а протеус кое как, очень полезный симулятор для основной отловки глюков в коде
Шпротеус конечно еще тот симулятор... Но для проверки работы таймера сойдет. Чтото пока никакой конкретики не видно. На данный момент с чем затыка? Частота таймера не та?
Или обработка прерываний от IR? Попробуйте в программе обработки прерывания от таймера менять состояние какого нибудь порта. В протеусе на осциле будет видно с какой частотой происходит обработка прер. таймера. На МК проверте fuses, может от внутр. генератора работает.

Последний раз редактировалось heady69; 14.07.2011 в 12:31.
heady69 вне форума  
Непрочитано 14.07.2011, 12:48  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Помогите пожалуйста разобраться :(

Сообщение от MisterDi Посмотреть сообщение
Кроме того, я не увидел присваивания начального значения переменной data_code, а надеяться на компилятор - ИМХО не очень хорошая практика.
Работа компилятора должна соответствовать принятому стандарту. Инициализация - чётко расписана. А именно: если переменная глобальная, то она буде проинициализирована. Ели не указано инициирующее значение при объявлении, то эта переменная будет инициализирована 0. Кроме того будут инициализированы временные переменные объявленные как static.
SasaVitebsk вне форума  
Эти 2 пользователя(ей) сказали Спасибо SasaVitebsk за это сообщение:
AndryG (15.07.2011), artyomugr (15.07.2011)
Непрочитано 14.07.2011, 13:03  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

Сообщение от artyomugr Посмотреть сообщение
if (TCNT0›40 && TCNT0‹80) { PORTB.0 = ~PORTB.0;}
тут мы читаем значение счетчика
В целом - такой подход неверен. Правильнее сначала считать значение таймера в промежуточную переменную, а потом её обрабатывать. В противном случае ухудшается точность, по понятным причинам. И чем выше частота таймера, тем больше.

Таймер 88 меги позволяет захватывать на лету (здесь описано), считать от и до. Почитайте внимательно даташит (раздел таймера). Он очень внятный и простой. Намного удобнее будет работать.

Рекомендую константы (определяющие интервалы) вынести в отдельный хидер. Для простоты инициализации и наглядности можно пользоваться такой записью:
TCNT0 = (uint8_t) - WAIT_STRT // где WAIT_STRT например 15. Таким образом вы задаёте интервал таймера до переполнения 15 тактов, что очень удобно. Если у вас ещё будут константы определяющие длительность такта процессора (частоту), то можно все задержки привести к реальным цифрам и записывать их в формулах. Я обычно так и делаю. Таким образом переход на другой кварц у меня приводит только к изменению одной константы - частоты процессора.
SasaVitebsk вне форума  
Непрочитано 15.07.2011, 01:04  
AndryG
Вид на жительство
 
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
AndryG на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

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

Сообщение от heady69 Посмотреть сообщение
На МК проверте fuses, может от внутр. генератора работает.
так у меня на внутренний генератор и настроена работа МК. Частота 8мегагерц так на внутренний ген. работать будет? Много декодеров самопальных видел, большинство работают на внутренний ген.
artyomugr вне форума  
Непрочитано 15.07.2011, 15:38  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Помогите пожалуйста разобраться :(

Сообщение от SasaVitebsk Посмотреть сообщение
Работа компилятора должна соответствовать принятому стандарту. Инициализация - чётко расписана. А именно: если переменная глобальная, то она буде проинициализирована. Ели не указано инициирующее значение при объявлении, то эта переменная будет инициализирована 0. Кроме того будут инициализированы временные переменные объявленные как static.
Вот я так и представлял работу компилятора, и честно был удивлен тем что компиль может не присвоить ей значения...
artyomugr вне форума  
Непрочитано 15.07.2011, 15:51  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Помогите разобраться с таймером в Atmega8

Сообщение от AndryG Посмотреть сообщение
Такс ... ну, давайте нчнем с начала - с алгоритма
Опишите, как Вы видите решение задачи. Не используя куски кода - на простом человеческом.
Здравствуйте! Давайте
Алгоритм вижу такой.

Настраиваем прерывание на спад.
При срабатывании прерывания запускаем таймер.
При следующем останавливаем и считываем, ставим флаг если попали в интервал, и запускаем снова таймер...
дальше читаем и если попали в интервал 1200мкс ставим еденицу, если попали в интервал 600мкс. ставим ноль если не попали ни в один из этих интервалов останавливаем таймер сбрасываем таймер и обнуляем все флаги и переменные.

Повторяю, пробовал 100 тыщ мильенов раз разные способы, нихрена не работает код.....

потом начал уже пробовать сам стартовый импульс ловить для индикации использовал поджигание светодиода я знаю отчетливо что старт бит сони равен 2400мкс. настроил и таймер правильно и тактовую правильно, нифига не работает, я думал что с ума сойду....

так когда старт бит ловил светодиод поджигался и от сони пульта и от других пультов, делаю уже интервал, не фиксируется никакой пульт..

Что мне нужно (самое минимальное!) Это кусок кода который будет фиксировать стартовое условие и игнорировать остальные импульсы, у меня просто такое предчувствие что прерывание не справляется с обработкой данных....
artyomugr вне форума  
 

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

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

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


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