Programación Específica > Microcontroladores

 16f84 Y Eeprom 24c08!..

<< < (3/4) > >>

Alternative:
Gracias jpaler por tu comentario
y pues  si tienes dada sobre el manejo de los PIC, rutinas del LCD
o manejo del PWM o cualquier cosa, si te puedo ayudar
co gusto lo hare.

He echo algunos proyectos como es un neuromodulador (no es mas
que un motor a pasos que se mueve en distancias de micrometros)
controlado desde un teclado y un select externos. De echo termine apenas
un entrenador de PIC´s que lo ando probando, quiero empesar con
los DSPIc, he echo ya algunos programas, pero no los he podido programar,
e utilizado para los DSPIC MELAB, y para los PIC's EPICWIN

Si has programado en DSPIC y te funciona el programador
te agradeceria m pudiaras atudar.
Por todo gracias

Bye

 :hola:

jpaler:
muchas gracias Alternative x tu ayuda ofrecida, de seguro la necesitare + adelante, x q en esto d los pics, cada dia me encuentro cosas raras.

...,lastima no poder colaborarte, no he trabajado aun con los dsPICs, PERO INICIA LA DISCUCION, POR Q ESTOY SEGURO Q TODA LA COMUNIDAD HARA LO POSIBLE X AYUDARTE.

chao....

andre52:

--- Cita de: "Huguen_aus_Tirol" --- Hola! Aqui tengo algo de código, que escribí alla por el 2000, por lo que no recuerdo exactamente todos los detalles. Pero si recuerdo que me funcionó con una 24C02 y que, en parte, lo saqué de un manual de AN de Microchip.
Debería adaptarse muy bien a un 16F84 y a una 24C08. Solo hay que declarar bien las variables, los pines, etc... Pero creo que no hay problema con eso ;)
Espero que te sea útil :)

Saludos y suerte!


