mac1994 Inserito: 10 agosto 2010 Segnala Inserito: 10 agosto 2010 Buongiorno a tutti,Vorrei collegare un MCP3201 al mio PIC 16F84A .Ho scaricato il datasheet del MCP3201 ma non ho capito come avviene l'intercambio di dati. Premetto che la programmazione è in assembler.qualcuno può aiutarmi??saluti
Livio Orsini Inserita: 10 agosto 2010 Segnala Inserita: 10 agosto 2010 Lo MCP3201 si interfaccia tramite Busa SPI, che è un bus seriale.Il PIC16F84 non ha un'iterfaccia SPI, quindi o usi 3 porte e ti scrivi il programma di gestione oppure cambi dispositivo con altro che è già provvisto di interfaccia SPI come, ad esempio, il "vecchi"16F876.Sul Webb trovi tutti i dati e le spiegazioni relative al funzionamento del bus SPI, basta una ricerca con google
mac1994 Inserita: 20 agosto 2010 Autore Segnala Inserita: 20 agosto 2010 Bongiorno,Sto studiando come fare la comunicazione bus SPI con il 16f84, ma non capisco a che frequenza devo programmare il clock ??
Livio Orsini Inserita: 20 agosto 2010 Segnala Inserita: 20 agosto 2010 Dipende da quale velocità di clock accetta la periferica. Se, ad esempio, puoi lavorare a 100kHz devi generare un clok a 100KHz. Comunque usare 16F84 con SPI non è il massimo....
mac1994 Inserita: 28 agosto 2010 Autore Segnala Inserita: 28 agosto 2010 Se non ho capito male, con questo programma che ho buttato giù, dovrei ottenere il risultato della conversione dall'MCP3201 su due registri Temp1 e Temp2.scusate se sono stato grezzo nella descrizione....javascript:emoticon('');*************************************;* *;* COMUNICAZIONE BUS SPI *;* *;*************************************;************ Parametri iniziali PROCESSOR 16F84A RADIX DEC INCLUDE "P16F84A.INC" ERRORLEVEL -302 __CONFIG _PWRTE_ON & _LP_OSC & _WDT_OFF ERRORLEVEL -224;********************** Registri generici ;CS0 A0;CLK1 A1;Dout A2 cblock 0x30Temp1 ;primo registro Temp2 ;secondo registro Temp ;registro datoRegistro ;controlla la fine del registroOutcl ; controlla la fine del clock endc;***************** Partenza ORG 0x00 ;Start Bsf STATUS,RP0 ;Swap to register bank 1 Movlw 00000100B ;Set PORTA lines Movwf TRISA Movlw 00001111B ;Set PORTB lines Movwf TRISB Bcf STATUS,RP0 ;Swap to register bank 0Inizio Bsf PORTA,0 ;metto a 1 l'usita cs Bcf PORTA,1 ;metto l'inizio del clock a 0 CLRF Registro ;metto Registro=0 CLRF Temp1 ;metto Temp1=0 CLRF Temp2 ;metto Temp2=0 CLRF Temp ;metto Temp=0;********* clock 8µs on e 8µs off ************Parti Movlw 2 Movwf Outcl Movlw 8 Movwf Registro Bcf PORTA,0 ;metto a 0 l'usita cs ;comando l'inizio della conversioneCiclo1 Bcf PORTA,1 ;inizio con il clock a 0 nop nop Riparto nop nop nop nop Riparto1 bsf PORTA,1 ;alzo il fronte di clock btfss PORTA,2 ;controllo il segnale porta 3 Goto Bitzero ;segnale dig.0Bituno ;segnale dig.1 Nop Bsf STATUS,C Goto BitnelregBitzero ;segnale dig.0 Bcf STATUS,C Goto BitnelregBitnelreg rlf Temp,F ;bit nel registro (6micro tot) Bcf PORTA,1 ;clock=0 Decfsz Registro,F ;dec Registro e se 0 salta Goto Riparto Decfsz Outcl,F ;dec Registro e se 0 salta Goto Secondo Movf Temp,W ;Muovo temp in W Movwf Temp2 ;Muovo W nel reg Temp2 Bsf PORTA,0 ;metto a 1 l'usita cs Goto finetempSecondo Movf Temp,W ;Muovo temp in W Movwf Temp1 ;Muovo W nel reg Temp1 Movlw 8 Movwf Registro Goto Riparto1finetemp nop Bcf Temp1,7 Bcf Temp1,6 Bcf Temp1,5 end
mac1994 Inserita: 2 settembre 2010 Autore Segnala Inserita: 2 settembre 2010 Ho controllato con MPLAB e il clock mi da 8microsec on e 8microsec of solo nella parte centrale quando salva il dato sul registro ho 10microsecondi....può andare bene??
Livio Orsini Inserita: 2 settembre 2010 Segnala Inserita: 2 settembre 2010 Periodo da 16us a 20us ==> f= 50kHz-62.5kHz Se la tua periferica accetta questa frequenza di clock si.Ricorda che il fronte di salita del clock deve arrivare con il dato sicuramente stabile.
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