Четверг, 28.03.2024, 18:40
Вы вошли как Гость | Группа "Гости"Приветствую Вас Гость | RSS
Главная | система дистанционного управления на ATtiny 2313 "c нуля" - Страница 4 - Форум | Мой профиль | Регистрация | Выход | Вход
Обитель RC-инженера
Форма входа
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: ВитГо  
Форум » Разработка электронных устройств » Разрабатываю ! » система дистанционного управления на ATtiny 2313 "c нуля" (пошаговое изучение строительства систем радиоуправления)
система дистанционного управления на ATtiny 2313 "c нуля"
ВитГоДата: Воскресенье, 07.10.2012, 22:42 | Сообщение # 46
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
на да, полную чушь написали там...

я даже больше тебе скажу:
есть такой прием ручной генерации прерывания: это когда пин входного порта (то есть на котором прерывание должно срабатывать когда он является входом) конфигурируешь на ВЫВОД, и конфигурируешь прерывания по нему !
и потом когда тебе в программе нужно прерывание по входному порту (который как ты помнишь сконфигурен на вывод) - ты записываешь в этот пин порта нужное значение (то есть типа на вывод) и вуаля ! - получаешь прерывание как по входному пину от внешнего сигнала...

изврат конечно, но иногда так удобнее (я как то использовал подобное - программа сразу упростилась и даже читаться лучше стала)

а на счет документашки - бывает...
просто автор сам не попробовал, а перепечатал откуда то...
писать хорошие, понятные статьи тоже не просто.. в этом для меня хороший пример DiHalt с easyelectronics - у него всегда понятные статьи.. мне к сожалению до него еще далеко...

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

хотя, находил я недавно статью с хорошими скриншотами про генерацию видео - но часть примеров от туда все равно не заработала :-)))
надеюсь про мои статьи так никто не скажет - я вроде бы все сам пишу :-)))


Виталий (аka ВитГо)
 
ВитГоДата: Воскресенье, 07.10.2012, 22:45 | Сообщение # 47
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
кстати, про это

Quote
Соответственно, если, скажем, PX3 настроен на ввод, то бесполезно писать что-либо в 3-й бит PortX, поскольку оно не будет выведено.


ты прочитай про конфигурацию портов у АVR у DIHalt'a

вообще то запись в пин порта при его настройке как входной - включает (1) и отключает (0) резистор подтяжки !
так что это не бесполезное действие, а конфигурационное !

p.s. действительно странная обучалка


Виталий (аka ВитГо)
 
uwrteyДата: Понедельник, 08.10.2012, 01:28 | Сообщение # 48
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Репутация: 11
Статус: Offline
ни фига себе, у меня такое ощущение теперь, как будто я был слеп и прозрел на оба глаза........

не успеваю за своими мыслями......
 
ВитГоДата: Понедельник, 08.10.2012, 08:10 | Сообщение # 49
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
подожди еще cool
а то такими темпами будешь себя считать ясновидящим после первого проекта biggrin


Виталий (аka ВитГо)
 
uwrteyДата: Понедельник, 08.10.2012, 13:51 | Сообщение # 50
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Репутация: 11
Статус: Offline
biggrin

******************************************
что то тут не правильно....
пятая студия ругается на эту маску
пишет "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
Репутация: 20
Статус: Offline
на счет маски через and temp , temp2 - странно, должно работать ! проверь еще раз !

на счет маски при передаче: да нет, не нужно, в передаче вообще нужно сделать передачу только 4 бит (по количеству) каждого байта...


Виталий (аka ВитГо)
 
uwrteyДата: Понедельник, 08.10.2012, 17:34 | Сообщение # 52
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Репутация: 11
Статус: 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
Репутация: 20
Статус: Offline
согласен, сбрось бит установки !

кстати для установки\сброса единичных бит в ассемблере есть команды sbi и cbi


Виталий (аka ВитГо)
 
uwrteyДата: Понедельник, 08.10.2012, 18:10 | Сообщение # 54
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Репутация: 11
Статус: Offline
ну вот, теперь генерация появилась
прикрепил исходник (добавленное отметил множественными знаками вопроса)
и прикрепил осциллограммы сделанные "ЗАКРЫТЫМ" входом звуковухи ( в двух проекциях)

Добавлено (08.10.2012, 18:10)
---------------------------------------------
обнаружил прикол
у меня программатор шьет без подключенного к схеме питания.... хотя вроде как не должен...

Прикрепления: 7102504.asm (11.2 Kb) · 1881493.rar (122.4 Kb)


не успеваю за своими мыслями......
 
ВитГоДата: Понедельник, 08.10.2012, 18:13 | Сообщение # 55
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
в прерывании передатчика есть переменная - количество байт для передачи
установи там "1" - чтобы передавался только один байт

и заодно нажимай ту кнопку которая передается первой

ну и сделай новую осциллограмму

p.s. на этих нифига ничего не понятно...


Виталий (аka ВитГо)
 
uwrteyДата: Понедельник, 08.10.2012, 19:36 | Сообщение # 56
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Репутация: 11
Статус: 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
Репутация: 20
Статус: Offline
Quote (uwrtey)
ну теперь генерация совсем пропала......


где то еще баг.. проверяй !

оо !! попробуй задать 2 в количестве !!!


Виталий (аka ВитГо)
 
uwrteyДата: Понедельник, 08.10.2012, 21:16 | Сообщение # 58
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Репутация: 11
Статус: Offline
Quote
на счет маски через and temp , temp2 - странно, должно работать ! проверь еще раз !

заменил temp2 на temp3 и все заработало...
****************************
Quote
оо !! попробуй задать 2 в количестве !!!

сделал (на графиках зафиксировал одно нажатие)
Прикрепления: 1931211.rar (111.8 Kb)


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

Сообщение отредактировал uwrtey - Понедельник, 08.10.2012, 21:16
 
ВитГоДата: Понедельник, 08.10.2012, 21:31 | Сообщение # 59
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
а отправка одного байта не работает ?

в принципе импульсы видно, но не видно меняющихся пауз..

попробуй вручную записать перед вызовом прерывания в буфер на передачу значение вида 0b11010000

чтобы точно были паузы разной длинны


Виталий (аka ВитГо)
 
uwrteyДата: Понедельник, 08.10.2012, 23:09 | Сообщение # 60
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Репутация: 11
Статус: 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
 
Форум » Разработка электронных устройств » Разрабатываю ! » система дистанционного управления на ATtiny 2313 "c нуля" (пошаговое изучение строительства систем радиоуправления)
Поиск:


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