madmax Inserito: 16 luglio 2004 Segnala Share Inserito: 16 luglio 2004 Ciao a tutti, ho letto che quando si spediscono dei dati lungo una linea seriale bisogna tenere conto del campionamento in ricezione e che questo viene effettuato al centro di ogni bit. Come faccio a tenere conto di questo nella progettazione della routine di ricezione? E questo campionamento chi lo fa? Il max232/485?Ho un dispositivo a microcontrollore che dovrebbe ricevere dei dati da una linea seriale.Ho parecchia confusione in testa, se qualcuno potesse darmi qualche suggerimento... grazie... Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 16 luglio 2004 Segnala Share Inserita: 16 luglio 2004 Il Max 232/485 ti converte il livello logico della RS232/485 allo 0/5V che vanno a Micro , nel micro ti devi smazzare la comunicazione.Ciao Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 16 luglio 2004 Segnala Share Inserita: 16 luglio 2004 Ho un dispositivo a microcontrollore che dovrebbe ricevere dei dati da una linea seriale Link al commento Condividi su altri siti More sharing options...
madmax Inserita: 16 luglio 2004 Autore Segnala Share Inserita: 16 luglio 2004 Per ora vorrei capire in generale come si affronta il problema...devo impostare una specie di timer che vada a leggere i bit a intervalli regolari sperando di beccarli sempre al centro??Ho trovato un programmino in assembly per un st6 e la routine di ricezione mi pare che faccia questo,Viene attivata da un interrupt sul piedino di RX e poi controlla se il segnale è 1 setta il primo bit dell'accumulatore "A" e se è 0 lo resetta. Ad ogni set o reset sposta a sinistra i bit dell'accumulatore e poi li carica in "data"*******Questa è la parte di codice che mi interessa******** REC2 LDI A,04h ; \REC3 DEC A ; | JRNZ REC3 ; | tempo = 1 / ( 9600 x 2 ). LD A,data ; / Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 16 luglio 2004 Segnala Share Inserita: 16 luglio 2004 Ho trovato un programmino in assembly per un st6 Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 16 luglio 2004 Segnala Share Inserita: 16 luglio 2004 Visto che vuoi capire come funziona c'e' un articolo per il pic ma spiega la teoria della ricezione .Lo trovi QUI Link al commento Condividi su altri siti More sharing options...
madmax Inserita: 16 luglio 2004 Autore Segnala Share Inserita: 16 luglio 2004 Prima di tutto volevo chiarirmi le idee per capire il funzionamento della ricezione a livello di singoli bit... Il mio micro è un atmega8 e ha l'UART quindi se ho capito bene ci pensa lei a fare tutto... depositando il byte in un registro... userò la routine scritta nel datasheetE se avessi più byte da ricevere?Grazie a tutti anche per il link lo guarderò domani perchè ora vado al lavoro... magari domani tornerò a farvi qualche domanda... confidando nella vostra pazienza... ciao a tutti!!!!!!!!!!!! Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 16 luglio 2004 Segnala Share Inserita: 16 luglio 2004 E se avessi più byte da ricevere? Link al commento Condividi su altri siti More sharing options...
madmax Inserita: 17 luglio 2004 Autore Segnala Share Inserita: 17 luglio 2004 Vorrei costruire un sistema di acquisizione dati remoti con tanti nodi slave e un master che interroga.Gli slave sono dispositivi a microcontrollore che acquisiscono e visualizzano in locale l'altezza del liquido in un serbatoio. Per ora ho costruito uno dei nodi slave che visualizza l'altezza su un display.Ora vorrei che il master che è un PC interrogasse gli slave e che questi ultimi rispondessero con l'altezza.Ecco perchè mi interessava la comunicazione seriale...Non sono sicuro di una una cosa, questa parte di codice (quella per l'ST6) cicla su se stessa otto volte e poi carica il dato nell'accumulatore. Perchè proprio otto volte? Ha a che fare con la velocità di 9600?? Come si ragiona in generale per ricevere i bit?RECO LDI A,04h ; \REC1 DEC A ; | JRNZ REC1 ; | tempo = 1 / ( 9600 x 2 ). NOP ; | NOP ; / REC2 LDI A,04h ; \REC3 DEC A ; | JRNZ REC3 ; | tempo = 1 / ( 9600 x 2 ). LD A,data ; / Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 17 luglio 2004 Segnala Share Inserita: 17 luglio 2004 Probabilmente in quell'esempio si sono costruiti la gestione della ricezione non avendo a disposizione di una porta seriale.In quel caso considera che 9600 sono i bit al secondo e che quindi devi fare le opportune temporizzazioni per leggere correttamente la sequenza dei bit che ti arrivano.Ciao Link al commento Condividi su altri siti More sharing options...
madmax Inserita: 18 luglio 2004 Autore Segnala Share Inserita: 18 luglio 2004 Ma allora bisogna conoscere il tempo di esecuzione delle singole istruzioni? Questo tempo è scritto nei datasheet dei microcontrollori?ciao e grazie... Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 18 luglio 2004 Segnala Share Inserita: 18 luglio 2004 Certo , e' un dato fondamentale per chi programma in assembly , anche se nel tuo caso potresti fare la cosa lavorando sugli interrupt di un timer , quindi fregandotene (in linea teorica) dei tempi delle singole istruzioni , l'iportante e' che leggi il bit in arrivo nella giusta finestra temporale.Ciao Link al commento Condividi su altri siti More sharing options...
madmax Inserita: 21 luglio 2004 Autore Segnala Share Inserita: 21 luglio 2004 Ho letto per benino l'articolo del link che mi avete dato, è abbastanza chiaro e ho capito parecchie cose.Io comunque dato che ce l'ho userò l'UART dell' ATmega8, ora cercherò di mettere in piedi la rete master-slave, per adesso con un solo slave e PC.Grazie a tutti per l'aiuto.........ciao..... Link al commento Condividi su altri siti More sharing options...
wnc Inserita: 21 luglio 2004 Segnala Share Inserita: 21 luglio 2004 Ma allora bisogna conoscere il tempo di esecuzione delle singole istruzioni? Questo tempo è scritto nei datasheet dei microcontrollori? Link al commento Condividi su altri siti More sharing options...
madmax Inserita: 21 luglio 2004 Autore Segnala Share Inserita: 21 luglio 2004 Scusa la mia ignoranza Wnc, la profondità della pipeline è l'estensione della memoria ram?? Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora