Отговори на тема  [ 14 мнения ] 
USB на PIC18 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 25, 2012 8:14 am
Мнения: 4616
Местоположение: Новата земя на племето Мутум'ба
Мнение USB на PIC18
Имам (пак) въпрос за гадното усб...
Значи подкарал съм някаква форма на трансфер, образува ми се ком порт, търчат някакви данни по него, обаче ползвам луп с четене от усб и пращане към уарт и обратното. Пропускам много данни по тоя начин.
Та въпроса ми е има ли някой който да е правил усб трансфер на пик18 с прекъсвания и е готов да ми помогне с код/пример? Просто искам да прехвърлям данни от и към уарт като сериен порт.

_________________
'просто' е технически синоним на 'красиво'


Съб Яну 06, 2018 12:33 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 12:01 pm
Мнения: 2202
Мнение Re: USB на PIC18
Я дай малко повече инфо! За какво прекъсване говориш? Кой стек използваш? За CCS, XC8, MicroC?
Правил съм разни неща. Мисля, че за XC8 CDC си използва прекъсване за приемане на данни през USB, само трябва да си добавиш кода за UART-a.
Поздрави!

_________________
www.elkran.com


Съб Яну 06, 2018 12:42 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 25, 2012 8:14 am
Мнения: 4616
Местоположение: Новата земя на племето Мутум'ба
Мнение Re: USB на PIC18
Ползвам ХС8 с МСС и съм конфигурирал стека като за прекъсвания. Там обаче само се вика една функция:
if(PIR3bits.USBIF) USB_USBDeviceTasks();
Нямам проблем да ползвам нещо друго за ХС8, обаче по принцип съм адски зле на тема усб и не знам дали бих се оправил. МСС поне ми го изгенерира само.

_________________
'просто' е технически синоним на 'красиво'


Съб Яну 06, 2018 12:46 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 12:01 pm
Мнения: 2202
Мнение Re: USB на PIC18
Версията, която съм използвал, е от преди година -
Код:
USBDeviceInit();
USBDeviceAttach();
while(1)
{
SYSTEM_Tasks();//това са ти останалите процеси
        #if defined(USB_POLLING)
            // Interrupt or polling method.  If using polling, must call
            // this function periodically.  This function will take care
            // of processing and responding to SETUP transactions
            // (such as during the enumeration process when you first
            // plug in).  USB hosts require that USB devices should accept
            // and process SETUP packets in a timely fashion.  Therefore,
            // when using polling, this function should be called
            // regularly (such as once every 1.8ms or faster** [see
            // inline code comments in usb_device.c for explanation when
            // "or faster" applies])  In most cases, the USBDeviceTasks()
            // function does not take very long to execute (ex: <100
            // instruction cycles) before it returns.
            USBDeviceTasks();
        #endif


        /* If the USB device isn't configured yet, we can't really do anything
         * else since we don't have a host to talk to.  So jump back to the
         * top of the while loop. */
        if( USBGetDeviceState() < CONFIGURED_STATE )
        {
            /* Jump back to the top of the while loop. */
            continue;
        }

        /* If we are currently suspended, then we need to see if we need to
         * issue a remote wakeup.  In either case, we shouldn't process any
         * keyboard commands since we aren't currently communicating to the host
         * thus just continue back to the start of the while loop. */
        if( USBIsDeviceSuspended()== true )
        {
            /* Jump back to the top of the while loop. */
            continue;
        }

        //Application specific tasks
      APP_DeviceCDCBasicDemoTasks();//това ти е за обработка на USB пакетите
}

Отделно имаш още 2 неща:
Код:
bool USER_USB_CALLBACK_EVENT_HANDLER(USB_EVENT event, void *pdata, uint16_t size)
{
    switch( (int) event )
    {
        case EVENT_TRANSFER:
            break;

        case EVENT_SOF:
            /* We are using the SOF as a timer to time the LED indicator.  Call
             * the LED update function here. */
            //APP_LEDUpdateUSBStatus();
            break;

        case EVENT_SUSPEND:
            /* Update the LED status for the suspend event. */
            //APP_LEDUpdateUSBStatus();

            //Call the hardware platform specific handler for suspend events for
            //possible further action (like optionally going reconfiguring the application
            //for lower power states and going to sleep during the suspend event).  This
            //would normally be done in USB compliant bus powered applications, although
            //no further processing is needed for purely self powered applications that
            //don't consume power from the host.
            SYSTEM_Initialize(SYSTEM_STATE_USB_SUSPEND);
            break;

        case EVENT_RESUME:
            /* Update the LED status for the resume event. */
            //APP_LEDUpdateUSBStatus();

            //Call the hardware platform specific resume from suspend handler (ex: to
            //restore I/O pins to higher power states if they were changed during the
            //preceding SYSTEM_Initialize(SYSTEM_STATE_USB_SUSPEND) call at the start
            //of the suspend condition.
            SYSTEM_Initialize(SYSTEM_STATE_USB_RESUME);
            break;

        case EVENT_CONFIGURED:
            /* When the device is configured, we can (re)initialize the
             * demo code. */
            APP_DeviceCDCBasicDemoInitialize();
            break;

        case EVENT_SET_DESCRIPTOR:
            break;

        case EVENT_EP0_REQUEST:
            /* We have received a non-standard USB request.  The HID driver
             * needs to check to see if the request was for it. */
            USBCheckCDCRequest();
            break;

        case EVENT_BUS_ERROR:
            break;

        case EVENT_TRANSFER_TERMINATED:
            break;

        default:
            break;
    }
    return true;
}