--- Código: Text ---;******************************************************************************;  RUTINAS DE COMUNICACION SERIE (MODULO I2C);******************************************************************************;; GENERA START BIT;START_I2C  BSF  SDA  ; dejo linea de datos en 1  BSF  RP0  ; banco 1  MOVLW  _TRISC  ; configuro SDA y SCL como salidas  ANDLW  b'11100111';   MOVWF  TRISC  ;   BCF  RP0  ; banco 0  BCF  SCL  ; bajo clock  NOP    ;   BSF  SCL  ; subo clock  GOTO  &#036;+1  ;   GOTO  &#036;+1  ;   GOTO  &#036;+1  ;   NOP    ;   BCF  SDA  ; bajo datos  GOTO  &#036;+1  ;   GOTO  &#036;+1  ;   GOTO  &#036;+1  ;   NOP    ;   BCF  SCL  ; y bajo clock para generar start bit  GOTO  &#036;+1  ;   GOTO  &#036;+1  ;   RETURN    ; ;; GENERA STOP BIT;STOP_I2C  BCF  SDA  ; dejo linea de datos en 0  BSF  RP0  ; banco 1  MOVLW  _TRISC  ; configuro SDA y SCL como salidas  ANDLW  b'11100111';   MOVWF  TRISC  ;   BCF  RP0  ; banco 0  BCF  SDA  ; bajo datos  GOTO  &#036;+1  ;   GOTO  &#036;+1  ;   BSF  SCL  ; subo clock  GOTO  &#036;+1  ;   GOTO  &#036;+1  ;   BSF  SDA  ; subo datos  GOTO  &#036;+1  ;   GOTO  &#036;+1  ;   BCF  SCL  ; bajo clock  GOTO  &#036;+1  ;   GOTO  &#036;+1  ;   RETURN    ; y retorno;; ENVIA UN BIT POR SDA;BITOUT_I2C  BSF  RP0  ; banco 1  MOVLW  _TRISC  ; configuro SDA y SCL como salidas  ANDLW  b'11100111';   MOVWF  TRISC  ;   BCF  RP0  ; banco 0  BTFSS  I2CDO  ; enviar un 1 ?  GOTO  I2CBLO  ; no, envio un 0...  BSF  SDA  ; pongo SDA en 1  GOTO  CLKOUT  ; I2CBLO  BCF  SDA  ; pongo SDA en 0CLKOUT  BSF  SCL  ; y clockeo  GOTO  &#036;+1  ;   GOTO  &#036;+1  ;   GOTO  &#036;+1  ;   BCF  SCL  ;   RETURN    ; y salgo;; RECIBE UN BIT POR SDA;BITIN_I2C  BSF  I2CDI  ; asumo que llega un 1  BSF  RP0  ; banco 1  MOVLW  _TRISC  ; configuro SDA como entrada y SCL como salida  ANDLW  b'11100111';   IORLW  b'00010000';   MOVWF  TRISC  ;   BCF  RP0  ; banco 0  BSF  SCL  ; subo clock  GOTO  &#036;+1  ;   GOTO  &#036;+1  ;   GOTO  &#036;+1  ;   BTFSS  SDA  ; recibio un 1 ?  BCF  I2CDI  ; no, es 0  BCF  SCL  ; bajo clock  RETURN    ; y salgo;; RUTINA DE TRANSMISION POR I2C;I2C_TX  MOVLW  .8  ; son 8 bits a contar  MOVWF  CNT  ; I2C_TXLP  BCF  I2CDO  ; asumo que sale un 0  BTFSC  I2CBUF,7; sacar un 0 ?  BSF  I2CDO  ; no, sale un 1...  CALL  BITOUT_I2C; envio bit  RLF  I2CBUF,F; acomodo para sacar proximo bit  DECFSZ  CNT,F  ; salieron los 8 ?  GOTO  I2C_TXLP; no, continuo sacando...  CALL  BITIN_I2C; leo bit de acknowledge  BCF  I2CACKF  ; asumo que es 0  BTFSC  I2CDI  ; es 0 ?  BSF  I2CACKF  ; no, envio un 1  RETURN    ; y salgo;; RUTINA DE RECEPCION POR I2C;I2C_RX  CLRF  I2CBUF  ; borro buffer  MOVLW  .8  ; son 8 bits a leer  MOVWF  CNT  ;   BCF  C  ; borro flag de carryI2C_RXLP  RLF  I2CBUF,F; roto un bit a la izquierda  CALL  BITIN_I2C; y leo bit enviado  BTFSC  I2CDI  ; llego un 0 ?  BSF  I2CBUF,0; no, escribo un 1 en el buffer  DECFSZ  CNT,F  ; llegaron los 8 bits ?  GOTO  I2C_RXLP; no, sigo reciviendo...  BCF  I2CDO  ;   BTFSC  I2CACKF  ;   BSF  I2CDO  ;   CALL  BITOUT_I2C; envio bit de acknowledge  RETURN    ; y salgo;; LECTURA DE LA MEMORIA 24Cxx;RD24CXX  CALL  START_I2C; envio condicion de start  MOVLW  _24CADD  ; traigo direccion de esclavo  MOVWF  I2CBUF  ; y cargo en buffer  CALL  I2C_TX  ; direcciono memoria  MOVFW  ADD24C  ; traigo direccion a leer  MOVWF  I2CBUF  ;   CALL  I2C_TX  ; y envio a memoria  CALL  START_I2C; envio condicion de start  MOVLW  _24CADD  ;   IORLW  0x01  ; direcciono memoria para lectura  MOVWF  I2CBUF  ;   CALL  I2C_TX  ; y envio  BCF  I2CACKF  ; preparo para acknowledge en 0  CALL  I2C_RX  ; y leo byte direccionado  CALL  STOP_I2C; genero condicion de stop  MOVFW  I2CBUF  ; cargo dato leido en  MOVWF  DAT24C  ; registro de datos de memoria  RETURN    ; y salgo;; ESCRITURA DE LA MEMORIA 24Cxx;WR24CXX  CALL  START_I2C; genero bit de start  MOVLW  _24CADD  ; cargo direccion del esclavo  MOVWF  I2CBUF  ; en buffer  CALL  I2C_TX  ; envio...  MOVFW  ADD24C  ; cargo direccion a escribir  MOVWF  I2CBUF  ; en buffer  CALL  I2C_TX  ; envio...  MOVFW  DAT24C  ; cargo dato a escribir  MOVWF  I2CBUF  ; en buffer  CALL  I2C_TX  ; envio...  CALL  STOP_I2C; genero bit de stop  MOVLW  .60  ;   MOVWF  CNT1  ; WR24POLL  CALL  START_I2C;   MOVLW  _24CADD  ;   MOVWF  I2CBUF  ;   CALL  I2C_TX  ;   BTFSS  SDA  ;   GOTO  WR24P_EXIT;   DECFSZ  CNT1,F  ;   GOTO  WR24POLL;   RETLW  0xFF  ; WR24P_EXIT;  MOVLW  .20  ; ;  MOVWF  DEL_TIME; espero 10 mseg para dar tiempo a memoria;  CALL  DELAY  ;   RETLW  0x00  ; y salgo;;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*;  
--- Fin de la cita ---
HOLA Huguen_aus_Tirol ESTUVE VIENDO TU CODIGO DE LA I2C PERO REALMENTE NO ENTIENDO MUCHAS COSAS, PORQUE NO ESCRIBISTE LA DECLARACION DE VARIABLES Y POR TAL MOTIVO ESTOY UN POCO PERDIDA...TE AGRADECERIA MUCHO QUE ME ENVIARAS EL CODIGO COMPLETO..

Huguen_aus_Tirol:
Hola! No hay problema, pero tendrás que tenerme un poquito de paciencia, por lo menos hasta el sábado. Estoy con demasiado trabajo, y tengo que buscar el programa para enviartelo. En otra discución veo que quieres implementar el I2C con un 16F877; este micro ya tiene modulo I2C.
Asi que te pasaré el programa completo para emular I2C en un 16F84, y las rutinas para configurar este modulo en los micros que ya lo tienen.
Pero paciencia :) No prometo nada, pero si me da un tiempito en una de esas lo hago antes, pero no es promesa...
Saludos

andre52:

--- Cita de: "Huguen_aus_Tirol" --- Hola! No hay problema, pero tendrás que tenerme un poquito de paciencia, por lo menos hasta el sábado. Estoy con demasiado trabajo, y tengo que buscar el programa para enviartelo. En otra discución veo que quieres implementar el I2C con un 16F877; este micro ya tiene modulo I2C.
Asi que te pasaré el programa completo para emular I2C en un 16F84, y las rutinas para configurar este modulo en los micros que ya lo tienen.
Pero paciencia :) No prometo nada, pero si me da un tiempito en una de esas lo hago antes, pero no es promesa...
Saludos
--- Fin de la cita ---
Muchas gracias por tu atencion, sigo trabajando en eso, si, tienes razon el 877 ya tiene el modulo configurado pero no he logrado hacer que me funcione con el MSSP, por eso estoy intentando guiarme por tu codigo para hacerlo paso a paso ya que mi entrega es para este viernes. Igualmente te agradeceria si por casualidad tienes algun codigo que te haya funcionado con el MSSP y si no, no te preocupes continua con lo que tienes que hacer y de nuevo muchas gracias.

 ;)

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa