Haz una pregunta
  Foros de Electrónica » Diseño digital » Interfaces y Programación
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

14/04/2012 #1


Duda con SPI y PICBASIC
Hola a todos. He estado buscando información sobre SPI y PICBASIC y la verdad es que no he encontrado gran cosa, así que recurro a vosotros.

El caso es que no se prácticamente nada y me he propuesto aprender con un ejemplo sencillo. Me gustaría saber como leer un sensor de temperatura (TC77) y en función del dato obtenido hacer algo

¿Alguien sabe como obtener el dato de temperatura del sensor para poder trabajar posteriormente con el?

Un saludo
14/04/2012 #2


Hola syryus

Ciertamente encontrar las 2 cosas (SPI y PICBASIC) juntas no lo vas a lograr.
Primero busca en Google.com indagando por SPI; lo hice y encontré algo que te adjunto.
Luego busca PicBasic PRO en el mismo Google.com de seguro lo encontraras.

Como Dicen los norteamericanos: “By The Way” qué simulador utilizas para el desarrollo de tus circuitos?.

saludos
a sus ordenes
15/04/2012 #3


Hola MrCarlos, muchas gracias por tu ayuda. Sobre protocolo SPI ya busqué algo de información por separado y más o menos lo entiendo, el problema es la sintaxis para trabajar con el en picbasic.

Para simular uso ISIS de Proteus y como compilador PICBASICPRO

Voy a echarle un vistazo a los ejemplos que pones
15/04/2012 #4


El protocolo SPI con Picbasic, se hace solo por HardWare....

en la parte final de estos ejemplos se ve como hacer el SPIMAster y el SPI Slave...
15/04/2012 #5


Hola, tambien estoy interesado
15/04/2012 #6


Sigo sin aclararme, es que soy muy torpe jaja.

A ver:

-Supongamos como digo un TC77 que tiene una entrada de reloj (SCK), una de Chip Select (CS) y una Serial I/O (SI/O)
-Están conectados respectivamente a RC0, RC1 y RC2

¿Cómo obtengo el dato que necesito (temperatura) y lo almaceno en una variable?

A ver si alguien ha hecho algo parecido

Muchas gracias!
15/04/2012 #7


¿Cómo obtengo el dato que necesito (temperatura) y lo almaceno en una variable?
Muuuuuyyy buena pregunta... voy a intentar hacer un ejemplo.. a ver si puedo...
16/04/2012 #8


A ver Amigos...

Noticia buena y noticia mala....

la buena es que logre que se comunique el TC77 con un 16f876A..

la mala es que no tengo idea de que es lo que manda...

anexo simulacion... a ver que se les ocurre que falte!
Archivos Adjuntos
Tipo de Archivo: rar SPI.rar (31,3 KB (Kilobytes), 185 visitas)
16/04/2012 #9


Lubeck eres una máquina ;-)

Le he echado solamente un vistazo por encima pero creo que lo único que habría que hacer es tratar la variable que se obtiene con una simple operación matemática.

Cuando llegue a casa lo analizo con calma
17/04/2012 #10


Una cosa. ¿Por qué defines A como word y no como byte?

¿Qué es Pir.3?

Un saludo
17/04/2012 #11


¿Por qué defines A como word y no como byte?
porque lo que manda el tc77 son 16bits, un byte son 8 bits, y un word son 16bits que es lo que necesitamos...

¿Qué es Pir.3?
pir.3 es la bandera de interrupcion del SPI, ese bit del registro PIR el micro lo pone en alto cuando llega algo al buffer de recepcion del SPI(registro SSPBUF) ... osea un byte..8bits... y se tiene que borrar por software, por eso se pone pir.3=0
18/04/2012 #12


Pues no se que pasa entonces...
18/04/2014 #13

Avatar de papirrin

me permito reflotar este tema porque el codigo de lubeck parece no estar correcto, en todo caso seria asi:

Código:
DEfine Osc 4

TrisB=0
ADCON1 = 7  

Define LCD_DREG  PORTB
Define LCD_DBIT  4
Define LCD_RSREG PORTB
Define LCD_RSBIT 1
Define LCD_RWREG PORTB
Define LCD_RWBIT 2
Define LCD_EREG  PORTB
Define LCD_EBIT  3
DEFINE LCD_BITS 4 


A VAR word        
 
SSPCOn =%00100001
SSPStat=%01000000
PIR1.3 = 0         
   
TrisC.3=0
LCDOut $FE,1,"LUBECK" 
pause 1000        

PortB.0=0     

 SSPBUF=255 : GoSub letclear
 A.byte0=SSPBUF 
 SSPBUF=255 : GoSub letclear 
 A.byte1=SSPBUF   

 SSPBUF = 0:  GoSub letclear 
 A.byte0=SSPBUF  
 SSPBUF = 0:  GoSub letclear                 		
 A.byte1=SSPBUF

 portb.0=1
 pause 1500
 
main:
 PortB.0=0         
 SSPBUF = 0:  GoSub letclear 
 a.byte0 = SSPBUF 
 SSPBUF = 0:  GoSub letclear                 		                            
 a.byte1 = SSPBUF 
 PortB.0=1                
 lcdout $FE,1, dec a,$FE,$C0,dec pir1.3 
 pause 1000  
GoTo main  

Letclear:
 IF pir1.3 = 0 Then letclear 
 PauseUs 25        
 pir1.3 = 0         
Return

End
porque el registro SSPBUF solo es de 8 bits, y como estaba se perderia los 8 bits restantes.
23/04/2016 #14


Ejemplo de SPI con Picbasic
Yo tampoco encontraba nada así que después de pegarme un buen rato con picbasic lo conseguí.

He dejado un ejemplo en este blog:

http://recretronica.wordpress.com

Espero que sirva de ayuda para alguien.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Interfaces y Programación

Lenguajes de programación, gestión y manejo de puertos

Cerrar
Foros de Electrónica » Diseño digital » Interfaces y Programación

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.