Четверг, 28.03.2024, 12:13
Вы вошли как Гость | Группа "Гости"Приветствую Вас Гость | RSS
Главная | система дистанционного управления на ATtiny 2313 "c нуля" - Страница 35 - Форум | Мой профиль | Регистрация | Выход | Вход
Обитель RC-инженера
Форма входа
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: ВитГо  
Форум » Разработка электронных устройств » Разрабатываю ! » система дистанционного управления на ATtiny 2313 "c нуля" (пошаговое изучение строительства систем радиоуправления)
система дистанционного управления на ATtiny 2313 "c нуля"
uwrteyДата: Воскресенье, 06.01.2013, 10:54 | Сообщение # 511
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Репутация: 11
Статус: Online
Цитата
____ldi ZL,low (OZU+8)____________; младший байт адреса
____ldi ZH,high(OZU+8)____________; старший байт адреса


........... я так и думал smile , спасибо


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

Сообщение отредактировал uwrtey - Воскресенье, 06.01.2013, 13:55
 
uwrteyДата: Воскресенье, 06.01.2013, 19:07 | Сообщение # 512
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Репутация: 11
Статус: Online
ну вот, я написал процедуру определения нажатых кнопки и включение светодиодов.
но что-то мне она не нравится, а другое ни чего в голову не идет...
---------------------------------------
не знаю, с какой частотой светодиоды будут мерцать... как то не практично у меня получилось...
Прикрепления: 1903449.asm (20.9 Kb) · 6967451.gif (95.2 Kb)


не успеваю за своими мыслями......
 
ВитГоДата: Понедельник, 07.01.2013, 00:14 | Сообщение # 513
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
ну если сделать сохранение всех регистров при входе в прерывание (и восстановление при выходе) - то зажигание светодиодов можно было бы засунуть в mainLoop - тогда они бы горели согласно последней удачно полученной пачки с приемника :-)

Виталий (аka ВитГо)
 
uwrteyДата: Понедельник, 07.01.2013, 01:29 | Сообщение # 514
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Репутация: 11
Статус: Online
дак у меня динамическая индикация - в этом проблема, а если вместо светодиодов реле (транзисторы) будут?
а в одно время может оказаться нажато несколько кнопок...

... еще модифицировал код, но от проблемы это вряд ли спасет...хотя.... нужно в железе посмотреть
если вместо светодиодов будут ключевые элементы, то параллельно базе и земле каждого, нужно будет повесить емкости... как то так...
Прикрепления: 9896102.asm (21.1 Kb)


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

Сообщение отредактировал uwrtey - Понедельник, 07.01.2013, 01:29
 
ВитГоДата: Понедельник, 07.01.2013, 13:26 | Сообщение # 515
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
тут бестолку думать.. если бы, да кабы..

нужно решить какие исполнители будут и там уже делать под них..

может быть вообще проще будет на сдвиговых регистрах сделать вывод результата :-)
или мультиплексировать D-триггеры как нить


Виталий (аka ВитГо)
 
uwrteyДата: Понедельник, 07.01.2013, 23:56 | Сообщение # 516
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Репутация: 11
Статус: Online
на днях в железе попробую со светодиодами

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


не успеваю за своими мыслями......
 
uwrteyДата: Вторник, 08.01.2013, 23:17 | Сообщение # 517
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Репутация: 11
Статус: Online
нашел пару ошибок, исправил.

по схеме: прицепил пока только один светодиод.

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

на практике же светодиод не мигает и программа не доходит до процедуры вывода данных на дисплей. виснет где-то в процедуре включения светодиодов.... ( не могу пока найти где...)
Прикрепления: 7153143.asm (21.9 Kb)


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

Сообщение отредактировал uwrtey - Среда, 09.01.2013, 00:09
 
