Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Microchip Mcp3201 E 16f84a - comunicazione tra MCP3201 e 16F84A


Messaggi consigliati

Inserito:

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


Inserita:

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 smile.gif

  • 2 weeks later...
Inserita:

Bongiorno,

Sto studiando come fare la comunicazione bus SPI con il 16f84, ma non capisco a che frequenza devo programmare il clock ??

Inserita:

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....

  • 2 weeks later...
Inserita:

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 0x30

Temp1 ;primo registro

Temp2 ;secondo registro

Temp ;registro dato

Registro ;controlla la fine del registro

Outcl ; 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 0

Inizio

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 conversione

Ciclo1

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.0

Bituno ;segnale dig.1

Nop

Bsf STATUS,C

Goto Bitnelreg

Bitzero ;segnale dig.0

Bcf STATUS,C

Goto Bitnelreg

Bitnelreg

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 finetemp

Secondo

Movf Temp,W ;Muovo temp in W

Movwf Temp1 ;Muovo W nel reg Temp1

Movlw 8

Movwf Registro

Goto Riparto1

finetemp

nop

Bcf Temp1,7

Bcf Temp1,6

Bcf Temp1,5

end

Inserita:

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??

Inserita:

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.

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...