Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Microchipov CDC - Serial Emulator

[es] :: Elektronika :: Mikrokontroleri :: Microchipov CDC - Serial Emulator

Strane: 1 2

[ Pregleda: 3486 | Odgovora: 25 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

pedja089

Član broj: 260085
Poruke: 112
*.dynamic.sbb.rs.



+5 Profil

icon Re: Microchipov CDC - Serial Emulator24.06.2013. u 15:29 - pre 98 meseci
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]
 
Odgovor na temu

goran_68

Član broj: 89012
Poruke: 895
*.dynamic.isp.telekom.rs.



+79 Profil

icon Re: Microchipov CDC - Serial Emulator24.06.2013. u 18:43 - pre 98 meseci
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]
gorankg
 
Odgovor na temu

pedja089

Član broj: 260085
Poruke: 112
*.dynamic.isp.telekom.rs.



+5 Profil

icon Re: Microchipov CDC - Serial Emulator24.06.2013. u 22:39 - pre 98 meseci
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.
 
Odgovor na temu

goran_68

Član broj: 89012
Poruke: 895
*.dynamic.isp.telekom.rs.



+79 Profil

icon Re: Microchipov CDC - Serial Emulator24.06.2013. u 22:56 - pre 98 meseci
Postavljen TXIF pokazuje da je TXREG prazan a bit TRMT da je TSR prazan.
gorankg
 
Odgovor na temu

pedja089

Član broj: 260085
Poruke: 112
*.dynamic.sbb.rs.



+5 Profil

icon Re: Microchipov CDC - Serial Emulator28.06.2013. u 08:31 - pre 98 meseci
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.
 
Odgovor na temu

pedja089

Član broj: 260085
Poruke: 112
*.dynamic.sbb.rs.



+5 Profil

icon Re: Microchipov CDC - Serial Emulator29.06.2013. u 17:55 - pre 98 meseci
Sve resno... Na kraju seo i napisao parity rutine.
Zahvaljujem svima na pomoci.
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: Microchipov CDC - Serial Emulator

Strane: 1 2

[ Pregleda: 3486 | Odgovora: 25 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.