roboforum.ru

Технический форум по робототехнике.
Текущее время: 28 фев 2025, 12:16

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: джойстик PS2 к AVR -asm
СообщениеДобавлено: 31 окт 2009, 19:58 
Не в сети
Аватара пользователя

Зарегистрирован: 25 мар 2009, 13:57
Сообщения: 217
Откуда: Ростов-на-Дону
ФИО: Виктор
В хедере
.equ PORTF = $62

светодиоды мигают. на выход работает нормально.

команда in с портом F работает, а вот out не работает.
но ситуация всеравно не меняется.
уже не знаю где копать. попробую все таки на другом камне сделать


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: джойстик PS2 к AVR -asm
СообщениеДобавлено: 31 окт 2009, 19:59 
Не в сети
Аватара пользователя

Зарегистрирован: 28 дек 2004, 20:33
Сообщения: 10211
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович
попробуй на васике на вход проверить


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: джойстик PS2 к AVR -asm
СообщениеДобавлено: 31 окт 2009, 21:09 
Не в сети
Аватара пользователя

Зарегистрирован: 05 июн 2007, 12:20
Сообщения: 196
Откуда: Киев
прог. языки: C/C++, ASSEMBLER
milkpower писал(а):
команда in с портом F работает, а вот out не работает.
Банально, но может порт на выход не сконфигурирован? :pardon:

_________________
Глюк по-немецки означает "счастье"...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: джойстик PS2 к AVR -asm
СообщениеДобавлено: 31 окт 2009, 21:25 
Не в сети
Аватара пользователя

Зарегистрирован: 25 мар 2009, 13:57
Сообщения: 217
Откуда: Ростов-на-Дону
ФИО: Виктор
не, я про то, что компилятор ругается если out portF писать


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: джойстик PS2 к AVR -asm
СообщениеДобавлено: 31 окт 2009, 23:28 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Правильно ругается.
Если 0x62, то однозначно
out PORTF,r24

Загадочно все это в общем... :pardon:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: джойстик PS2 к AVR -asm
СообщениеДобавлено: 31 окт 2009, 23:41 
Не в сети

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
Да все правильно, смотрим ДШ:
адрес памяти $62 - PORTF
адрес IO $01 = адрес памяти $21 - DDRF
адрес IO $00 = адрес памяти $20 - PINF

Поэтому к PINF и DDRF можно обращаться с помощью in и out, а к PORTF - нельзя. Ну попробуй тупо написать

Код:
in R24, $00


или

Код:
lds R24, $20


Если заработает - проблема хидера, если нет - в чем-то другом. JTAG влияет только на ноги 4-7, ноги PF0-3 работают всегда (ну правда в режиме меги103 - только на вход)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: джойстик PS2 к AVR -asm
СообщениеДобавлено: 08 ноя 2009, 13:00 
Не в сети
Аватара пользователя

Зарегистрирован: 25 мар 2009, 13:57
Сообщения: 217
Откуда: Ростов-на-Дону
ФИО: Виктор
замучился, блин, с этим джойстиком. сделал макетку на меге16, повесил его на портС, не работает редиска.
уже прочитав еще всякие даташиты, повесил его на SPI.

вот как подключил:
joy-----mega
clk<----SCK
data--->MISO
comnd<--MOSI
ATT<----`SS
ACK---->PB3

код
Код:
joy_init:
   ldi temp,(1<<4)|(1<<5)|(1<<7);SS-MOSI-SCK-out
   out DDRB,temp
;SPI в режиме мастера, fclk=1мгц,скорость fclk/4, первый фронт низкий, передача от младшего бита
   ldi temp,(1<<SPE)|(1<<MSTR)|(1<<CPOL)|(1<<DORD)
   out SPCR,temp
   ret


joy_com:   ;joyin joyout
   ldi temp,0
   out portb,temp ;`SS низкий уровень
   out SPDR,joyin ;запускаем передачу
