система дистанционного управления на ATtiny 2313 "c нуля"
| |
ВитГо | Дата: Воскресенье, 07.10.2012, 22:42 | Сообщение # 46 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| на да, полную чушь написали там...
я даже больше тебе скажу: есть такой прием ручной генерации прерывания: это когда пин входного порта (то есть на котором прерывание должно срабатывать когда он является входом) конфигурируешь на ВЫВОД, и конфигурируешь прерывания по нему ! и потом когда тебе в программе нужно прерывание по входному порту (который как ты помнишь сконфигурен на вывод) - ты записываешь в этот пин порта нужное значение (то есть типа на вывод) и вуаля ! - получаешь прерывание как по входному пину от внешнего сигнала...
изврат конечно, но иногда так удобнее (я как то использовал подобное - программа сразу упростилась и даже читаться лучше стала)
а на счет документашки - бывает... просто автор сам не попробовал, а перепечатал откуда то... писать хорошие, понятные статьи тоже не просто.. в этом для меня хороший пример DiHalt с easyelectronics - у него всегда понятные статьи.. мне к сожалению до него еще далеко...
кстати именно поэтому я и люблю статьи с хорошими скриншотами - обычно по ним сразу видно сам автор писал или нет.. и когда комментарии у кода.. если комментов нет, или они скудны - то у меня всегда сомнения либо в авторстве либо в целях (нафига учить людей и не писать комменты? чтобы они поняли что им до автора далеко что ли?)
хотя, находил я недавно статью с хорошими скриншотами про генерацию видео - но часть примеров от туда все равно не заработала :-))) надеюсь про мои статьи так никто не скажет - я вроде бы все сам пишу :-)))
Виталий (аka ВитГо)
|
|
| |
ВитГо | Дата: Воскресенье, 07.10.2012, 22:45 | Сообщение # 47 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| кстати, про это
Quote Соответственно, если, скажем, PX3 настроен на ввод, то бесполезно писать что-либо в 3-й бит PortX, поскольку оно не будет выведено.
ты прочитай про конфигурацию портов у АVR у DIHalt'a
вообще то запись в пин порта при его настройке как входной - включает (1) и отключает (0) резистор подтяжки ! так что это не бесполезное действие, а конфигурационное !
p.s. действительно странная обучалка
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Понедельник, 08.10.2012, 01:28 | Сообщение # 48 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Offline
| ни фига себе, у меня такое ощущение теперь, как будто я был слеп и прозрел на оба глаза........
не успеваю за своими мыслями......
|
|
| |
ВитГо | Дата: Понедельник, 08.10.2012, 08:10 | Сообщение # 49 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| подожди еще а то такими темпами будешь себя считать ясновидящим после первого проекта
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Понедельник, 08.10.2012, 13:51 | Сообщение # 50 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Offline
|
****************************************** что то тут не правильно.... пятая студия ругается на эту маску пишет "INVALID REGISTER" ******************************************* ЗЫ вот тут нашел пример (http://www.gaw.ru/html.cgi/txt/doc/micros/avr/asm/and.htm) только что то я не могу его понять
компилятору не нравится, что я пытаюсь оперировать с константой сейчас вот такую запись попробую ( попробую с регистром)
Code Certain_button:
ld Temp,Z+ ; загрузим данные в регистр из ОЗУ по адресу из регистровой пары "Z", ; и после этого адресс в регистровой паре автоматически увеличится на еденицу
ldi Temp2,0b11110000 and Temp, temp2 ; где "1" там кнопка, где "0" там кнопок нет - потому сбросим ! (маска)
cpi Temp,0b00000000 ; проверяем, нажата ли какая ни будь кнопка? brne inform ; если нажата, то переходим на метку "inform"
dec temp1 ; уменьшим счетчик столбцов клавы brne Certain_button ; если не все столбцы, то циклимся
Ldi Temp,0b00000000 ; если не нажата, то гасим светодиод out PortB,Temp
Добавлено (08.10.2012, 12:04) --------------------------------------------- ............. странно, не работает!
--------------------------------------------- сейчас пробую так (andi - им можно оперировать с константой) andi Temp, 0b11110000
--------------------------------------------- ура! заработало! светодиод и зажигается и гаснет! верно было andi Temp, 0b11110000
ЗЗЫ скачал себе систему команд AVR и ответ нашел в ней
andi=> Rd< Rd*K
and=> Rd< Rd*Rr ************** ЗЫ странно почему не заработала запись ldi Temp2,0b11110000 and Temp, temp2 ?????????????????????????????
---------------------------------------------
Добавлено (08.10.2012, 13:51) --------------------------------------------- ***************************************************************************************** записал такую-же маску в основную программу передатчика но ведь этого мало ! цикл проверки нажатия клавиатуры теперь происходит правильно, но не сама передача может правильнее будет перенести эту маску в Цикл чтения клавы и запись данных в ОЗУ ????????????????????????
как ты считаешь ? или эти лишние биты потом в приемнике очистим ?
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Понедельник, 08.10.2012, 14:03 |
|
| |
ВитГо | Дата: Понедельник, 08.10.2012, 15:12 | Сообщение # 51 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| на счет маски через and temp , temp2 - странно, должно работать ! проверь еще раз !
на счет маски при передаче: да нет, не нужно, в передаче вообще нужно сделать передачу только 4 бит (по количеству) каждого байта...
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Понедельник, 08.10.2012, 17:34 | Сообщение # 52 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Offline
| мы же принудительно изменили состояние выходов OC1A и OC1B!!! через регистр TCCR1C
ldi R16,(1<<FOC1A) ; принудительно изменить состояние выходов OC1A и OC1B!!! out TCCR1C,R16
и так и оставили TCCR1C, его же наверно нужно скинуть ?
ldi R16,0b00000000 out TCCR1C,R16
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Понедельник, 08.10.2012, 17:37 |
|
| |
ВитГо | Дата: Понедельник, 08.10.2012, 17:57 | Сообщение # 53 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| согласен, сбрось бит установки !
кстати для установки\сброса единичных бит в ассемблере есть команды sbi и cbi
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Понедельник, 08.10.2012, 18:10 | Сообщение # 54 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Offline
| ну вот, теперь генерация появилась прикрепил исходник (добавленное отметил множественными знаками вопроса) и прикрепил осциллограммы сделанные "ЗАКРЫТЫМ" входом звуковухи ( в двух проекциях)
Добавлено (08.10.2012, 18:10) --------------------------------------------- обнаружил прикол у меня программатор шьет без подключенного к схеме питания.... хотя вроде как не должен...
не успеваю за своими мыслями......
|
|
| |
ВитГо | Дата: Понедельник, 08.10.2012, 18:13 | Сообщение # 55 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| в прерывании передатчика есть переменная - количество байт для передачи установи там "1" - чтобы передавался только один байт
и заодно нажимай ту кнопку которая передается первой
ну и сделай новую осциллограмму
p.s. на этих нифига ничего не понятно...
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Понедельник, 08.10.2012, 19:36 | Сообщение # 56 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Offline
| Quote в прерывании передатчика есть переменная - количество байт для передачи установи там "1" - чтобы передавался только один байт ну теперь генерация совсем пропала......
Добавлено (08.10.2012, 19:36) --------------------------------------------- решил проверить Quote на счет маски через and temp , temp2 - странно, должно работать ! проверь еще раз ! проверил, не работает !?!?!?!?!?
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Понедельник, 08.10.2012, 19:37 |
|
| |
ВитГо | Дата: Понедельник, 08.10.2012, 20:32 | Сообщение # 57 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| Quote (uwrtey) ну теперь генерация совсем пропала......
где то еще баг.. проверяй !
оо !! попробуй задать 2 в количестве !!!
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Понедельник, 08.10.2012, 21:16 | Сообщение # 58 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Offline
| Quote на счет маски через and temp , temp2 - странно, должно работать ! проверь еще раз ! заменил temp2 на temp3 и все заработало... **************************** Quote оо !! попробуй задать 2 в количестве !!! сделал (на графиках зафиксировал одно нажатие)
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Понедельник, 08.10.2012, 21:16 |
|
| |
ВитГо | Дата: Понедельник, 08.10.2012, 21:31 | Сообщение # 59 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| а отправка одного байта не работает ?
в принципе импульсы видно, но не видно меняющихся пауз..
попробуй вручную записать перед вызовом прерывания в буфер на передачу значение вида 0b11010000
чтобы точно были паузы разной длинны
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Понедельник, 08.10.2012, 23:09 | Сообщение # 60 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Offline
| сделал вот так Code keyboardread:__________________; метка - опрос клавиатуры ______________________________; загружаем адрес метки массива (key_buff) находящейся в ОЗУ в регистровую пару X
____ldi XL,low(key_buff)__________; младший байт адреса ____ldi XH,high(key_buff)_________; старший байт адреса _____ldi Temp2,0b11010011_______; сохраним фиксированное значение _____st X+,Temp2_______________; сохраним в ОЗУ состояние столбца клавы, _______________________________; адрес в регстровой паре "X" автоматом увеличится на 1
______ret_______________________; возврат в главный цикл [1<] генерации нетуДобавлено (08.10.2012, 23:09) --------------------------------------------- а вот это выражение _____st X+,Temp2_______________; сохраним в ОЗУ состояние столбца клавы, _______________________________; адрес в регстровой паре "X" автоматом увеличится на 1 точно верное ? значение Temp2 точно сохранится по адресу из Х, и после этого адрес увеличится на единицу или же адрес сначала увеличится на единицу, а потом, по новому адресу сохранится значение из Temp2 ??????????????
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Понедельник, 08.10.2012, 23:05 |
|
| |
|