nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 06:31



Reply to topic  [ 28 posts ]  Go to page 1, 2  Next
16FUSB или софтварный USB на младших PIC-ах 
Author Message
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Никто не пробовал юзать https://code.google.com/p/16fusb/? Это вроде как софтварный USB 1.1 стек на PIC16F628.

И там же очень интересный пример, DirectIO : по USB можно читать-писать 8 бит данных, два бита контроля. И еще есть бит статуса - только чтение. Итого практически халявное преобразование USB <-> parallel interface.

Я хочу его использовать для 16F819, с ходу код не собрался для 819 - ругается на UDATA, мол не лезет куда-то там в какой-то банк, на UDATA_OVR.. Надо разбираться. Автор вроде утверждает, что код использует только основной банк памяти, а в остальные не лезет.. Если у кого вдруг под рукой есть MPASM, может посмотрите, поможете скомпилить для 819?


11 Dec 2014 13:34
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Интересный пример, в первый раз вижу...
А может тебе для оригинального теста и попробовать на самОм PIC16F628, а потом уже переносить?

И что-то я не понял, как со стороны PC посылать байты...

fhandler = OpenUSBport as file(.... )

и начинаем зашвыривать байты в этот файл что ли?

_________________
iLavr


11 Dec 2014 14:00
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Post 
Честно - я пока в пример на хосте (винде) даже не смотрел. Я думал там обычные процедуры типа SendByte и тд.. Там есть демонстрашка на VisualC, там галочками биты отмечаешь и кнопка Send или Read...

Хочется все-таки под 819 собрать - какая разница-то по сути? У 819 разве что UART нет, но он тут и не нужен. По памяти - одинаково вроде. Просто 819 у меня давно лежит, куда применить - не знаю.

Вообще, конечная цель - прикрутить YM2149F к USB. У синтезатора как раз 8 бит - данные и два управляющих сигнала BC1 и BDIR. Ну есть еще RESET, с ним пока я не решил окончательно. На первое время можно рубильник (кнопку) прикрутить, на крайняк.


11 Dec 2014 14:06
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Post 
Там просто помимо D+ и D- еще на одной ноге через диод отлавливаются то ли начало то ли конец импульса (не вникал особо), и это RB2. Итого под USB занято не две, а три ноги порта B. А бит статуса походу автор отвел на RA5, он же MCLR. Насколько помню именно из-за этого (MCLR) в PIC16 таких серий он (RA5) только на чтение. Наверное по этому бит статуса только на чтение. Неплохо было бы их поменять местами, RB2 и RA5, что бы высвободить третий контрольный бит на чтение-запись.


11 Dec 2014 14:13
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Tronix wrote:
Хочется все-таки под 819 собрать - какая разница-то по сути?

По сути-то разница обычно небольшая... но её-то и надо тщательно отследить, чтобы заработало.

Я уже больше года как купил себе PIC16F628-х, но так до сих пор и не перенёс на них свой
собственный проект с PIC16F84А, даром, что сам я весь код свой хорошо знаю.

А вот с пол-пинка в лоб - у меня на PIC16F628 так и не заработало...

_________________
iLavr


11 Dec 2014 14:19
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Post 
Купил седня PIC16F628A пару. Думаю не кварц прицепить, а генератор собрать на 74hc04 или вообще генератор в корпусе таком металлическом заюзать (нечаянно обнаружил в распайке). Тем самым освобожу один пин МК, нужный мне для RESET на ямаху.


13 Dec 2014 04:09
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Post 
Спаял строго по схеме, кроме кварца. Его заменил на кварцевый генератор 24MHz. Изменил конфиг на ExtOSC. Включил - работает. Попросил драйвера, дал ему драйвер по ссылке с проекта, установился на x64 без проблем. Запустил демонстрашку, поигрался записью байт - все работает отлично. Единственное о чем нужно помнить - RA4 open drain, туда выведен один из двух битов управления. Его нужно обязательно подтянуть к питанию, иначе не будет высокого уровня.

Щаз цепляю его к YM2149, потом нужно будет запилить третий бит управления на высвободившуюся ногу RA6 (CLKOUT), чтоб было три управляющих сигнала. Ну и потом написать обертку для плеера ZXTunes


13 Dec 2014 09:18
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Tronix wrote:
Запустил демонстрашку, поигрался записью байт - все работает отлично.

А в обратку - в РС - он какие-то биты может вернуть? Ну типа BUSY для LPT ?

_________________
iLavr


13 Dec 2014 10:25
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Post 
Lavr wrote:
Tronix wrote:
Запустил демонстрашку, поигрался записью байт - все работает отлично.

А в обратку - в РС - он какие-то биты может вернуть? Ну типа BUSY для LPT ?


Конечно может, для этого есть как раз статусный пин (RA5). Он только на чтение, ибо RA5 в этом семействе input only. Так же можно читать и байт данных, и два бита управления. Если использовать внешний тактовый генератор заместо кварца, то высвобождается еще один пин RA6. Его тоже можно и читать и писать, только нужно немножко библиотеку подправить (в процессе).


13 Dec 2014 12:20
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Post 
Вощем прикрутил YM2149F к сабжу, работает оооочень медленно, к сожалению :( Запись звука получается такой:

https://soundcloud.com/tronix286/joke-of-jsbachby-surgeon

В то время, когда обычный LPT вполне справлялся.

Попробовать выкинуть ответ от контроллера к хосту? Он там вроде ACK высылает потом после передачи. Мне он не критичен. Так же выкинуть все, что связано с чтением. Мне нужна только запись. Попробую, но похоже - не взлетело, хотя я и надеялся. Придется юзать с аппаратным USB.

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


14 Dec 2014 03:47
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Post 
Может его разогнать еще в двое, нафиг. Читал где-то, что PICи гонятся тока в путь. 48MHz вместо дефолтных 20MHz меня бы думаю устроило.


14 Dec 2014 05:06
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Post 
Как думаете, нельзя на простой логике умножить тактовый сигнал 24MHz надвое, чтоб получить 48MHz?


14 Dec 2014 05:21
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Post 
Значит задал ему TRISы сразу после включения и потом нигде не меняются, а то он в каждой процедуре записи устанавливал направление. Так же выкинул из кода все, что относится к чтению и записи 4-битных ниблов. Оставил только WriteByte и WriteCtrl. Чуть стало побыстрее, но глобально ситуацию конечно не изменило :(


14 Dec 2014 06:46
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Tronix wrote:
Как думаете, нельзя на простой логике умножить тактовый сигнал 24MHz надвое, чтоб получить 48MHz?

Можно, но это не простая логика нужна, а что-то типа 1531...

Image

А ты можешь сделать такой опыт - посылать ему в цикле только код и инверсию
этого кода и посмотреть максимальную частоту на выходе?

_________________
iLavr


14 Dec 2014 08:54
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Post 
В смысле слать бит 1 затем 0 затем 1 и тд? Можно в принципе, могу даже наверное осциллографом замерить, но это среди рабочей недели как время будет.

PS: Разогнать не получилось - там обработка USB завязана на высчитанные предварительно машинные такты. Увеличиваем частоту - все расчеты сдвигаются -> устройство перестает опознаваться компом.


14 Dec 2014 09:07
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 28 posts ]  Go to page 1, 2  Next

Who is online

Users browsing this forum: No registered users and 11 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.