Ahoj,
zkouším UART, ale nějak mi to nechce dělat to to chci. Z první picky jde UART signál, tak jak chci, ale s druhou je nějáký problém, chci vypsat přenášený byte na ledky, ale tam je chaos a svítí mi tam nějáké blbosti. Můžete se prosím na to někdo mrknout. Děkuju
Tak asi je problém v inicializaci, ptorože jsem ju přebral z 16F877 a některý bity nemůžu ani najít v datasheetu.
tak jsem ji zkusil udělat podle 16F690 datasheetu a nějáký stránky na netu, a první picka vysílá, ale druhá ne a ne příjímat Mohl byste se na to prsím někdo podívat, co mi tam chybí?
char UART_Init(const long int baudrate)
{
unsigned int x;
x = (_XTAL_FREQ / baudrate)/(64) - 1;
//TRANSMIT STATUS AND CONTROL REGISTER
// CSRC
TX9 = 0;
TXEN = 1;
SYNC = 0;
SENB = 0;
BRGH = 0;
// TRMT ???
// TX9D 9. bit
//RECEIVE STATUS AND CONTROL REGISTER
SPEN = 1;
RX9 = 0;
// SREN
CREN = 1; ???
ADDEN = 0;
FERR = 0;
OERR = 0;
// RX9D 9. bit
SPBRG = x;
return 0;
}
char UART_Read()
{
while(!RCIF); //Waits for Reception to complete
return RCREG; //Returns the 8 bit data
}
void UART_Write(char data)
{
while(!TRMT); //Waiting for Previous Data to Transmit completly
TXREG = data; //Writing data to Transmit Register, Starts transmission
}
char UART_TX_Empty()
{
return TRMT; //Returns Transmit Shift Status bit
}
Děkuju. Nakonec mi to taky jde, udělal jsem novou knihovnu a vynuloval ANSEL a šlape to. Jen mám problém, že mi to nepřenáší bit s nejnižší hodnotou. Je možný, že by to bylo tím, že používám vnitřní oscilátor?