система дистанционного управления на ATtiny 2313 "c нуля"
| |
uwrtey | Дата: Суббота, 15.12.2012, 23:37 | Сообщение # 406 |
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Статус: Offline
| Ура! Странные буки сейчас пошли! Мучают своих хозяев! А что потом ? Терминаторы? Восстание машин?
я вот тут сделал вот такой код приемника, который записывает первые пять длительностей и виснет в бесконечном цикле... результат меня разочаровал ( он постоянно разный! ) вот например /нажата первая кнопка ( импульс, единица, импульс, нуль, импульс, нуль, импульс, нуль, импульс, нуль, и т.д. ) первый раз 8441 BD19 569A 3F26 9926 второй раз FADC 3D40 8926 1A9A 8726 третий раз 8A94 B919 B873 5A9A 59E7 четвертый раз A881 8E26 8F26 9426 1A4D П.С естественно длительности выводятся на экран без пробелов ...
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Суббота, 15.12.2012, 23:41 |
|
| |
ВитГо | Дата: Суббота, 15.12.2012, 23:51 | Сообщение # 407 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| ну да, чтото странное у тебя получилось
я помню как то делал захват сигналов с приемника - у меня плюс минус 1-2 мкс было в значениях.. а у тебя гуляет на 20%
нужно переписывать захват тогда...
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Воскресенье, 16.12.2012, 01:25 | Сообщение # 408 |
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Статус: Offline
| а почему так? (что не так с этим захватом?) и как правильнее ?
не успеваю за своими мыслями......
|
|
| |
ВитГо | Дата: Воскресенье, 16.12.2012, 07:58 | Сообщение # 409 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| трудно сказать, но видно где то ошибка...
сегодня я поставлю среды разработки и попробую написать захват... возможно что где то в конвейере ошибаемся (не так последовательность обрабатываем)
у меня был проект с захватом длительностей импульсов, [блин, еще не скопировал папку проектов на этот комп] от него и буду плясать... тот проект хорошо работал на захват (я на дисплей выводил захваченные импульсы прошедшие через радиоканал - расхождение было 1-2 мкс)
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Воскресенье, 16.12.2012, 08:16 | Сообщение # 410 |
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Статус: Offline
| то есть ошибка точно в приемнике, а не в передатчике ?
не успеваю за своими мыслями......
|
|
| |
ВитГо | Дата: Воскресенье, 16.12.2012, 10:06 | Сообщение # 411 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| ну по осциллограмме ведь видно что код работает ? повторяемость временных интервалов для 0 и 1 у передатчика по осциллограмам есть ?
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Воскресенье, 16.12.2012, 11:07 | Сообщение # 412 |
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Статус: Offline
| да (судя по осциллограмме из звуковухи), значит приемник....
не успеваю за своими мыслями......
|
|
| |
uwrtey | Дата: Воскресенье, 16.12.2012, 11:57 | Сообщение # 413 |
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Статус: Offline
| может есть смысл попробоват вот такой "обрезанный" код ведь при использовании генератора импульсов на OC0A повторяемость результата была 100%
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Воскресенье, 16.12.2012, 15:32 |
|
| |
ВитГо | Дата: Воскресенье, 16.12.2012, 16:36 | Сообщение # 414 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| ну да, как отправную точку взять его...
ты проверил захватываемые им значения например с OC0A ?
после этого попробовать дописать для него функции как бы с нуля, лишь подглядывая в то что написано было ранее.. у тебя в голове все равно уже есть алгоритм и его достаточно
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Воскресенье, 16.12.2012, 17:10 | Сообщение # 415 |
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Статус: Offline
| Quote (ВитГо) ты проверил захватываемые им значения например с OC0A ?
страница 25 сообщения номер 371 и 372
вот еще раз прикреплю
не успеваю за своими мыслями......
|
|
| |
uwrtey | Дата: Воскресенье, 16.12.2012, 21:16 | Сообщение # 416 |
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Статус: Offline
| проверил вот на таком коде, результат плачевный ( постоянно разный ) в чем же может быть дело ?
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Понедельник, 17.12.2012, 07:18 |
|
| |
ВитГо | Дата: Понедельник, 17.12.2012, 12:30 | Сообщение # 417 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| давай поменяем чтение из tcnt1 сначала читаем МЛАДШИЙ байт и потом старший !!!
а то у тебя непонятно какое значение считывается в младшей части...
дальше замечание по коду такое: либо используем везде наименование регистров Rxx либо их мнемонику ! а то у тебя где temp, где R16 это не правильно, путает и запутывает !!
тоже самое и R22 и R21 - у них есть мнемоника ! вот и назови как нить по понятнее (а не temp с непонятным номером) и используй имя! например R22 можно назвать phase_flag, а R21 - rec_counter
код будет намного понятнее !
дальше, поскольку мы сейчас захватывает только 0 и 1 - давай уберем код "2" из обработки фазы ! оставляй только 0 и 1 для захвата соответственно фронта\спада импульса !
Дальше, Code ;************************************************************************************************************** ; Выход из прерывания ;**************************************************************************************************************
out_1:
cpi r21,0 ; проверяем вывели на экран или нет 5 длительностей breq out_1 ; если вывели пять раз, то циклимся (до перезагрузки) так циклиться как это сделал ты НЕПРАВИЛЬНО !! ты зациклился в прерывании !! не стоит так делать никогда !
лучше выйди из прерывания и в главном цикле сделай проверку что приняли то что хотели и отключай прерывания...
при печати принятой последовательности - после печати двух байт -напечатай символ с кодом 0x10 - это как раз пробел ! намного приятнее будет работать с результатом !
кстати такой кривой результат при захвате запросто может получиться из за того что мы в прерывании печатаем на дисплей !!
давай наверное при захвате сохраняй результат в памяти, и потом в главной программе - после захвата (после того как захватишь 5 перемен входного сигнала) - выводи на экран.. вполне может быть что просто не успеваем вывести на экран значение как происходит новое прерывание, которое будет вызвано сразу после того как обработаем и выйдем из текущего, опять приходит новое - еще больше сдвигая значение результата !!!
так что захват делай в память, и печать из главной программы после захвата !
p.s. кроме описанных выше я других косяков не вижу. алгоритм вроде правильный..
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Понедельник, 17.12.2012, 17:46 | Сообщение # 418 |
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Статус: Offline
| Quote (ВитГо) давай поменяем чтение из tcnt1 сначала читаем МЛАДШИЙ байт и потом старший !!!
дак так оно и есть
Code in XH,TCNT1L ; записываем в регистровую пару "X" число из "TCNT1" ( чтение TCNT1 с младшего байта ) in XL,TCNT1H
остальные косяки исправлю после работы...Добавлено (17.12.2012, 17:46) --------------------------------------------- вот я косяк, смотри младший байт TCNT1 записываю в старший регистр "X "
не успеваю за своими мыслями......
|
|
| |
ВитГо | Дата: Понедельник, 17.12.2012, 19:29 | Сообщение # 419 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| Quote (uwrtey) дак так оно и есть
Code in XH,TCNT1L ; записываем в регистровую пару "X" число из "TCNT1" ( чтение TCNT1 с младшего байта ) in XL,TCNT1H
ой, бл[я] !!
посмотри !!!! ты младший байт читаешь в XH !!! - в старший байт !!!!!! вот тебе и непонятки с результатом !!!!!!
Нужно читать вначале в XL потом в XH !!!!!!!
вот тебе и ответ на твой ларчик !!! - скорее всего исправишь и все заработает как надо !
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Понедельник, 17.12.2012, 20:31 | Сообщение # 420 |
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Статус: Offline
| Quote (uwrtey) вот я косяк, смотри младший байт TCNT1 записываю в старший регистр "X " surprised я в предыдущем посте это заметил....
--------------------------------------------
самое интересное то, что я этот косяк заметил недели две назад и исправил.... видимо скопировал опять откуда то....
сейчас все исправлю и посмотрим...
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Понедельник, 17.12.2012, 21:29 |
|
| |
|