|
522
|
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.
|
|
|
523
|
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.
|
|
|
524
|
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.
|
|
|
525
|
Informática / Electrónica / Poco a poco me paso del F8 al F88.
|
en: 30 Diciembre 2009, 16:41 pm
|
Hola: Viendo que en los locales cada vez se vende menos PIC 16F84A y más el 16F628A, me cuentan que el sustituto directo del famoso y popular 16F84 es el 16F88 en definitica. Antes no se creía que podría del el 16F628A, veo que no. Por si acaso que dejen de fabricar el 16F84A como ocurre con los 16F876A/877A desde la Web del fabricante no los vende, ahora son los 16F886/887 con mejores prestaciones. La idea es aprender a pasar de 16F84A al 16F88 que me llegarán a principios de Enero 2010. En este caso se utilizará el cristal de cuarzo externo a 4 MHz como el 16F84 aunqu el 16F88 aguante a 20 MHz. Quiero hacer el código fuente de este circuito del detector por movimiento y luz del F84 al F88 a ver si no es tan complicado como parece. Ver: Luz por detector de movimiento y crepuscular Senpirsobre todo me interesa la parte del __CONGIG que quiero dejarlo lo más parecido al 16F84A. LIST P=16F84A ; Procesador. INCLUDE <P16F84A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC En el 16F88 lo he dejado así, no se si será el correcto. Viendo el archivo P16F88.INC que me viene en el MPLAB v8.43 parece que me puedo guiar y adivinar los del __CONFIG. Lo veo complicado y no quiero equivocarme. Al menos quiero ser como se hace el __CONFIG más adecuado. Ya me encargaré de pasar los bankos de memoria o actualizrlos en cada librería que encuentre con el PIC. Data Sheet 16F84A16F88Un cordial saludo.
|
|
|
527
|
Programación / .NET (C#, VB.NET, ASP) / Apagar el PC con un botón
|
en: 29 Diciembre 2009, 01:37 am
|
Hola: Tengo un Form y un button1 con Visual C# Express 2010 Beta 2. ¿Existe la manera de que al pulsar el botón se apague el equipo completo? A veces puede ocurrir de que te salga una ventana que te dice Finalizar tarea y el equipo no se apaga. Si es posible hacerlo lo de apagar el equipo con un botón. ¿Hay una forma de evitar la posible ventana de Finalizar tarea? Salu2.
|
|
|
528
|
Programación / .NET (C#, VB.NET, ASP) / ¿Existe la manera de enviar e-mail desde tu PC con C#?
|
en: 28 Diciembre 2009, 21:45 pm
|
¿Existe la manera de enviar e-mail desde tu PC con C#?
He logrado con una palicación que encontré y modifiqué bajo Visual C# Express 2010 Beta 2, enviar un mensaje o e-mail a gmail, lo que no me hace gracias del código que me pide autentificación o la contraseña de gmail.
¿Existe la forma de enviar e-mail desde mi ordenador a cualquier correo electrrónico directemente sin poner ninguna contraseña?
Saludo.
|
|
|
529
|
Informática / Electrónica / Los microcontroladores PIC® de 18 patillas incorporan el núcleo mejorado de gama
|
en: 18 Diciembre 2009, 07:23 am
|
Los microcontroladores PIC® de 18 patillas incorporan el núcleo mejorado de gama media de Microchip y el bajo consumo de energía eXtreme lider en el mercado Microchip anuncia los microcontroladores (MCU) de 8 bit de aplicación general PIC16(L)F1826 y PIC16(L)F1827, los MCU PIC® más recientes en incorporar el núcleo Enhanced (Mejorado) de Gama Media de la Compañía. Con esta ampliación a la gama de 18 patillas, los MCU PIC16(L)F1826/7 proporcionan un juego de periféricos avanzados que incluye un módulo de detección táctil capacitiva mTouch™ e interfaces duales I2C™/SPI, así como versiones “LF” que incorporan el bajo consumo de energía líder en el mercado mediante la tecnología eXtreme Low-Power nanoWatt XLP de Microchip. La introducción de estos MCU aporta una excelente vía de actualización, de bajo coste y con compatibilidad de patillas, para MCU PIC preexistentes de 18 patillas, y también proporcionan unas mayores prestaciones y un funcionamiento de bajo consumo líder en el mercado. Con la arquitectura Enhanced de Gama Media de Microchip, los MCU logran incrementar en un 50% las prestaciones y se añaden 14 nuevas instrucciones que mejoran la eficiencia de la programación en lenguaje C, lo cual da como resultado una eficiencia de código hasta un 40% mejor respecto a los MCU PIC de 8 bit de la generación previa. Además del módulo de detección táctil capacitiva mTouch y los interfaces duales I2C/SPI, entre las mejoras introducidas en los periféricos se incluyen funcionalidad PWM mejorada y un Modulador de Señal Digital que permite a los diseñadores personalizar los interfaces de comunicación y combinar numerosas funciones en un único MCU. La integración de la tecnología nanoWatt XLP de Microchip, que disminuye la corriente en espera a tan sólo 0,030µA a 1,8V (típico), ofrece un consumo de corriente líder en el mercado, lo cual mejora aún más la eficiencia energética total y prolonga la vida de la batería en una amplia variedad de aplicaciones. La Tarjeta de Demostración 18 patillas PICkit™ 2 (número de referencia DM164120-4, 23,99 dólares) aporta una manera rápida y sencilla de evaluar y desarrollar con los MCU PIC16(L)F1826/7. La tarjeta incluye cuatro LED, un potenciómetro para Convertidor A/D, un pulsador, un área de prototipado, un conector de 6 patillas para el Depurador/ Programador In-Circuit PICkit™ 3 (número de referencia PG164130), así como dos tarjetas sin componentes que utilizarán los diseñadores para su propio proyecto. Fuente: http://www.elektor.es/noticias/los-microcontroladores-pic-de-18-patillas.1194403.lynkx?utm_source=ES&utm_medium=email&utm_campaign=news
|
|
|
530
|
Informática / Electrónica / Pasar de un PIC a otro PIC.
|
en: 14 Diciembre 2009, 01:02 am
|
Hola: Tengo intención de emigrar a otro PIC, desde el 16F84A al 18F2550 en ensamblador. Al principio iba hacerlo con el nuevo núcleo de los modernos 16F que puedes ver aquí, pero es muy pronto que ni siquiera Proteus lo tiene creado. (Que por cierto, lleva muchos meses sin actualizar nada de nada, o lo abandonaron, o están haciendo una mega actualización, el tiempo dirá). Tengo unas librerías del LCD y RS232 del 16F84A-04. ¿Puedo pasarlo al PIC18F2550 que es el que voy a empezar a usar con 28 pines? Ya 18 pines me resultan pocos. Las librerías de retardo las puedo conseguir con un programa que hay por ahí. DescargarSaludo.
|
|
|
|
|
|
|