spacer.png, 0 kB

Torna indietro   Roboitalia.com - Il primo portale in Italia sulla robotica amatoriale > Robotica di base > Elettronica > E. Digitale

Rispondi
 
Strumenti discussione Modalità  visualizzazioe
  #1  
Vecchio 05-07-2007, 16.02.54
anna.lipari anna.lipari non è collegato
Robottaro senior
 
Data registrazione: 06-06-2007
Residenza: Milano
Messaggi: 34
Potenza reputazione: 52
anna.lipari E' per ora ancora un mistero
Predefinito Software Uart Functions

Ciao a tutti !!
Come sicuramente vi ricorderete devo programmare una seriale software per il pic 18f452 (quella hardware è già impgnata e io ne ho disogno di un'altra !)
Ho letto nel datasheet che devo definire le seguenti funzioni :

DelayTXBitUART Delay for:
((((2*FOSC) / (4*baud)) + 1) / 2) - 12 cycles

DelayRXHalfBitUART Delay for:
((((2*FOSC) / (8*baud)) + 1) / 2) - 9 cycles

DelayRXBitUART Delay for:
((((2*FOSC) / (4*baud)) + 1) / 2) - 14 cycles

Ma non ho idea del come fare !!!
Help me please !!!!

Anna Lipari
Rispondi citando
  #2  
Vecchio 05-07-2007, 19.00.17
L'avatar di selfservice
selfservice selfservice non è collegato
Moderator
 
Data registrazione: 16-11-2003
Residenza: Foligno
Messaggi: 1,183
Potenza reputazione: 94
selfservice E' circondato da una spettacolare aurea
Invia un messaggio via MSN a selfservice
Predefinito

suppongo programmi in C...
allora viene una roba del tipo

#define DelayRXBitUART ((((2*FOSC) / (4*baud)) + 1) / 2) - 14

ecc ecc
__________________
Beatu chi lu pota, beatu chi lu zappa, na paralise secca a chi ce mette l'acqua!
Rispondi citando
  #3  
Vecchio 06-07-2007, 07.20.08
anna.lipari anna.lipari non è collegato
Robottaro senior
 
Data registrazione: 06-06-2007
Residenza: Milano
Messaggi: 34
Potenza reputazione: 52
anna.lipari E' per ora ancora un mistero
Predefinito

Credo che #define non serva per definire una funzione.......


Anna Lipari

Citazione:
Orginalmente inviato da selfservice Visualizza messaggio
suppongo programmi in C...
allora viene una roba del tipo

#define DelayRXBitUART ((((2*FOSC) / (4*baud)) + 1) / 2) - 14

ecc ecc
Rispondi citando
  #4  
Vecchio 06-07-2007, 08.18.53
L'avatar di astrobeed
astrobeed astrobeed non è collegato
Robottaro sostenitore
 
Data registrazione: 18-03-2004
Residenza: Roma
Età : 60
Messaggi: 3,377
Potenza reputazione: 350
astrobeed La sua reputazione è oltre la sua famaastrobeed La sua reputazione è oltre la sua famaastrobeed La sua reputazione è oltre la sua famaastrobeed La sua reputazione è oltre la sua famaastrobeed La sua reputazione è oltre la sua famaastrobeed La sua reputazione è oltre la sua famaastrobeed La sua reputazione è oltre la sua famaastrobeed La sua reputazione è oltre la sua fama
Predefinito

Citazione:
Orginalmente inviato da anna.lipari Visualizza messaggio
Ciao a tutti !!
Come sicuramente vi ricorderete devo programmare una seriale software per il pic 18f452 (quella hardware è già impgnata e io ne ho disogno di un'altra !)
Ma non ho idea del come fare !!!
Help me please !!!!
Significa che per funzionare la seriale software richiede dei delay prestabiliti che sono in funzione del baud rate desiderato.
In pratica devi aggiungere tre funzioni denominate come richiesto che eseguono i tre delay ricavabili dal calcolo citato per ogni singola funzione.
Esempio pratico per 57600 baud con clock a 40 MHz, i ritardi sono ottenuti tramite le funzioni di delay del C18 che conteggiano i cicli macchina:

void DelayTXBitUART(void)
{
Delay10TCYx(19);
Delay1TCY();
Delay1TCY();
Delay1TCY();
}

void DelayRXHalfBitUART(void)
{
Delay10TCYx(9);
Delay1TCY();
Delay1TCY();
}

void DelayRXBitUART(void)
{
Delay10TCYx(19);
Delay1TCY();
Delay1TCY();
Delay1TCY();
}

Per sapere il valore esatto dei delay devi svilupppare i relativi calcoli per ogni funzione sostituendo a FOSC il valore del clock reale del pic, tipicamente 40 MHz e a baudrate il suo valore, p.e. 57600.
In pratica queste funzioni non fanno altro che definire la durata temporale di un bit, sia in trasmissione che in ricezione, e quanto dura un 1/2 bit che è indispensabile per lo start bit che per l'appunto dura 1.5 bit.
__________________
Bye
Rispondi citando
  #5  
Vecchio 06-07-2007, 08.29.41
anna.lipari anna.lipari non è collegato
Robottaro senior
 
Data registrazione: 06-06-2007
Residenza: Milano
Messaggi: 34
Potenza reputazione: 52
anna.lipari E' per ora ancora un mistero
Predefinito

Ok sto cominciando a capire !!!
il clock reale del PIC è il clock esterno ?? In questo caso io ho n clock escterno di 20 MHz, e vorrei avere una velocità di 19200. Faccio i calcoli con questi valore ?? Un'altra domanda....posso collegare direttamente la seriale del PC ai pin 37 e 38 del mio pic 18f452 ??

Citazione:
Orginalmente inviato da astrobeed Visualizza messaggio
Significa che per funzionare la seriale software richiede dei delay prestabiliti che sono in funzione del baud rate desiderato.
In pratica devi aggiungere tre funzioni denominate come richiesto che eseguono i tre delay ricavabili dal calcolo citato per ogni singola funzione.
Esempio pratico per 57600 baud con clock a 40 MHz, i ritardi sono ottenuti tramite le funzioni di delay del C18 che conteggiano i cicli macchina:

void DelayTXBitUART(void)
{
Delay10TCYx(19);
Delay1TCY();
Delay1TCY();
Delay1TCY();
}

void DelayRXHalfBitUART(void)
{
Delay10TCYx(9);
Delay1TCY();
Delay1TCY();
}

void DelayRXBitUART(void)
{
Delay10TCYx(19);
Delay1TCY();
Delay1TCY();
Delay1TCY();
}

Per sapere il valore esatto dei delay devi svilupppare i relativi calcoli per ogni funzione sostituendo a FOSC il valore del clock reale del pic, tipicamente 40 MHz e a baudrate il suo valore, p.e. 57600.
In pratica queste funzioni non fanno altro che definire la durata temporale di un bit, sia in trasmissione che in ricezione, e quanto dura un 1/2 bit che è indispensabile per lo start bit che per l'appunto dura 1.5 bit.
Rispondi citando
  #6  
Vecchio 06-07-2007, 09.22.43
L'avatar di selfservice
selfservice selfservice non è collegato
Moderator
 
Data registrazione: 16-11-2003
Residenza: Foligno
Messaggi: 1,183
Potenza reputazione: 94
selfservice E' circondato da una spettacolare aurea
Invia un messaggio via MSN a selfservice
Predefinito

ah, strano, di solito si definiscono delle costanti con #define che poi verranno utilizzate dentro la routine di delay propria della seriale software... almeno con avrlib così ho sempre fatto...
__________________
Beatu chi lu pota, beatu chi lu zappa, na paralise secca a chi ce mette l'acqua!
Rispondi citando
  #7  
Vecchio 06-07-2007, 09.30.58
L'avatar di astrobeed
astrobeed astrobeed non è collegato
Robottaro sostenitore
 
Data registrazione: 18-03-2004
Residenza: Roma
Età : 60
Messaggi: 3,377
Potenza reputazione: 350
astrobeed La sua reputazione è oltre la sua famaastrobeed La sua reputazione è oltre la sua famaastrobeed La sua reputazione è oltre la sua famaastrobeed La sua reputazione è oltre la sua famaastrobeed La sua reputazione è oltre la sua famaastrobeed La sua reputazione è oltre la sua famaastrobeed La sua reputazione è oltre la sua famaastrobeed La sua reputazione è oltre la sua fama
Predefinito

Citazione:
Orginalmente inviato da selfservice Visualizza messaggio
ah, strano, di solito si definiscono delle costanti con #define che poi verranno utilizzate dentro la routine di delay propria della seriale software... almeno con avrlib così ho sempre fatto...
Si in effetti con l'AVRLIB è così, invece con le routine di libreria del C18 per l'emulazione software dell'uart occorre scriversi le tre funzioni che attuano i ritardi.
__________________
Bye
Rispondi citando
  #8  
Vecchio 06-07-2007, 11.52.25
L'avatar di selfservice
selfservice selfservice non è collegato
Moderator
 
Data registrazione: 16-11-2003
Residenza: Foligno
Messaggi: 1,183
Potenza reputazione: 94
selfservice E' circondato da una spettacolare aurea
Invia un messaggio via MSN a selfservice
Predefinito

azz... abbastanza pallosa insomma...
__________________
Beatu chi lu pota, beatu chi lu zappa, na paralise secca a chi ce mette l'acqua!
Rispondi citando
  #9  
Vecchio 07-07-2007, 07.44.11
anna.lipari anna.lipari non è collegato
Robottaro senior
 
Data registrazione: 06-06-2007
Residenza: Milano
Messaggi: 34
Potenza reputazione: 52
anna.lipari E' per ora ancora un mistero
Predefinito

Scusate ho bisogno ancora di altri chiarimenti....

il clock reale del PIC è il clock esterno ?? In questo caso io ho un clock escterno di 20 MHz, e vorrei avere una velocità di 19200.
Fosc = 20M ???
e baud = 19200 ???

E poi per esempio con 40Mhz e 57600 baud a me viene 162 cicli
non sarebbe

void DelayTXBitUART(void)
{
Delay10TCYx(16);
Delay1TCY();
Delay1TCY();
}

Come faccio a sapere quanti ms sono un ciclo ????

Un'altra domanda....posso collegare direttamente la seriale del PC ai pin 37 e 38 del mio pic 18f452 ??

Help me please....

Anna Lipari
Rispondi citando
  #10  
Vecchio 07-07-2007, 10.52.38
L'avatar di selfservice
selfservice selfservice non è collegato
Moderator
 
Data registrazione: 16-11-2003
Residenza: Foligno
Messaggi: 1,183
Potenza reputazione: 94
selfservice E' circondato da una spettacolare aurea
Invia un messaggio via MSN a selfservice
Predefinito

per collegare la seriale del pc al pic ci va un MAX232. alcuni mettono solo delle resistenze di limitazione (c'è qualosa spiegato sul manuale del picbasic) ma è un metodo molto grezzo.
a rigor di logica FOSC è la frequenza del quarzo...
__________________
Beatu chi lu pota, beatu chi lu zappa, na paralise secca a chi ce mette l'acqua!
Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione
Modalità  visualizzazioe

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code è Attivato
Le smilies sono Attivato
[IMG] è Attivato
Il codice HTML è Disattivato

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
UART o I2C? argoI Comunicazione 4 08-01-2011 13.06.06
UART dsPIC33 KID1412 E. Digitale 15 24-05-2010 06.59.43
UART RX in VHDL FrancescoVHDL E. Digitale 4 01-07-2008 21.21.50
Uart e formatting codes argoI P. in C, C++ 2 20-06-2008 21.51.17
Buffer sulll' UART anna.lipari E. Digitale 11 24-07-2007 09.07.35


Tutti gli orari sono GMT. Adesso sono le: 13.07.39.


Basato su: vBulletin Versione 3.8.8
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Realizzazione siti web Cobaltica Foligno
spacer.png, 0 kB