uwrteyДата: Среда, 09.01.2013, 14:22 | Сообщение # 518
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Репутация: 11
Статус: Online
ну вот, причину я нашел... дело в том что и ноги мк, подключенные к светодиодам и к экрану, принадлежат одному порту ( PORTB )
естественно если я включаю/выключаю светодиоды, то в ВЕСЬ порт (на все ноги) выводится разные логические состояния, при этом портится информация в порту полученная в результате инициализации дисплея... пришлось вызов подпрограммы инициализации дисплея перенести в начало цикла вывода информации на дисплей...
не знаю на сколько это правильно... но вывод информации на дисплей работает ...

П.С.
в дальнейшем экран будет не нужен...
Прикрепления: 9305770.asm (22.0 Kb)


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

ну и отдельными пинами портов управлять при помощи sbi \ cbi - чтобы не дергать все пины (в том числе не нужные) порта.. либо работать с маской


Виталий (аka ВитГо)
 
uwrteyДата: Среда, 09.01.2013, 19:07 | Сообщение # 520
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Репутация: 11
Статус: Online
Цитата (ВитГо)
ну и отдельными пинами портов управлять при помощи sbi \ cbi - чтобы не дергать все пины (в том числе не нужные) порта..
точно! это поможет!

Виталий, а маска andi как работает?, похоже я все таки плохо понял ее устройство
например в Temp у нас число 0b10101010
а после команды
andi Temp, 0b11110000
в Temp получается 0b10100000 ??? так ????
если так, то маской исправить ситуацию не получится....


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

Сообщение отредактировал uwrtey - Среда, 09.01.2013, 20:29
 
ВитГоДата: Среда, 09.01.2013, 20:39 | Сообщение # 521
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
почему не получается?

ты сначала читаешь состояние порта

IN R16, PINB (например порт cool

потом оставляешь маской те биты которые менять не нужно

ANDI R16, 0x1111000

потом накладываешь те биты которые нужно изменить
OR R16, R17 ; в R17 у нас записаны биты с 0 до 3 - которые могут изменяться

OUT PORTB, R16

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


Виталий (аka ВитГо)
 
uwrteyДата: Среда, 09.01.2013, 23:19 | Сообщение # 522
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Репутация: 11
Статус: 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
Репутация: 11
Статус: Online
про команды SBI / CBI погуглил

там написано, что работают эти команды с c младшими 32 регистрами ввода/вывода - адреса с 0 по 31.

то есть
Код

cbi $12, 7                    ; Очистить бит 7 в Порте D


__________________________________________

а можно ли записывать так ?????????????? ( я уже проверил, компилятор съел и не поперхнулся, значит Можно!!!! ) biggrin cool

Код
cbi PortD, 7                            ; Очистить бит 7 в Порте D


__________________________________________


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

Сообщение отредактировал uwrtey - Четверг, 10.01.2013, 01:37
 
uwrteyДата: Четверг, 10.01.2013, 01:38 | Сообщение # 524
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Репутация: 11
Статус: Online
появился еще один вопрос ( я его уже как то задавал, но так с ним и не разобрался)
идем на четвертую страницу и смотрим сообщение 46 и 47

там ты мне рассказывал про режим ручной генерации

я пытался сделать, как в сообщении 46.
прерывание настроено по int0 ( нарастающий фронт )
нужно настроить нужный пин порта ( int0 ) на ВЫВОД
после этого вывести в этот пин лог_1 и попасть в прерывание
но в прерывании я так и не попал тогда...

а если сделать как в сообщении 47 ?
прерывание настроено по int0 ( нарастающий фронт )
настраиваем нужный пин порта на ВВОД
после этого выводим в этот пин лог_1 ( включается резистор подтяжки )
и по логике - мы должны попасть в прерывание...


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

Сообщение отредактировал uwrtey - Четверг, 10.01.2013, 01:38
 
ВитГоДата: Четверг, 10.01.2013, 07:47 | Сообщение # 525
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
нужно пробовать. я давно эксперементировал с этим.. не помню уже как я делал это.. помню что было просто :-)

Виталий (аka ВитГо)
 
Форум » Разработка электронных устройств » Разрабатываю ! » система дистанционного управления на ATtiny 2313 "c нуля" (пошаговое изучение строительства систем радиоуправления)
Поиск:


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