TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: krizpin en 07 de Octubre de 2015, 20:56:52
-
BUENAS A TODOS.
ALGUIEN A PROGRAMADO ESTE EXPANSOR DE PUERTOS CON PROTON??? NO CONSIGO HACERLO FUNCIONAR
Device = 16F877A
Xtal 20
Declare Reminders = Off
Config CP_OFF, DEBUG_OFF, WRT_OFF, CPD_OFF, LVP_OFF, PWRTE_ON, WDT_OFF, HS_OSC, BOREN_OFF, WDTE_OFF
Declare Reminders = On
Declare LCD_Type 0
Declare LCD_DTPin PORTD.4
Declare LCD_RSPin PORTD.2
Declare LCD_ENPin PORTD.3
Declare LCD_Lines 4
Declare SDA_Pin PORTC.4
Declare SCL_Pin PORTC.3
Declare Slow_Bus yes
Declare All_Digital true
Declare PortB_Pullups = 1
Dim a As Byte
Dim b As Byte
Dim c As Byte
Dim d As Byte
Symbol leer=%01000001
Symbol grabar=%01000000
Symbol led=PORTD.0
TRISA = 0
TRISB = %00001111
TRISC = 0
TRISD = 0
TRISE = 0
'********************************
PORTA = 0
PORTB = 0
PORTC = 0
PORTD = 0
PORTE = 0
Cls
DelayMS 10
High led
Print At 1,1,"hola"
DelayMS 100
Low led
Cls
configura:
BStart
BusOut grabar,0,[%11111111]
DelayMS 15
BusOut grabar,1,[%00000000]
DelayMS 15
BusOut grabar,2,[%00000000]
DelayMS 15
BusOut grabar,5,[%10101010]
BStop
inicio:
BStart
BusOut grabar
BusIn leer,0,[a]
DelayMS 15
BusIn leer,11,
DelayMS 15
BusIn leer,5,[c]
DelayMS 15
BusIn leer,15,[d]
DelayMS 15
BStop
Print At 1,1,Bin8 a
Print At 2,1,Bin8 b
Print At 3,1,Bin8 c
Print At 4,1,Bin8 d
GoTo inicio
End
TENGO ESTE PROGRAMA PARA INTENTAR LEER VARIOS REGISTROS DE CONFIGURACION PERO NADA ,AL LEER LOS VALORES ESTAN TODOS EN CERO. NO CONSIGO HACARLO FUNCIONAR. ALGUIEN PUEDE AYUDARME??????? GRACIAS
-
Viendo tu codigo me parece que debes colocar por cada byte a escribir o leer del mcp23017, la siguiente secuencia:
bstart BusOut grabar,x,[%xxxxxxxx] bstop, esto debes hacerlo por cada byte enviado o leido.
Saludos
-
BUENAS HE PROBADO LO QUE ME DICES PERO NO FUNCIONA... NO CONSIGO ESTABLECER COMUNICACION....
-
Ok lo probe con el simulador y funciona fino, el siguiente programa lee el GPIoA. :mrgreen:
BStart
BusOut grabar,0,[%11111111]
BStop
BStart
BusOut grabar,1,[%00000000]
BStop
BStart
BusOut grabar,2,[%00000000]
BStop
BStart
BusOut grabar,5,[%10101010]
BStop
BStart
BusOut grabar, $12 'aqui indico el registro del GPIOA que quiero leer
BStop
BStart
BusIn leer,[a] 'el valor del puerto GPIOA es almacenado en a.
BusNack 'importante este Nack no lo quites
BStop
Pruebalo asi, a ver yo lo tengo hecho en C y funciona fino, de momento no tengo el proton a la mano asi que avisame y pruebo con el.
Saludos
-
Buenas....
Pues a mi no me funciona no se que hago mal. simplemente programo lo mas sencillo para que me encienda el puerto A y nada...
configura:
BStart
BusOut grabar,10,[%1010011]
DelayMS 5
BStop
BStart
BusOut grabar,0,[0] 'puerto a como salidas
DelayMS 5
BStop
inicio:
BStart
BusOut grabar,9,[%11111111]
DelayMS 5
BStop
GoTo inicio
End
se supone que esta configurado en modo 8 bit y en modo no secuencial.. no consigo que funcione en proteus....
Gracias por tu ayuda.. a ver si me das alguna idea mas... te lo agradezco
-
por cierto el busnack para que lo utilizas???????
-
por cierto el busnack para que lo utilizas???????
Se emplea para indicarle al esclavo que finalizo la lectura de datos, dame chance y mañana a penas me desocupe te paso las correciones.
Saludos
-
HOLA DE NUEVO. YA LO HICE FUNCIONAR. PERO CREO QUE ALGO N0 DEBO DE TENER BIEN DEL TODO PORQUE AL SIMULARLO CON PROTEUS ME DA UNA SOBRECARGA DE LA CPU.... POR CIERTO HAY OTRA COSA RESPECTO A LA COMUNICACION I2C QUE NO CONSIGO ENTENDER NI HACER FUNCIONAR. EN PROTON ENTIENDO QUE SE USA BSTART BUSOUT ETC CUANDO EL MICRO NO TIENE MODULO MSSP INTERNO PERO EN MI CASO UTILIZO EL PIC16F877A QUE SI LO TIENE PERO SIN EMBARGO NO SOY A HACERLO FUNCIONAR SI UTILIZO LOS COMANDOS HBSTART HBUSOUT ETC.. SABES PORQUE ES ESO??? HAY QUE CONFIGURAR ALGO MAS???
Declare SDA_Pin PORTC.4
Declare SCL_Pin PORTC.3
GRACIAS
-
Disculpa la tardanza krizpin he estado muy ocupado y tengo mucho tiempo sin programar en proton :D
Pero ya te lo resolvi asi:
Device = 18F252
Xtal = 4
Config_Start
OSC = XT ; XT
OSCS = OFF ; Disabled
PWRT = On ; Enabled
BOR = OFF ; Disabled
BORV = 42 ; 4.2V
WDT = OFF ; Disabled
CCP2MUX = OFF ; Disable (RB3)
STVR = OFF ; Disabled
LVP = OFF ; Disabled
Debug = OFF ; Disabled
Cp0 = OFF ; Disabled
CP1 = OFF ; Disabled
CP2 = OFF ; Disabled
CP3 = OFF ; Disabled
CPB = OFF ; Disabled
CPD = OFF ; Disabled
WRT0 = OFF ; Disabled
WRT1 = OFF ; Disabled
WRT2 = OFF ; Disabled
WRT3 = OFF ; Disabled
WRTB = OFF ; Disabled
WRTC = OFF ; Disabled
WRTD = OFF ; Disabled
EBTR0 = OFF ; Disabled
EBTR1 = OFF ; Disabled
EBTR2 = OFF ; Disabled
EBTR3 = OFF ; Disabled
EBTRB = OFF ; Disabled
Config_End
Declare Hbus_Bitrate 400
TRISC =0
Confif_MCP23017:
HBStart
HBusOut $40,0,[%00000000]
HBusOut $40,1,[%00000000]
HBusOut $40,5,[%10101010]
HBStop
Inicio:
Dim i As Byte
For i= 0 To 15
HBusOut $40,$12,[i]
DelayMS 500
Next
HBStop
While 1=1
Wend
Probado en el proteus y funciona fino!
Saludos
-
HOLA.
MUCHAS GRACIAS POR TU RESPUESTA Y AYUDA VOY A PROBARLO AHORA MISMO... Y DE PASO EL HBUSIN HBUSOUT ETC QUE ME FALTABA POR PONER LA LINEA DE DECLARE AL PRINCIPIO DEL PROGRAMA.
UN SALUDO
-
Ok ya lo tienes resuelto :mrgreen:
Saludos