mac1994 Inserito: 10 agosto 2010 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 10 agosto 2010 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
mac1994 Inserita: 20 agosto 2010 Autore Segnala Share 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 ?? Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 20 agosto 2010 Segnala Share 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.... Link al commento Condividi su altri siti More sharing options...
mac1994 Inserita: 28 agosto 2010 Autore Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
mac1994 Inserita: 2 settembre 2010 Autore Segnala Share 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?? Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 2 settembre 2010 Segnala Share 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. 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