- Messaggi: 91
- Ringraziamenti ricevuti 16
Libreria per emulare USART via software
8 Anni 10 Mesi fa - 8 Anni 10 Mesi fa #1
da permax1958
Libreria per emulare USART via software è stato creato da permax1958
Salve,
ho un problema, vorrei usare due seriali su un PIC che ha un solo modulo USART quindi la seconda seriale dovrei crearla via software, qualcuno conosce una libreria che ha delle funzioni per emulare una seriale via software?
grazie
ho un problema, vorrei usare due seriali su un PIC che ha un solo modulo USART quindi la seconda seriale dovrei crearla via software, qualcuno conosce una libreria che ha delle funzioni per emulare una seriale via software?
grazie
Ultima Modifica 8 Anni 10 Mesi fa da permax1958.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- permax1958
- Autore della discussione
- Premium Member
Riduci
Di più
8 Anni 10 Mesi fa #2
da alfa75
Risposta da alfa75 al topic Libreria per emulare USART via software
Ciao premax1958
ho trovato questo progetto www.romanblack.com/bitbangserial.htm
dove l'autore ha emulato la seriale per trasmettere dati di un sensore su un pc il codice sembra scritto per mikroc ma con poco sforzo dovrebbe adattarsi anche a xc8
Saluti
Andrea
ho trovato questo progetto www.romanblack.com/bitbangserial.htm
dove l'autore ha emulato la seriale per trasmettere dati di un sensore su un pc il codice sembra scritto per mikroc ma con poco sforzo dovrebbe adattarsi anche a xc8
Saluti
Andrea
Si prega Accedi o Crea un account a partecipare alla conversazione.
- alfa75
- Platinum Member
Riduci
Di più
- Messaggi: 527
- Ringraziamenti ricevuti 86
8 Anni 10 Mesi fa #3
da lorix
Risposta da lorix al topic Libreria per emulare USART via software
qui hanno già fatto il porting
www.eevblog.com/forum/microcontrollers/t...msg196232/#msg196232
ci stò lavorando in questo momento
www.eevblog.com/forum/microcontrollers/t...msg196232/#msg196232
ci stò lavorando in questo momento
Si prega Accedi o Crea un account a partecipare alla conversazione.
- lorix
- New Member
Riduci
Di più
- Messaggi: 8
- Ringraziamenti ricevuti 0
8 Anni 10 Mesi fa #4
da permax1958
Risposta da permax1958 al topic Libreria per emulare USART via software
Grazie per l'aiuto, a prima vista mi sembra molto interessante, ora vedo di modificare la funzione di ricezione per gestirla via interrupt usando un interrupt on change su qualche piedino del Pic.
Grazie
x lorix
se ci stai lavorando anche per una gestione via interrupt fammi sapere
Grazie
x lorix
se ci stai lavorando anche per una gestione via interrupt fammi sapere
Si prega Accedi o Crea un account a partecipare alla conversazione.
- permax1958
- Autore della discussione
- Premium Member
Riduci
Di più
- Messaggi: 91
- Ringraziamenti ricevuti 16
8 Anni 10 Mesi fa #5
da lorix
Risposta da lorix al topic Libreria per emulare USART via software
di oggi sono solo riuscito a sistemare la trasmissione e relative prove usando il tmro
e impachettando il tutto con sprintf
appena ho tempo volevo anch'io sistemare la ricezione in interrupt
il primo che riesce pubblica
per utilizzo con intosc preferisco fermarmi a 9600 bps
#define SER_BAUD 104 // TMR0 ps= 2 ((8Mhz/4/2)/19200 baud) = 52 9600 = 104
#define SER_BIT 1 // Signal MODE - 1 = Normal 0 = Inverted (Use Inverted for direct 232)
#define TxPin PORTAbits.RA4 // which pin for serial out
#define RxPin PORTAbits.RA3 // which pin for serial in
#define dbOut PORTAbits.RA3 // which pin for serial in
unsigned char str[10];// conversione sprintf integer to ASCII
void send_serial_byte(unsigned char);
void send_serial_byte(unsigned char data)
{
unsigned char index = 8; // 8 data bits to send
TMR0 = (256 - SER_BAUD); // load TMR0 value for first baud;
TxPin = !SER_BIT; // make start bit
while(TMR0 > 127); // wait for baud
do // send 8 serial bits, LSB first
{
if(data & 1<<0)
TxPin = SER_BIT; // send data bit
else TxPin =!SER_BIT;
TMR0 -= SER_BAUD; // load corrected baud value
index--;
data = (data >> 1); // rotate right to get next bit
while(TMR0 > 127); // wait for baud
}
while(index);
TxPin = SER_BIT; // make stop bit
TMR0 -= SER_BAUD; // wait for baud
while(TMR0 > 127);
}
void send_serial_string(unsigned char data){
{
for ( int i = 0; i < data; i++ )
send_serial_byte(str);
}
send_serial_byte(13); // carriage return
//send_serial_byte(10); // line feed
}
void main(void) {
sprintf(str, "R= %u", t_rampa); // vuole #include <stdio.h>
send_serial_string (7); // nr caratteri
}
e impachettando il tutto con sprintf
appena ho tempo volevo anch'io sistemare la ricezione in interrupt
il primo che riesce pubblica
per utilizzo con intosc preferisco fermarmi a 9600 bps
#define SER_BAUD 104 // TMR0 ps= 2 ((8Mhz/4/2)/19200 baud) = 52 9600 = 104
#define SER_BIT 1 // Signal MODE - 1 = Normal 0 = Inverted (Use Inverted for direct 232)
#define TxPin PORTAbits.RA4 // which pin for serial out
#define RxPin PORTAbits.RA3 // which pin for serial in
#define dbOut PORTAbits.RA3 // which pin for serial in
unsigned char str[10];// conversione sprintf integer to ASCII
void send_serial_byte(unsigned char);
void send_serial_byte(unsigned char data)
{
unsigned char index = 8; // 8 data bits to send
TMR0 = (256 - SER_BAUD); // load TMR0 value for first baud;
TxPin = !SER_BIT; // make start bit
while(TMR0 > 127); // wait for baud
do // send 8 serial bits, LSB first
{
if(data & 1<<0)
TxPin = SER_BIT; // send data bit
else TxPin =!SER_BIT;
TMR0 -= SER_BAUD; // load corrected baud value
index--;
data = (data >> 1); // rotate right to get next bit
while(TMR0 > 127); // wait for baud
}
while(index);
TxPin = SER_BIT; // make stop bit
TMR0 -= SER_BAUD; // wait for baud
while(TMR0 > 127);
}
void send_serial_string(unsigned char data){
{
for ( int i = 0; i < data; i++ )
send_serial_byte(str);
}
send_serial_byte(13); // carriage return
//send_serial_byte(10); // line feed
}
void main(void) {
sprintf(str, "R= %u", t_rampa); // vuole #include <stdio.h>
send_serial_string (7); // nr caratteri
}
Si prega Accedi o Crea un account a partecipare alla conversazione.
- lorix
- New Member
Riduci
Di più
- Messaggi: 8
- Ringraziamenti ricevuti 0
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.