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
#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);
CDCSetCharacterFormat(cdc_notice.GetLineCoding.bCharFormat);
CDCSetParity(cdc_notice.GetLineCoding.bParityType);
CDCSetDataSize(cdc_notice.GetLineCoding.bDataBits);
ispod
Code:
CDCSetBaudRate(cdc_notice.GetLineCoding.dwDTERate.Val);
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
}
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]