и обработката за USB:
Код:
void APP_DeviceCDCBasicDemoTasks()
{
    /* If the user has pressed the button associated with this demo, then we
     * are going to send a "Button Pressed" message to the terminal.
     */
    uint8_t numBytesRead;
    numBytesRead = getsUSBUSART(readBuffer, sizeof(readBuffer));

    if(numBytesRead>0)
    {
        AddDataToIncomeBuffer();
        ClearReadBuffer();
    }
   
    if(USBUSARTIsTxTrfReady()==true)
    {
        SendUSBData();
    }
       
    CDCTxService();
}

Може малко да съм го модифицирал последното. Не знам дали е 1 към 1 с оригинала.

_________________
www.elkran.com


Съб Яну 06, 2018 1:46 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2586
Местоположение: Велико Търново / София
Мнение Re: USB на PIC18
То освен Device - CDC - Basic Demo има и Device - CDC - Serial Emulator framework. Което си е готов преобразувател, няма нужда от дописване. Поне не толкова.

_________________
https://github.com/slav4ocom/


Съб Яну 06, 2018 2:43 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 11:48 am
Мнения: 4715
Мнение Re: USB на PIC18
иска да си допишете ринг-буферите, без тях само 64 байта

_________________
main[-1u]={1};


Съб Яну 06, 2018 2:59 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 25, 2012 8:14 am
Мнения: 4616
Местоположение: Новата земя на племето Мутум'ба
Мнение Re: USB на PIC18
slav4o.com написа:
То освен Device - CDC - Basic Demo има и Device - CDC - Serial Emulator framework. Което си е готов преобразувател, няма нужда от дописване. Поне не толкова.


@stoyanoff, мерси! Сега ще видя дали ще стане и при мен.

@slav4o.com, къде да го намеря тоя фреймуърк? В МСС виждам само "MLA USB Device Lite"

_________________
'просто' е технически синоним на 'красиво'


Съб Яну 06, 2018 3:26 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2586
Местоположение: Велико Търново / София
Мнение Re: USB на PIC18
@Н'бабане, то от 2014г. по друг начин е цялата MLA. На microchip_solutions_v2013-02-15 го има. Вероятно всички неща ги има и на най-новата, но са по друг начин подредени нещата.... Иначе тоя пик 18 със сигурност ще тръгне със библиотеката от 2013
C:\microchip_solutions_v2013-02-15\USB\Device - CDC - Serial Emulator

_________________
https://github.com/slav4ocom/


Съб Яну 06, 2018 3:38 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 25, 2012 8:14 am
Мнения: 4616
Местоположение: Новата земя на племето Мутум'ба
Мнение Re: USB на PIC18
Това добре ама откъде да я взема тая библиотека от 2013?

_________________
'просто' е технически синоним на 'красиво'


Съб Яну 06, 2018 3:46 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2586
Местоположение: Велико Търново / София
Мнение Re: USB на PIC18
https://www.microchip.com/mplab/microch ... plications
отдолу цъкваш таб-а да е на Downloads Archive

_________________
https://github.com/slav4ocom/


Съб Яну 06, 2018 3:49 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 10, 2005 2:25 pm
Мнения: 4979
Местоположение: София
Мнение Re: USB на PIC18
Н'бабане Гт'муан'га написа:
... по принцип съм адски зле на тема усб ...

Що не използваш FT230X и да си работиш с уартите?


Съб Яну 06, 2018 5:49 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2586
Местоположение: Велико Търново / София
Мнение Re: USB на PIC18
Мда принципно само за чист конвертор е безсмислено с пик....

_________________
https://github.com/slav4ocom/


Съб Яну 06, 2018 6:18 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 25, 2012 8:14 am
Мнения: 4616
Местоположение: Новата земя на племето Мутум'ба
Мнение Re: USB на PIC18
Не е чист конвертор, иначе хич не бих се занимавал...

_________________
'просто' е технически синоним на 'красиво'


Съб Яну 06, 2018 6:24 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 10, 2005 2:25 pm
Мнения: 4979
Местоположение: София
Мнение Re: USB на PIC18
Е, то кучето винаги е заровено в конкретиката, та ти си знаеш най-добре кое е правилното решение за теб.
Аз просто нямам време да се занимавам с USB стекове в контролера. Където ми трябва, слагам FT230XQ.


Нед Яну 07, 2018 8:07 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 14 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 6 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни