|
1894
|
Informática / Electrónica / Re: No gira el motor del eje.
|
en: 13 Enero 2010, 02:19 am
|
Lo que hice es con ger un poco de algodón y limpiar el lector del laser, con un pincel muy fino y suave apenas funciona.
Luego me dio por poner alcohol con algodón y funcionó a la primera.
|
|
|
1896
|
Informática / Electrónica / Hacer un capturador de datos (Data Logger) con PIC
|
en: 8 Enero 2010, 00:54 am
|
Hola: Llevo un tiempo en diseñar un Data Logger. Tengo intención de hacerlo capturar señales del puerto serie asíncrona de la normativa RS232. Primero buscar información como este que cuenta algo. http://pipelara20.tripod.com/txserial.htmSi hicieras o serías capaz de hacer un Data Logger. ¿Cómo lo diseñarías? Es decir... 1) ¿Qué datos o protocolo quieres capturar, RS232 asíncrona o síncrona, I2C, SPI, USB o todos en modo selección? (Mejor centrarse en uno primero). 2) ¿Le interesa capturar los datos con un PIC y guarfarlo en una EEPROM externa? (Puedes poner 4 24LC1025 como si fuera una, ya serían 4 Mbit). 3) ¿Con cuál microcontrolador? (Depende de los patillajes a usar, memoria programa, EERPOM y RAM). 4) ¿Estás dispuesto a colaborar? (Colaborar en sentido de mostrar información para ayudar, ideas, consejos, etc, no tiene porqué saber de microcontroladores pero, podrás hacer un Data Logger cuando lo acabe el hardWare y un fantastico manual paso a paso cargado de detalles como puedes ver este ejemplo que hice hace tiempo). Ver ejemplo. 5) Si alguien quiere diseñar un programa interfaz del PC para ver valores lo haré con C# (más adelante también con C++ y VB .net). 6) Preguntarse a si mismo. ¿Realmente quiero un Data Logger? Hay Data Logger de capturar muestras de temperatura com puedes ver abajo. http://www.xbot.es/microplans/regtemp.htmUn cordial saludo.
|
|
|
1899
|
Informática / Electrónica / Librerías .INC
|
en: 31 Diciembre 2009, 21:30 pm
|
Felices fiestas: Quiero pasar una librería llamada EEPROM.INC del 16F84 al 16F88 y no me sale mucho. ;***************************** Librería "EEPROM.INC" ********************************** ; ; ==================================================================== ; Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS". ; E. Palacios, F. Remiro y L. López. www.pic16f84a.com ; Editorial Ra-Ma. www.ra-ma.es ; ==================================================================== ; ; Estas subrutinas permiten realizar las tareas básicas de escritura y lectura de la ; memoria EEPROM de datos del PIC. ; ; Subrutina "EEPROM_LeeDato" ------------------------------------------------------------ ; ; El microcontrolador lee el dato que hay escrito en la posición de la EEPROM del PIC apuntada ; por el contenido del registro de trabajo W. El resultado se proporciona en el mismo W. ; ; Entrada: En (W) la dirección de la memoria EEPROM a leer. ; Salida : En (W) el byte leído.
EEPROM_LeeDato bcf STATUS,RP0 ; Asegura que trabaja con el Banco 0. movwf EEADR ; Dirección a leer. bsf STATUS,RP0 ; Banco 1. bsf EECON1,RD ; Orden de lectura. EEPROM_SigueLeyendo btfsc EECON1,RD ; El PIC indica que ha terminado la lectura goto EEPROM_SigueLeyendo ; poniendo en bajo este bit. bcf STATUS,RP0 ; Banco 0. movf EEDATA,W ; El byte leído al registro W. return
; Subrutina "EEPROM_EscribeDato" -------------------------------------------------------- ; ; Escribe el dato introducido en el registro de trabajo W en la posición de memoria EEPROM del ; PIC apuntada por el registro EEADR. ; ; Como altera el valor del registro INTCON al posicionar el flag GIE, éste se debe guardar al ; principio de la subrutina y restaurarlo al final. ; ; Entradas: En el registro EEADR la dirección de la memoria EEPROM a escribir. ; En el registro W el byte a escribir. ; CBLOCK EEPROM_GuardaINTCON ENDC
EEPROM_EscribeDato bcf STATUS,RP0 ; Asegura que trabaja con el Banco 0. movwf EEDATA ; El byte a escribir. movf INTCON,W ; Reserva el valor anterior de INTCON movwf EEPROM_GuardaINTCON bsf STATUS,RP0 ; Acceso al Banco 1. bcf INTCON,GIE ; Deshabilita todas las interrupciones. bsf EECON1,WREN ; Habilita escritura. ; ; El fabricante especifica que hay que seguir esta secuencia para escritura en EEPROM: ; movlw 0x55 movwf EECON2 movlw 0xAA movwf EECON2 bsf EECON1,WR ; Inicia la escritura. EEPROM_TerminaEscribir btfsc EECON1,WR ; Comprueba que termina de escribir en la EEPROM. goto EEPROM_TerminaEscribir bcf EECON1,WREN ; Desautoriza la escritura en EEPROM. bcf EECON1,EEIF ; Limpia este flag. bcf STATUS,RP0 ; Acceso al Banco 0. movf EEPROM_GuardaINTCON,W ; Restaura el valor anterior de INTCON. movwf INTCON return
; ==================================================================== ; Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS". ; E. Palacios, F. Remiro y L. López. www.pic16f84a.com ; Editorial Ra-Ma. www.ra-ma.es ; ====================================================================
Mirando el Data Sheet del 16F88 tengo en cuenta los bancos de memoria que siempre debo cambiar, lo he intentado con BANKSEL y con bsc STATUS,RP1. Ver código modificado para el 16F88. ;***************************** Librería "EEPROM_16F88.INC" ; ; ; Estas subrutinas permiten realizar las tareas básicas de escritura y lectura de la ; memoria EEPROM de datos del PIC. ; ; Subrutina "EEPROM_LeeDato" ------------------------------------------------------------ ; ; El microcontrolador lee el dato que hay escrito en la posición de la EEPROM del PIC apuntada ; por el contenido del registro de trabajo W. El resultado se proporciona en el mismo W. ; ; Entrada: En (W) la dirección de la memoria EEPROM a leer. ; Salida : En (W) el byte leído.
EEPROM_LeeDato bsf STATUS,RP1 ; Asegura que trabaja con el Banco 2. bcf STATUS,RP0 movwf EEADR ; Dirección a leer. bsf STATUS,RP1 ; Banco 3. bsf STATUS,RP0 bsf EECON1,RD ; Orden de lectura. EEPROM_SigueLeyendo btfsc EECON1,RD ; El PIC indica que ha terminado la lectura goto EEPROM_SigueLeyendo ; poniendo en bajo este bit. bsf STATUS,RP1 ; Banco 2. bcf STATUS,RP0 movf EEDATA,W ; El byte leído al registro W. return
; Subrutina "EEPROM_EscribeDato" -------------------------------------------------------- ; ; Escribe el dato introducido en el registro de trabajo W en la posición de memoria EEPROM del ; PIC apuntada por el registro EEADR. ; ; Como altera el valor del registro INTCON al posicionar el flag GIE, éste se debe guardar al ; principio de la subrutina y restaurarlo al final. ; ; Entradas: En el registro EEADR la dirección de la memoria EEPROM a escribir. ; En el registro W el byte a escribir. ; ;-------------------------------+ ; Bancos de memoria 16F88 | ; | ; RP1:PP0 Banco | ; 0 0 0 | ; 0 1 1 | ; 1 0 2 | ; 1 1 3 | ; | ;-------------------------------+
CBLOCK EEPROM_GuardaINTCON ENDC
EEPROM_EscribeDato bsf STATUS,RP1 bcf STATUS,RP0 ; Asegura que trabaja con el Banco 2. movwf EEDATA ; El byte a escribir. movf INTCON,W ; Reserva el valor anterior de INTCON movwf EEPROM_GuardaINTCON bsf STATUS,RP1 ; Acceso al Banco 3. bsf STATUS,RP0 bcf INTCON,GIE ; Deshabilita todas las interrupciones. bsf EECON1,WREN ; Habilita escritura. ; ; El fabricante especifica que hay que seguir esta secuencia para escritura en EEPROM: ; movlw 0x55 movwf EECON2 movlw 0xAA movwf EECON2 bsf EECON1,WR ; Inicia la escritura. EEPROM_TerminaEscribir btfsc EECON1,WR ; Comprueba que termina de escribir en la EEPROM. goto EEPROM_TerminaEscribir bcf EECON1,WREN ; Desautoriza la escritura en EEPROM. bcf EECON1,EEIF ; Limpia este flag. bsf STATUS,RP1 ; Acceso al Banco 2. bcf STATUS,RP0 movf EEPROM_GuardaINTCON,W ; Restaura el valor anterior de INTCON. movwf INTCON return
Me da este resultado. ---------------------------------------------------------------------- Clean: Deleting intermediary and output files. Clean: Done. Executing: "C:\Archivos de programa\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F88 "RS232_11_16F88.asm" /l"RS232_11_16F88.lst" /e"RS232_11_16F88.err" /d__DEBUG=1 Message[302] H:\PIC16F84A\16F88\RS232_11_16F88.ASM 52 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] H:\PIC16F84A\16F88\RS232_11_16F88.ASM 215 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] H:\PIC16F84A\16F88\LCD_4BIT.INC 96 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] H:\PIC16F84A\16F88\LCD_4BIT.INC 110 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] H:\PIC16F84A\16F88\EEPROM.INC 23 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] H:\PIC16F84A\16F88\EEPROM.INC 26 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] H:\PIC16F84A\16F88\EEPROM.INC 28 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] H:\PIC16F84A\16F88\EEPROM.INC 32 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] H:\PIC16F84A\16F88\EEPROM.INC 64 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] H:\PIC16F84A\16F88\EEPROM.INC 70 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] H:\PIC16F84A\16F88\EEPROM.INC 75 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] H:\PIC16F84A\16F88\EEPROM.INC 77 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] H:\PIC16F84A\16F88\EEPROM.INC 78 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] H:\PIC16F84A\16F88\EEPROM.INC 80 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] H:\PIC16F84A\16F88\EEPROM.INC 82 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] H:\PIC16F84A\16F88\EEPROM.INC 83 : Register in operand not in bank 0. Ensure that bank bits are correct. Executing: "C:\Archivos de programa\Microchip\MPASM Suite\mplink.exe" /p16F88 "RS232_11_16F88.o" /u_DEBUG /z__MPLAB_BUILD=1 /z__MPLAB_DEBUG=1 /o"RS232_11_16F88.cof" /M"RS232_11_16F88.map" /W /x MPLINK 4.35, Linker Copyright (c) 2009 Microchip Technology Inc. Errors : 0
Loaded H:\PIC16F84A\16F88\RS232_11_16F88.cof. ---------------------------------------------------------------------- Debug build of project `H:\PIC16F84A\16F88\PicRS232_16F88.mcp' succeeded. Language tool versions: MPASMWIN.exe v5.35, mplink.exe v4.35 Preprocessor symbol `__DEBUG' is defined. Thu Dec 31 20:21:43 2009 ---------------------------------------------------------------------- BUILD SUCCEEDED Mirando la hoja de datos lo he intetado mirando los ejemplos de la página 31. 16F88. ; Leer EEPROM. EEPROM_LeeDato BANKSEL EEADR ; Select Bank of EEADR MOVF ADDR, W ; MOVWF EEADR ; Data Memory Address ; to read BANKSEL EECON1 ; Select Bank of EECON1 BCF EECON1, EEPGD; Point to Data memory BSF EECON1, RD ; EE Read BANKSEL EEDATA ; Select Bank of EEDATA MOVF EEDATA, W ; W = EEDATA return
; Escribir EEPROM.
CBLOCK EEPROM_GuardaINTCON ENDC
EEPROM_EscribeDato BANKSEL EECON1 ; Select Bank of ; EECON1 BTFSC EECON1, WR ; Wait for write GOTO $-1 ; to complete BANKSEL EEADR ; Select Bank of ; EEADR MOVF ADDR, W ; MOVWF EEADR ; Data Memory ; Address to write MOVF VALUE, W ; MOVWF EEDATA ; Data Memory Value ; to write BANKSEL EECON1 ; Select Bank of ; EECON1 BCF EECON1, EEPGD ; Point to DATA ; memory BSF EECON1, WREN ; Enable writes BCF INTCON, GIE ; Disable INTs. MOVLW 55h ; MOVWF EECON2 ; Write 55h MOVLW AAh ; MOVWF EECON2 ; Write AAh BSF EECON1, WR ; Set WR bit to ; begin write BSF INTCON, GIE ; Enable INTs. BCF EECON1, WREN ; Disable writes
Saludo.
|
|
|
1900
|
Informática / Electrónica / Configurar un pedazo de PIC
|
en: 31 Diciembre 2009, 01:28 am
|
Hola: Estoy intentando pasar la configuración del PIC16F84A al 16F88, ambos usan el oscilador externo a 4 MHz. La idea del PIC16F88 es que los puertos A y B son digitales, PORTA como salida digital y PORTB como entrada digital, no se usa para nada entradas analógicas. Este código del 16F84 quiero convertirlo al 16F88. bsf STATUS,RP0 ; Accede al Banco 1. clrf PORTA ; Puerto A como salidas. movlw b'11111111' ; Las 8 líneas del puerto B se configura como entradas. movwf PORTB bcf STATUS,RP0 ; Accede al Banco 0. clrf PORTA ; Supuestamente la lámpara y Led apagadas.
Por ahora estoy liado y no logro poner el PORTB como entradas. De momento he hecho esto. bcf STATUS,RP1 ; Accede al banco 1. bsf STATUS,RP0 movlw b'00000000' movwf ANSEL ; Configura como I/O digitales. clrf TRISA ; Poner TRISA para salida o PORTA en salid digital. movlw b'11111111' movwf TRISB ; Entrada digital. bcf STATUS,RP1 ; Accede al banco 0. bcf STATUS,RP0 clrf PORTA ; Salida digital del PORTA. movlw b'11111111' movwf PORTB ; Entrada digital del PORTB
Se que no está bien porque no logro poner el PORTB en entrada digital y no se como hacerlo. Un cordial saludo.
|
|
|
|
|
|
|