Суббота, 20.04.2024, 06:27
Вы вошли как Гость | Группа "Гости"Приветствую Вас Гость | RSS
Главная | система дистанционного управления на ATtiny 2313 "c нуля" - Страница 28 - Форум | Мой профиль | Регистрация | Выход | Вход
Обитель RC-инженера
Форма входа
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: ВитГо  
Форум » Разработка электронных устройств » Разрабатываю ! » система дистанционного управления на ATtiny 2313 "c нуля" (пошаговое изучение строительства систем радиоуправления)
система дистанционного управления на ATtiny 2313 "c нуля"
uwrteyДата: Суббота, 15.12.2012, 23:37 | Сообщение # 406
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Ура! Странные буки сейчас пошли! Мучают своих хозяев! А что потом ? Терминаторы? Восстание машин? biggrin

я вот тут сделал вот такой код приемника, который записывает первые пять длительностей и виснет в бесконечном цикле...
результат меня разочаровал ( он постоянно разный! )
вот например /нажата первая кнопка ( импульс, единица, импульс, нуль, импульс, нуль, импульс, нуль, импульс, нуль, и т.д. )
первый раз 8441 BD19 569A 3F26 9926
второй раз FADC 3D40 8926 1A9A 8726
третий раз 8A94 B919 B873 5A9A 59E7
четвертый раз A881 8E26 8F26 9426 1A4D
П.С естественно длительности выводятся на экран без пробелов ...
Прикрепления: 2909695.asm (15.7 Kb)


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Суббота, 15.12.2012, 23:41
 
ВитГоДата: Суббота, 15.12.2012, 23:51 | Сообщение # 407
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
ну да, чтото странное у тебя получилось

я помню как то делал захват сигналов с приемника - у меня плюс минус 1-2 мкс было в значениях.. а у тебя гуляет на 20%

нужно переписывать захват тогда...


Виталий (аka ВитГо)
 
uwrteyДата: Воскресенье, 16.12.2012, 01:25 | Сообщение # 408
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
а почему так? (что не так с этим захватом?)
и как правильнее ?


не успеваю за своими мыслями......
 
ВитГоДата: Воскресенье, 16.12.2012, 07:58 | Сообщение # 409
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
трудно сказать, но видно где то ошибка...

сегодня я поставлю среды разработки и попробую написать захват...
возможно что где то в конвейере ошибаемся (не так последовательность обрабатываем)

у меня был проект с захватом длительностей импульсов, [блин, еще не скопировал папку проектов на этот комп] от него и буду плясать... тот проект хорошо работал на захват (я на дисплей выводил захваченные импульсы прошедшие через радиоканал - расхождение было 1-2 мкс)


Виталий (аka ВитГо)
 
uwrteyДата: Воскресенье, 16.12.2012, 08:16 | Сообщение # 410
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
то есть ошибка точно в приемнике, а не в передатчике ?

не успеваю за своими мыслями......
 
ВитГоДата: Воскресенье, 16.12.2012, 10:06 | Сообщение # 411
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
ну по осциллограмме ведь видно что код работает ?
повторяемость временных интервалов для 0 и 1 у передатчика по осциллограмам есть ?


Виталий (аka ВитГо)
 
uwrteyДата: Воскресенье, 16.12.2012, 11:07 | Сообщение # 412
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
да (судя по осциллограмме из звуковухи), значит приемник....

не успеваю за своими мыслями......
 
uwrteyДата: Воскресенье, 16.12.2012, 11:57 | Сообщение # 413
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
может есть смысл попробоват вот такой "обрезанный" код
ведь при использовании генератора импульсов на OC0A повторяемость результата была 100%
Прикрепления: priem.asm (5.9 Kb)


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Воскресенье, 16.12.2012, 15:32
 
ВитГоДата: Воскресенье, 16.12.2012, 16:36 | Сообщение # 414
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
ну да, как отправную точку взять его...

ты проверил захватываемые им значения например с OC0A ?

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


Виталий (аka ВитГо)
 
uwrteyДата: Воскресенье, 16.12.2012, 17:10 | Сообщение # 415
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Quote (ВитГо)
ты проверил захватываемые им значения например с OC0A ?


страница 25 сообщения номер 371 и 372

вот еще раз прикреплю
Прикрепления: uwrtey_ver2.asm (6.5 Kb) · VitGo_var.asm (6.4 Kb)


не успеваю за своими мыслями......
 
uwrteyДата: Воскресенье, 16.12.2012, 21:16 | Сообщение # 416
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
проверил вот на таком коде, результат плачевный ( постоянно разный )
в чем же может быть дело ?
Прикрепления: 3311123.asm (5.9 Kb)


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Понедельник, 17.12.2012, 07:18
 
ВитГоДата: Понедельник, 17.12.2012, 12:30 | Сообщение # 417
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: 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
Репутация: 11
Статус: Offline
Quote (ВитГо)
давай поменяем чтение из tcnt1
сначала читаем МЛАДШИЙ байт и потом старший !!!


дак так оно и есть

Code
    in XH,TCNT1L   ; записываем в регистровую пару "X" число из "TCNT1" ( чтение TCNT1 с младшего байта )
  in XL,TCNT1H


остальные косяки исправлю после работы...

Добавлено (17.12.2012, 17:46)
---------------------------------------------
вот я косяк, смотри младший байт TCNT1 записываю в старший регистр "X " surprised


не успеваю за своими мыслями......
 
ВитГоДата: Понедельник, 17.12.2012, 19:29 | Сообщение # 419
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: 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
Репутация: 11
Статус: Offline
Quote (uwrtey)
вот я косяк, смотри младший байт TCNT1 записываю в старший регистр "X " surprised

я в предыдущем посте это заметил....

--------------------------------------------

самое интересное то, что я этот косяк заметил недели две назад и исправил.... видимо скопировал опять откуда то....

сейчас все исправлю и посмотрим...


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Понедельник, 17.12.2012, 21:29
 
Форум » Разработка электронных устройств » Разрабатываю ! » система дистанционного управления на ATtiny 2313 "c нуля" (пошаговое изучение строительства систем радиоуправления)
Поиск:


Copyright MyCorp © 2024
Сделать бесплатный сайт с uCoz