ciao,chiedo aiuto a qualcuno che conosca il componente
il diffuso trx nonmi lavora correttamente, su TXout riesco ad avere un pò di segnale,ma mi va continuamente in current limit in concomitanza col livello 0 sul pin TX/RX
in pratica quando il TX è acceso è automaticamente in current limit.A meno che io disalimenti lo stadio di potenza a 12V,allora il segnale su TXout aumenta anche di livello. Altrimenti lo stadio di potenza commuta dal +12 a 0V in sincronia col segnale TX/RX
Faccio presente che questo avviene anche se l'uscita è sospesa in aria,e se l'ingresso dello stadio di potenza è aperto,o collegato a massa invece che a TXOUT.
Ho usato i valori che ci sono nell'AN2451
formatting link
Non ho configurato nessun registro,trasmetto in continuazione un solo char alla volta a 2400bps,ogni 100 ms,abbasso il pin TX/RX circa 5 ms prima di inviare il carattere,e lo rialzo dopo circa 5 ms che tutto il carattere è stato inviato,quindi sono ben lontanto dal Tx timeout. Uso lo stesso segnale TX/RX per resettare il watchdog e ripeto che non ho scritto nessun registro,per cui è tutto come di default La VDC e VDD sono collegate assieme a 5V
"RobertoA" ha scritto nel messaggio news:k5dt2g$m98$ snipped-for-privacy@tdi.cu.mi.it...
spero proprio di arrivare ai 4800bps ,mi basta e avanza,e il fatto che l'ST7540 sia usatissimo in contatori di consumo elettrico non mi fa cercare altrove.
purtroppo sono ancora indietro,sono giusto riuscito a buttare fuori qualche dato in seriale e a leggere il contenuto del Control Register
non avendo altre UART ho dovuto buttarmi su SPI e la cosa non è comodissima per leggere
1)L'ST7540 è SPI master
2)invia clock quasi sempre,si blocca solo per un paio di cicli quando commuta REG/DATA o RX/TX per il tempo Tcc
3)a parte il carrier detect non ha un vero slave select
per leggere il Contr Register alla pressione di un pulsante di prova ho fatto così,si potrà fare meglio ,credo
in pratica abilito l'SPI in concomitanza col blocco del clock,appena riparte il clock l'SPI interrupt scatta nell'interrupt routine disabilito l'SPI appena ho letto il numero di byte(3 ) richiesto
vedilo come pseudo codice //******************************************************* void St7540_Init(void) { ST7540_DATA_MODE; ST7540_RX_MODE; SPI0_INTERRUPT_ENA; SPI0_DIS; } //******************************************************* void St7540_ReadControlReg(void) { myrd_spibuf_index =0;//azzero l'indice del buffer per i dati letti da SPI //il pin del clock è ancora un I/O generico ,attendo che commuti a 0 per accendere SPI while(PORTA_5); / /bloccante per un semiperiodo clock:=104 us a 4800 bps ST7540_REG_MODE ; SPI0_ENA; MARK_SPI7540_READ_REQ ; CLEAR_SPI7540_PRINT_REQ; }
//******************************************************* //nell'interrupt SPI //******************************************************* void InterruptSpiST7540(void) { if(SPI0STATUS & 0x80) { //PORTA_0=1; //uso questo pin per prova sync oscilloscopio Status = SPI0STATUS ; //Leggo lo status register if(ST7540_REG1_DATA0)myrd_spiST7540reg [myrd_spibuf_index++] = SPI0DATAREG; //se leggo control reg. else myrd_spibuf[myrd_spibuf_index++] = SPI0DATAREG; //se leggo dati mains }
if(myrd_spibuf_index==3) { SPI0_DIS; //PORTA_0=0; //uso questo pin per prova sync oscilloscopio CLEAR_SPI7540_READ_REQ ; MARK_SPI7540_PRINT_REQ; } } //******************************************************* comunque verificherò meglio cosa si riesce a fare,perchè l'ottimo e collaborativo Enrico Marinoni di Silica,mi ha fatto avere in prova diverse Demoboard ST7540. Tra l'altro è uno appassionato di elettronica,che sulle cose ci smanetta sopra e mi ha dato diverse dritte,oltre a quelle che ci sono sul suo sito
formatting link
,che ,non so come, riesce a trovare il tempo di aggiornare.Per chi non lo conoscesse contiene parecchio materiale su componenti ST,con riassunti ,codice ecc Unico rimpianto è non aver potuto partecipare all'annuale ST Day,anche se essendomi trovato da quelle parti. guardacaso nella pausa pranzo, ho potuto "assaggiare" di cosa si era trattato
Ci dedicherò un pò di tempo questa settimana,se hai domande o prove da suggerirmi...
"blisca" ha scritto nel messaggio news:k5gh5l$3ej$ snipped-for-privacy@speranza.aioe.org...
Dici che si trova installato su molti contatori, ma parliamo di contatore Enel ? Mi interessa molto la cosa perche' a breve dovrei averne bisogno, spero che un progetto che sto seguendo si evolva ed utilizzi come comunicazione il cavo 220 Gia' i 2400/4800 baud potrebbero bastare se la comunicazione si dimostrasse robusta abbastanza specie per trasmissioni su linee disturbate Sito interessante, e nominativo che mi salvo subito Grazie RobertoA
"blisca" ha scritto nel messaggio news:k5jokh$1o7$ snipped-for-privacy@speranza.aioe.org...
lo dico nel caso ci fosse uno sbadato come me
mi ero sempre dimenticato di una cosa ovvia, e questo fatto pareva non avere effetto finchè non ho provato certe condizioni
se si comunica in SPI,che è per sua natura una comunicazione sincrona,
****ricordarsi di mettere subito a 0 il bit 14 del registro di controllo,cribbio**** perchè altrimenti l'ST7540 per i dati resta in modo asincrono,e succede che il clock si ferma dopo circa 150 ms di trasmissione sulla rete elettrica
lui di default è asincrono,per poter essere utilizzato al volo senza scrivere niente nel control register,ma la comunicazione col control registe è solo sincrona per cui se uno trasmette una breve stringa ogni tanto,magari in concomitanza con un intervento umano,tipo pressione su un pulsante,non se ne accorge ma se si prova a trasmettere la breve stringa ogni 100ms dopo una paio il clock sparisce e riprende dopo circa un secondo,e il povero microcontrollore SPI slave senza clock resta lì ad aspettare
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.