joy_wait:   ; ждем конца передачи
   sbis SPSR,SPIF
   rjmp joy_wait
   in joyout,SPDR
   ldi temp,(1<<4) ;`SS высокий уровень
   out portB,temp
   ret


результат байтов на входе побитово смотрю на жк,
и вот самое интересное, что нет разницы в том что я делал все программно и сейчас аппаратно, при отключении джойстика на входе $80 все время. при включении 00.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: джойстик PS2 к AVR -asm
СообщениеДобавлено: 17 ноя 2009, 02:51 
Не в сети
Аватара пользователя

Зарегистрирован: 25 мар 2009, 13:57
Сообщения: 217
Откуда: Ростов-на-Дону
ФИО: Виктор
купил осциллограф, решил добить все-таки работоспособность девайса.
нашел несколько багов, исправил.
джойстик реагирует на все получаемые команды, в порт шлет правильные данные, а вот МК не видит ничего на пине порта.

Код:
   ldi temp, 0b10001110; бит0 на вход
   ldi temp1,$00
   out   DDRD,temp
   out PORTD,temp1
   ret

.......cut.....и далее
   in temp,pinD


и на входе 0.
вот даже скрин, зеленая данные с джойстика, считываю порт когда желтый сигнал в высоком уровне, т.е. значение уже установлено
Вложение:
osc.jpg
osc.jpg [ 137.13 КиБ | Просмотров: 1878 ]


что можете посоветовать?

Добавлено спустя 1 час 4 минуты 7 секунд:
все, вопрос отпал. заработало! :Yahoo!:
попробую еще переделать на SPI и если интересно кому, могу выложить процедурки работы с джойстиком


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: джойстик PS2 к AVR -asm
СообщениеДобавлено: 17 ноя 2009, 09:32 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
Выложи конечно!

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: джойстик PS2 к AVR -asm
СообщениеДобавлено: 17 ноя 2009, 12:46 
Не в сети
Аватара пользователя

Зарегистрирован: 25 мар 2009, 13:57
Сообщения: 217
Откуда: Ростов-на-Дону
ФИО: Виктор
при переводе на SPI возникли непонятные баги,
Вложение:
Комментарий к файлу: желтый-CLK, зеленый-DATA с джойстика
osc_spi.JPG
osc_spi.JPG [ 181.76 КиБ | Просмотров: 1856 ]


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: джойстик PS2 к AVR -asm
СообщениеДобавлено: 17 ноя 2009, 13:26 
Не в сети

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
А программно отчего заработало? Случаем не от включения pull-up (подтяжки на ноге)? Потому что выглядит это как будто подтяжка слишком слабая, а выход джойстика - открытый коллектор.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: джойстик PS2 к AVR -asm
СообщениеДобавлено: 17 ноя 2009, 13:40 
Не в сети
Аватара пользователя

Зарегистрирован: 25 мар 2009, 13:57
Сообщения: 217
Откуда: Ростов-на-Дону
ФИО: Виктор
выход действительно ОК, но подтяжка у меня была, причем встроенная не справлялась, методом подбора нашел оптимальным 1кОм, программно заработало когда нашел баги в основной программе, у меня регистры немного конфликтовали :oops:

на SPI подтяжку меньше 1.8кОм делать нельзя, т.к. вход уходит в постоянный +5V, но и разницы при этом до 5кОм никакой. сигнал DATA не успевает установиться, при этом еще и последний бит заплывает на следующий пакет.
снижение частоты не помогает, т.к. джой устойчиво работает от 200 до 300кГц (родная=250кГц в мануалах) , увеличение паузы между пакетами не спасает, тогда джойстик может просто скинуть состояние и ждать опроса заново.
вобщем остановлюсь наверно пока на софтовой порто-дрыгалке, если ничего меня не осенит. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: джойстик PS2 к AVR -asm
СообщениеДобавлено: 17 ноя 2009, 14:53 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
там на СПИ прогера не висит случает в этот же момент ? )

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: джойстик PS2 к AVR -asm
СообщениеДобавлено: 17 ноя 2009, 15:19 
Не в сети
Аватара пользователя

Зарегистрирован: 25 мар 2009, 13:57
Сообщения: 217
Откуда: Ростов-на-Дону
ФИО: Виктор
отключал, не помогало. :(
вобщем остановился на эмуляции через порт

вот видео как оно работает



вот подпрограммы работы с джойстиком
Код:
joycall:
   rcall jinit
   rcall joystart
   ldi joyin,$01
   rcall joy_com
   rcall delay

   ldi joyin,$42
   rcall joy_com

   mov r14,joyout

   rcall delay


   ldi joyin,$00
   rcall joy_com
   rcall delay

   ldi joyin,$00
   rcall joy_com

   mov r13,joyout

   rcall delay

   ldi joyin,$00
   rcall joy_com

   mov r12,joyout

   rcall delay
   rcall joyend
   ret




jinit:
   ldi temp, 0b00001110
   ldi temp1,$0f
   out   DDRD,temp
   out PORTD,temp1
   ret

joystart:
   ldi temp,0b00001001
   out portD,temp
   ret
joyend:
   ldi temp,$0f
   out portD,temp
   ret

joy_com:   ;joyin   joyout  portB
   ;bit0 data   out                  port in
   ;bit1 cmd   in                  port out
   ;bit2 ATT   select device 0=select   port out
   ;bit3 CLK   òàêòîâûå            port out
   ;bit4 ACK   ïîäòâåðæäåíèå          port in
   clr   joyout
   ldi count,8
joy_l:
   clr temp1
   ;CMD
   rol joyin   ;сдвигаем старший бит в перенос
   rol temp1   ;сдвигаем перенос в младший
   rol temp1   ;во 2-й бит на контакт CMD


   ;Clk+ATT
   ori    temp1,0b00010000
   andi temp1,0b00010010
   out portD,temp1
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   ori    temp1,0b00011000
   andi temp1,0b00011010
   out portD,temp1
   nop
   nop
   in temp1,pinD
   ror temp1   
   ror joyout   
   dec count
   brne joy_l
   ret



delay:
   push temp
   ldi temp,4
del_lp:
   dec temp
   brne del_lp
   pop temp
   ret


joyin, joyout, temp, temp1, count = любые ваши регистры кроме:
r14 - индекс джойстика
r13 - первый байт кнопок
r12 - первый байт кнопок
результат в r12 r13 приходит инвертированый, т.е. нажатая кнопка =0
nop'ы для синхронизации для кварца 7.3728мГц
вся процедура опроса джойстика занимает около 220мкс.
ну а дальше если будут вопросы, задавайте.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO