• 25 odgovora
  • 6.194 pregleda
Re: Microchipov CDC - Serial Emulator 24.06.2013. u 15:29 · pre 162 meseci #21
E opet sam zapeo...
Radi se o podesavanju parity(to mi je bitno), a i ostalih parametara...
U usb_config.h bilo je vec otkomentarisano defined(USB_CDC_SET_LINE_CODING_HANDLER)
U main-u
Code:
#if defined(USB_CDC_SET_LINE_CODING_HANDLER)
void mySetLineCodingHandler(void)
{
    //If the request is not in a valid range
    if(cdc_notice.GetLineCoding.dwDTERate.Val > 115200)
    {
    }
    else
    {
        //Update the baudrate info in the CDC driver
        CDCSetBaudRate(cdc_notice.GetLineCoding.dwDTERate.Val);

        //Update the baudrate of the UART
        #if defined(__18CXX) || defined(__XC8)
        {
            DWORD_VAL dwBaud;
            dwBaud.Val = (DWORD)(GetSystemClock()/4)/line_coding.dwDTERate.Val-1;
            SPBRG = dwBaud.v[0];
            SPBRGH = dwBaud.v[1];
        }    
         
        #endif
    }
}
#endif

Dodao sam ovo
Code:
      CDCSetCharacterFormat(cdc_notice.GetLineCoding.bCharFormat);
        CDCSetParity(cdc_notice.GetLineCoding.bParityType);
       CDCSetDataSize(cdc_notice.GetLineCoding.bDataBits); 

ispod
Code:
CDCSetBaudRate(cdc_notice.GetLineCoding.dwDTERate.Val);

Kompajliranje prolazi.
Koliko sam pohvatao to sluzi samo da pokupim podatke sa PC-a. Sad bi trebalo prema tim podatcima podesiti port.
I tu sam zapeo jer nigde ne mogu naci kako dalje. Da li se parity mora "rucno" racunati pa stavljati u 9.bit ili vec postoji funkcija u c-u?
I neki primer za to. Pregledao sam njihov forum i par an, nisam nasao. Pa reko da napisem ovde mozda neko vidi pre nego sto iskopam.
EDIT:
Primetio sam jos nesto sto mi je cudno
Code:
void putcUSART(char c)  
{
    #if defined(__18CXX) || defined(__XC8)
        TXREG = c;
    #else
        UART2PutChar(c);
    #endif
}

Zar pre TXREG = c ili mozda posle, ne bi trebalo da stoji nesto ovako while(!TXSTAbits.TRMT)?


[Ovu poruku je menjao pedja089 dana 24.06.2013. u 17:11 GMT+1]

[Ovu poruku je menjao pedja089 dana 24.06.2013. u 17:23 GMT+1]
Re: Microchipov CDC - Serial Emulator 24.06.2013. u 18:43 · pre 162 meseci #22
Ovo sa USART treba ovako:

Code:

void putcUSART(char c)  
{
      while(!TRMT ){};
      while(!TXIF){};
      TXREG = c;  

}




[Ovu poruku je menjao goran_68 dana 24.06.2013. u 19:55 GMT+1]

[Ovu poruku je menjao goran_68 dana 24.06.2013. u 19:56 GMT+1]
Potpis
gorankg
Re: Microchipov CDC - Serial Emulator 24.06.2013. u 22:39 · pre 162 meseci #23
Koji je razlog za while(!TXIF){};?
EDIT:
Nadjoh u datasheetu diagram.
Mada, ovi microchipovi primeri mi se i ne svidjaju bas. Cini mi se da je to sklepano samo da radi, nekako.
Znao mi se pojaviti neki necefinisani bajt na izlazu, zato sam pogledao sta se desava sa slanjem i nikako mi nije bilo jasno da guraju jedan za drugim bajtove bez provere da li je prethodni poslan...
Sad sam sklonio sa stola dok ne resim pariti.
Cini mi se da sam negde na netu naleteo na primer, ali ga sad nemogu iskopati.
Re: Microchipov CDC - Serial Emulator 28.06.2013. u 08:31 · pre 162 meseci #25
Hvala naodgovoru.
Evo do sad nisam uspeo neci primer seriski komunikacije gde se moze podesiti parity bit. Da li neko ima primer ili da se bacim na pisanje koda.
Koliko sam vremena potrosio na trazenje i kopanje mogao sam do sad 3 puta sve to napisati.
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme