система дистанционного управления на ATtiny 2313 "c нуля"
| |
uwrtey | Дата: Воскресенье, 06.01.2013, 10:54 | Сообщение # 511 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Online
| Цитата ____ldi ZL,low (OZU+8)____________; младший байт адреса ____ldi ZH,high(OZU+8)____________; старший байт адреса
........... я так и думал , спасибо
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Воскресенье, 06.01.2013, 13:55 |
|
| |
uwrtey | Дата: Воскресенье, 06.01.2013, 19:07 | Сообщение # 512 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Online
| ну вот, я написал процедуру определения нажатых кнопки и включение светодиодов. но что-то мне она не нравится, а другое ни чего в голову не идет... --------------------------------------- не знаю, с какой частотой светодиоды будут мерцать... как то не практично у меня получилось...
не успеваю за своими мыслями......
|
|
| |
ВитГо | Дата: Понедельник, 07.01.2013, 00:14 | Сообщение # 513 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| ну если сделать сохранение всех регистров при входе в прерывание (и восстановление при выходе) - то зажигание светодиодов можно было бы засунуть в mainLoop - тогда они бы горели согласно последней удачно полученной пачки с приемника :-)
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Понедельник, 07.01.2013, 01:29 | Сообщение # 514 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Online
| дак у меня динамическая индикация - в этом проблема, а если вместо светодиодов реле (транзисторы) будут? а в одно время может оказаться нажато несколько кнопок...
... еще модифицировал код, но от проблемы это вряд ли спасет...хотя.... нужно в железе посмотреть если вместо светодиодов будут ключевые элементы, то параллельно базе и земле каждого, нужно будет повесить емкости... как то так...
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Понедельник, 07.01.2013, 01:29 |
|
| |
ВитГо | Дата: Понедельник, 07.01.2013, 13:26 | Сообщение # 515 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| тут бестолку думать.. если бы, да кабы..
нужно решить какие исполнители будут и там уже делать под них..
может быть вообще проще будет на сдвиговых регистрах сделать вывод результата :-) или мультиплексировать D-триггеры как нить
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Понедельник, 07.01.2013, 23:56 | Сообщение # 516 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Online
| на днях в железе попробую со светодиодами
Цитата нужно решить какие исполнители будут и там уже делать под них.. тут без разницы любые ключи (можно полевики, можно реле, можно оптотроны)
не успеваю за своими мыслями......
|
|
| |
uwrtey | Дата: Вторник, 08.01.2013, 23:17 | Сообщение # 517 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Online
| нашел пару ошибок, исправил.
по схеме: прицепил пока только один светодиод.
В теории если нажать соответствующую кнопку, то светодиод должен моргнуть и отключится, а затем на дисплее должна появиться информация о том, какая кнопка была нажата....
на практике же светодиод не мигает и программа не доходит до процедуры вывода данных на дисплей. виснет где-то в процедуре включения светодиодов.... ( не могу пока найти где...)
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Среда, 09.01.2013, 00:09 |
|
| |
uwrtey | Дата: Среда, 09.01.2013, 14:22 | Сообщение # 518 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Online
| ну вот, причину я нашел... дело в том что и ноги мк, подключенные к светодиодам и к экрану, принадлежат одному порту ( PORTB ) естественно если я включаю/выключаю светодиоды, то в ВЕСЬ порт (на все ноги) выводится разные логические состояния, при этом портится информация в порту полученная в результате инициализации дисплея... пришлось вызов подпрограммы инициализации дисплея перенести в начало цикла вывода информации на дисплей... не знаю на сколько это правильно... но вывод информации на дисплей работает ...
П.С. в дальнейшем экран будет не нужен...
не успеваю за своими мыслями......
|
|
| |
ВитГо | Дата: Среда, 09.01.2013, 15:58 | Сообщение # 519 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| правильно, дисплей нужно инитить в первую очередь ну и отдельными пинами портов управлять при помощи sbi \ cbi - чтобы не дергать все пины (в том числе не нужные) порта.. либо работать с маской
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Среда, 09.01.2013, 19:07 | Сообщение # 520 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Online
| Цитата (ВитГо) ну и отдельными пинами портов управлять при помощи sbi \ cbi - чтобы не дергать все пины (в том числе не нужные) порта.. точно! это поможет!
Виталий, а маска andi как работает?, похоже я все таки плохо понял ее устройство например в Temp у нас число 0b10101010 а после команды andi Temp, 0b11110000 в Temp получается 0b10100000 ??? так ???? если так, то маской исправить ситуацию не получится....
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Среда, 09.01.2013, 20:29 |
|
| |
ВитГо | Дата: Среда, 09.01.2013, 20:39 | Сообщение # 521 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| почему не получается?
ты сначала читаешь состояние порта
IN R16, PINB (например порт
потом оставляешь маской те биты которые менять не нужно
ANDI R16, 0x1111000
потом накладываешь те биты которые нужно изменить OR R16, R17 ; в R17 у нас записаны биты с 0 до 3 - которые могут изменяться
OUT PORTB, R16
в результате этого биты в старшем полубайте не менялись, а в младшем поменялись как нам нужно...
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Среда, 09.01.2013, 23:19 | Сообщение # 522 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Online
| вот оно как!
пытался погуглить как работает команда (или) OR http://www.gaw.ru/html.cgi/txt/doc/micros/avr/asm/or.htm но ни чего не понял...
зато википедия помогла понять
Цитата (Википедия) Правило: результат равен 0, если все операнды равны 0; во всех остальных случаях результат равен 1.
спасибо, Виталий!!! куда я без тебя....
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Среда, 09.01.2013, 23:30 |
|
| |
uwrtey | Дата: Четверг, 10.01.2013, 01:37 | Сообщение # 523 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Online
| про команды SBI / CBI погуглил
там написано, что работают эти команды с c младшими 32 регистрами ввода/вывода - адреса с 0 по 31.
то есть Код cbi $12, 7 ; Очистить бит 7 в Порте D
__________________________________________
а можно ли записывать так ?????????????? ( я уже проверил, компилятор съел и не поперхнулся, значит Можно!!!! )
Код cbi PortD, 7 ; Очистить бит 7 в Порте D
__________________________________________
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Четверг, 10.01.2013, 01:37 |
|
| |
uwrtey | Дата: Четверг, 10.01.2013, 01:38 | Сообщение # 524 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Online
| появился еще один вопрос ( я его уже как то задавал, но так с ним и не разобрался) идем на четвертую страницу и смотрим сообщение 46 и 47
там ты мне рассказывал про режим ручной генерации
я пытался сделать, как в сообщении 46. прерывание настроено по int0 ( нарастающий фронт ) нужно настроить нужный пин порта ( int0 ) на ВЫВОД после этого вывести в этот пин лог_1 и попасть в прерывание но в прерывании я так и не попал тогда...
а если сделать как в сообщении 47 ? прерывание настроено по int0 ( нарастающий фронт ) настраиваем нужный пин порта на ВВОД после этого выводим в этот пин лог_1 ( включается резистор подтяжки ) и по логике - мы должны попасть в прерывание...
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Четверг, 10.01.2013, 01:38 |
|
| |
ВитГо | Дата: Четверг, 10.01.2013, 07:47 | Сообщение # 525 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| нужно пробовать. я давно эксперементировал с этим.. не помню уже как я делал это.. помню что было просто :-)
Виталий (аka ВитГо)
|
|
| |
|