SoloCodigo

Programación Específica => Microcontroladores => Mensaje iniciado por: jgpeiro en Sábado 27 de Diciembre de 2003, 16:12

Título: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Sábado 27 de Diciembre de 2003, 16:12
Estoy trabajando en el diseño de un aparato electrónico y me gustaría que alguien con experiencia en el diseño de pequeños aparatos electrónicos me diese su opinión.
El aparato consiste en un controlador de LCD grafico, capaz de leer los datos de una EEPROM serie ,elaborar el texto y sacarlo a través del LCD. Se controla a traves de movimientos que capta con un accelerometro de dos ejes.  
El circuito consta de un LCD de un nokia 5110, un PIC 16f84, dos EEPROM serie 24fc515, y un acceñerometro ADXL210E
el controlador del LCD mide 34x40x15mm(con el display y las baterias incluidas).
Al LCD se le puede kitar una lamina de plastico superior y que solo se pueda leer mirando a través de esta.
El consumo del circuito debe ser muy muy pequeño. La grabación de los datos se realiza utilizando un acoplador y a través de un TE-20.
El circuito permanece siempre encendido,en modo bajo consumo, y pasa a modo usuario, cuando se realizan unos movimientos determinados.
Tengo que realizar las rutinas que me permitan comunicar el PIC con las EEPROM, con el LCD, e interpretar los datos del accelerometro. El problema es que me gustaria escribirlas en C, pero no su compatibilizar el PICCLITE ocn el MPLAB...
Pienso que si este circuito tuviese éxito podría venderse como un kit o algo así. No sé que más puedo decir si alguien quiere mas información puedo proporcionar todos los docuemntos que tengo. Los programas que más estoy utilizando MPLAB, el PICCLITE, el PROTEL DXP, el proteus...
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Sábado 27 de Diciembre de 2003, 16:15
este es un .jpg en el que e ido reflejando algunas ideas para aclararme yo. mas o menos esta indicado la forma por la que uno se mueve por los menus del aparto, o como se enciende, o el tipo e texto... en fin, espero que os agais una idea superficial.
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: © Jonathan © en Domingo 28 de Diciembre de 2003, 01:09
Desde hace mucho tiempo tengo en mente realizar un proyecto para evitar tener que estudiar para lo examenes de la clase, segun lo que he visto de tu proyecto, se asemeje a lo que queria realizar yo. Dime... Eso sirve para almacenar mucho texto???... cuantos años tienes tu???... Bueno, podria ayudarte, pero no conosco de programar micros bajo C, siempre lo hago en Assembler, ya que el C no es algo super bueno, lo unico bueno es su facilidad. Saludos y espero tu respuesta.  :hola:
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Domingo 28 de Diciembre de 2003, 04:02
ese es exactamente el proposito que tiene mi circuito. Son dos memorias 24FC515 y practicamente el 99% de su capacidad se elmplearia para mostrar el texto.
El primer programa que empece a desarrollar para el dispositivo fue .ASM  pero llegue a la conclusion de que debia ser mucho mas sencillo elaborlo todo en C una vez se conoce suficiente el lenguaje. En un principio la velocidad por del micro nos podemos permitir ejecutar unas cuantas instrucciones de mas, y si falta espacio para el programa se puede utilizar otro PIC con mas memoria.
-Se me olvidaba...el circuito lleva dos leds (rojo y verde) que se ven a traves de la pantalla pensados para avisar o informar de algo al usuario mas que para iluminar la pantalla. Estan directamente conectados a pines del PIC. Para que podria utilizar estos leds?
-No se si el BUS I2C requiere obligatoriamente dos resistencias pull-up, tu sabes como o dnd comprobar antes de tener el crcuito realizado?
-Como aseguro los nets que van del cristal al PIC  tienen  las caracteristicas de inductancia, capacietancia y resistencia adecuadas, o no sufren agresiones de otros nets?

ahm, tengo 19 años y llevo metido en esto de la electronica desde que tenia 13 o eso. Siempre con la curiosidad de como funcionara este circuito pueda o no pueda realizarse por un aficionado en su casa con sus medios.
Tengo un osciloscopio BITSCOPE aunke practicamente todo lo que he echo han sido siempre simulaciones con el ordenador me permite ir mucho mas deprisa que trabajando con las manos(aunke no te da la prueba 100% de que tu circuito funcione...)
Me da la impresion de que tu tb has dedicado tiempo a esto de la electronica.
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Domingo 28 de Diciembre de 2003, 04:04
ahm, aqui va el .sch del circuito es un poco mas moderno que el que se ve en la foto. Por cierto jonathan, ¿que proyectos te traes actualemente entre manos?
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: © Jonathan © en Lunes 29 de Diciembre de 2003, 13:11
Realmente interesante B) , te recomendaria realizar todas las rutinas que debas solo en lenguaje assembler, ya que la velocidad en que realizara todo sera algo super bueno... luego se podria realizar un nuevo codigo utilizando los sistemas operativos que vienen para los pic, donde puedes realizar que trabaje en modo multitarea, osea, realizaria muchas cosas a la vez, eso es algo muy interesante, pero en lo que todavia no tengo experiencia.
   Los led's que dices que tiene el display, los puedes utilizar para informar al usuario sobre la posicion que se encuentra en el texto, que se encienda el verda para avizar que se esta de la mitad del texto para  arriba, ambos cuando valla al medio y el rojo cuando cruce la mitad, solo para tener una nocion de donde se esta, y de paso iluminar el display.
   Dime... puedes escribir sin problemas en el display del celular, o es algo muy dificil... en una epoca se me habia cruzado en mente destripar mi Nokia 5160i tan solo para ver si lograba escrbir sobre el LCD, pero luego me dio miedo no volver a recuperarlo, tu sabes, aqui es dificil conseguir algo y cuando lo tienes lo cuidas como oro. :)
   Ha, queria preguntarte acerca de la cantidad de texto que puedes introducir, puede ser que sean 1.030 caracteres???... de ser asi, alcansaria muy bien pero creo no bastaria para algunas cosas.
   Bueno, te comento que te di acceso a mi MSN, va ser bravo que nos encontremos ya que segun creo, los horarios que manejas son muy distintos a los de aqui, pero ya veremos como solucionarlo... Saludos y nos mantenemos en contacto.  :hola:

PD: Por ahora vengo tranqui con los proyectos, ya que hay un reto que me esta volviendo loco, estaba trabajando en un discador telefonico para una central de alarmas. Saludos  :hola:
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Miércoles 31 de Diciembre de 2003, 18:18
yo tb e leido acerca de sistemas operativos xa PIC pero no tengo claro si serian una ventaja xa el proyecto, aparte de que no se como se crearia despues un programa.
La idea de usar los leds para indicar en que parte del texto estamos me parece buena, xq aunke seria mejor con una barra dibujada a la izq de la pantalla, lo de los leds es muchisimo mas sencillo de programar.es importante que pueda habilitarse y desabilitarse esta funcion para que el aparato llame la minima atencion.
La dos memorias EEPROM son 24FC515 con 64kbytes caada una, eso le da una capacidad de 128000 caracteres que segun calcule eran el ekivalente a una 16 paginas completamente llenas de texto....
HI-TECH creo que vendia algun sistema operativo xa PIC, aunke no se si requerian memoria externa o algo asi.De todas maneras no es necesario que el aparato sea "multitarea" xq....xq no. Voy a hacer un dibujo en el que lo explike y lo pongo en el mensaje siguiente
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Miércoles 31 de Diciembre de 2003, 19:05
0/5  Con el flanco de subida de RA0 configuramos y ponemos en marcha TMR0 para que cree una interrupcion en el punto 1.
0-1 Podemos ejecutar cualkier subrutina, como comunicarnos con las EEPROM, enviar datos al LCD....
1 TMR0 overflow se crea una interrupcion, configuramos y ponemos en marcha TMR0 para que cree una interrupcion en el punto 4, empezamos una cuenta paramedir el valor de G.
1-2 Cuando RA0 pasa a 0 alamacenamos el valor de G, y volvemos al punto del programa dnd se quedo cuando TMR0 genero la interrupcion.
3 Es simplemente el punto en el que G tomaria su valor maximo.
3-4 Es un tramo identico al tramo 0-1, podemos ejecutar cualkier cosa.
4 En este punto TMR0 vuelve agenerar una interrupcion por overflow,permanecemos a la espera del flanco e subida de RA0.
5/0  Con el flanco de subida de RA0 configuramos y ponemos en marcha TMR0 para que cree una interrupcion en el punto 1.

PD: Cuanto mas pequeño sea el tramo 4-5, mas rapido funcionara el dispositivo(desde el punto de vista del usuario)
Cuanto mas grande sea el tramo 1-3, mas profundidad de G.
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Jueves 1 de Enero de 2004, 16:44
Uno de los usos(no tiene xq ser el unico) para los leds.
El dispositivo permanece en modo "sleep" cuando no se va a usar durante algun tiempo. La forma para que solo los usuarios lo puedan encender y no se encienda x ejemplo cuando lo llebamos en un bolsillo es solicitarde alguna manera un codigo. Este codigo en un principio seria el mismo xa todos los aparatos y consiste en dejar el aparato 1 seg horizontal, 1 seg apollado sobre un lado y un seg sobre otro lado, todo esto provoca diferentes impulsos en la salida del accelerometro. Bien, pues podriamos hacer que el verde indique cuando el dispositivo esta en la posicion correcta xa cumplir la secuencia y el rojo que indique el mmnto en el que has de ambiar al siguiente movimiento.
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: © Jonathan © en Viernes 2 de Enero de 2004, 14:00
Es una idea realmente interesante, lo veo bueno, ya que de otra manera no se estaria seguro de que se hagan bien los movimientos. Seria lindo poner tambien aparte un contador de 2 seg de tiempo para hacer el otro movimiento, ahi se estaria mucho mas seguro de que no habra forma de ingresar. Saludos :hola:
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Viernes 2 de Enero de 2004, 16:09
No entiendo a que te refieres con lo del temporizador de 2 seg. Bueno, esto es un dibujito de como seria el funcionamiento de los leds mas o menos....
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Lunes 5 de Enero de 2004, 18:40
En el punto 1 configurabamos TMR0 para q crease una interrupcion en el punto 4.
He pensado que conectando el acelerometro al puerto B del PIC y utilizando una interrupcion de PORTB change dejamos el TMR0 libre durante el tramo 1-5 y aparte eliminamos el tramo 4-5.


0 TMR0 config, TMR0 START
  Tiempo para otros procesos
1 TMR0 overflow interrupt
 TMR0 STOP
 G minima
2 G actual
 Tiempo para otros procesos
3 G maxima
 Tiempo para otros procesos
4 PORT B change interrup, TMR0 config, TMR0 START
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Miércoles 7 de Enero de 2004, 06:45
El numero de menu. 0-128. Un bit ($)indica que ha terminado
Entre el byte q lleva el $ y el * se encuentra el texto q da nombre al menu.
*indica el PC si se pulsa OK
#indica el PC si se pulsa Cancel

& Indica el inicio dl menu.
1   $   TDB   *CHECK   #OFF      
2   $   CONFIG   *OPEN   #CLOSE   
3   $   TEXT   *OPEN   #CLOSE   
4   $   CLOCK   *M.CLOCK #M.TDBM
" separa distintos submenus.
2.1   $   X   *OPEN   #CLOSE      
2.2   $   Y   *OPEN   #CLOSE      
2.3   $   OK   *OPEN   #CLOSE   
2.4   $   CANCEL   *OPEN   #CLOSE   
"
2.1.1   $   AMPLI   *OPEN   #CLOSE
2.1.2   $   CENTER   *OPEN   #CLOSE   
2.2.1   $   AMPLI   *OPEN   #CLOSE      
2.2.2   $   CENTER   *OPEN   #CLOSE   
2.3.1   $   AMPLI   *OPEN   #CLOSE   
2.4.1   $   AMPLI   *OPEN   #CLOSE   
"
2.1.1.1   $   0   *EJ:100   #- No efectua ninguna accion
2.1.1.2   $    1   *EJ:110   #- No efectua ninguna accion
2.1.1.3   $    2   *EJ:120   #- No efectua ninguna accion
2.1.1.4   $    4   *EJ:130   #- No efectua ninguna accion
"
2.1.2.1   $   0   *EJ:140   #- No efectua ninguna accion
2.1.2.2   $    1   *   #
2.1.2.3   $    2   *   #
2.1.2.4   $    4   *   #
2.1.2.5   $   5   *   #
"
2.2.1.1   $   0   *EJ:190   #- No efectua ninguna accion
2.2.1.2   $    1   *   #
2.2.1.3   $    2   *   #
2.2.1.4   $    4   *   #
"
2.2.2.1   $   0   *EJ:230   #- No efectua ninguna accion
2.2.2.2   $    1   *   #
2.2.2.3   $    2   *   #
2.2.2.4   $    4   *   #
2.2.2.5   $   5   *   #
"
2.3.1.1   $   0   *EJ:280   #- No efectua ninguna accion
2.3.1.2   $    1   *   #
2.3.1.3   $    2   *   #
2.3.1.4   $    4   *   #
"
2.4.1.1   $   0   *EJ:320   #- No efectua ninguna accion
2.4.1.2   $    1   *   #
2.4.1.3   $    2   *   #
2.4.1.4   $    4   *   #
%  Indica el fin dl menu.

El texto lleva un menu o indice separado
En la pantalla se muestran ,despues de que el dispositivo haya hecho el wake up, los menus que solo tienen un numero(ej: 1, 2, 3 y 4).
Cuando abrimos un menu se muestra en una pantalla nueva su contenido.
El modo reloj muestra una hora en toda la pantalla por si es necesario convencer a alguien de que nuestro aparatito es un reloj de pulsera ;-) ...
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Miércoles 7 de Enero de 2004, 11:16
e estado pensando en incorporar un PIC algo mas versatil, y estoy replanteandome utilizar un 16F88 puesto que tiene mas memoria RAM, EEPROM FLASH, mas timers, incorporado el I2C, PWM...un puñaico de cosas quepueden ser muy utiles para el apartito.
En un semanita hare un nuevo SCH y un nuevo PCB que pondre en el foro.
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: © Jonathan © en Miércoles 7 de Enero de 2004, 20:04
Es buena idea cambiar de micro, aparte sera mas facil en muchos sentidos... la idea del reloj es exelente.
   Dime... la alimentacion del dispositivo, sera con una bateria de 9 Volt???. Bueno, veo que estas a full con las ideas, recuerda que debes estudiar! :whistling: ... Saludos y hasta pronto!. :hola:
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Sábado 10 de Enero de 2004, 18:57
Pues todo depende de la tension maxima de entrada del regulador de voltage  VREG1, pero supongo que 12 pilitas de boton conectadas en serie y paralelo xa obtener 9 voltios. Cada pilita tiene un diametro de 9.4mm y un grosor de 3mm y no se cuantos mAh pueden proporcionar pero el consumo del dispositivo no creo que supere los 15mAh. Sabes cuantos mAh podrian proporcionar unas pilas de esas dimensiones?
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Sábado 10 de Enero de 2004, 22:34
Caben 12pilas y consigo 9V 168mAh
Ya he mirado caracteristicas de pilas de boton de tamaño similar, y lo que e encontrado es:
9.5*3.6mm 84 mAh cada pilita,
serian unas 210horas (creo que serian unos 0.8mAh)en modo sleep y unas 11 horas (creo que serian unos 15mAh)en modo usuario.
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Sábado 10 de Enero de 2004, 22:39
org   0
;INT:
;POWER UP,CCP,WDT,USART,I2C,EEPROM,TMR0,TMR1,TMR2,ADC

;General Program routines
;Program starter
;For Menu navigator. (SOFTWARE)
;For Acc. Decoder (SOFTWARE)
;For Screen generator (SOFTWARE)

;Subrutines:
;For EEPROM READ (I2C)(RB1,RB4)
;For EEPROM WRITE (I2C)(RB1,RB4)
;For LCD WRITE (USART Synchronous Master Mode)(RA2,RA3,RA4,RB2,RB5)
;For Acc. reader(CCP)(RB0,RB3)
;For LEDs controller (PortB)(RB6,RB7)
;For Vbat indicator (ADC)(RA0)
;For Vreg3 OFF (PortA)(RA1)
;------------------------------------------------------------
org 0004
;INT.
;BCF INTCON,GIE
;BCF WDTCON,SWDTEN
;BTFSS INT1(power UP)
;GOTO 1
;BTFSS INT2(CCP)
;GOTO 2
;BTFSS INT3(WDT)
;GOTO 3
;BTFSS INT4
;GOTO 4
;BTFSS INT5
;GOTO 5
;BTFSS INT6
;GOTO 6
;BTFSS INT7
;GOTO 7
;BTFSS INT8
;GOTO 8
;BTFSS INT9
;GOTO 9
;BTFSS INT10
;GOTO 10
;BTFSS INT11
;GOTO 11
;BTFSS INT12
;GOTO 12
;BTFSS INT13
;GOTO 13
;BTFSS INT14
;GOTO 14
;


;POWER ON
;Config 16F88(intterrupts!!)
;CHECK
;APAGAR LCD
;MEDIR VBAT
;MEDIR ACC.
;LEER/ESCRIBIR EEPROM
;¿Verificar LEDS?si esto es posible
;Encender LCD
;Mandar Info.
;WAIT 5 SECONDS
;LCD OFF
;LEDs OFF
;GETOFF

;GET OFF
;PORTS A&B High-impedance
;WDT CONFIG (1seg)
;WDT ON
;SLEEP

;WAKE UP
;if ACCX NO= G or ACCY NO= G, GOTO GETOFF
;if ACCX =G AND ACCY=G during 250mS, LEDGREEN ON
;else GETT OFF
;WAIT 750mS
;LEDRED ON
;WATI 250
;LED RED OFF
;if ACCX =G AND ACCY=+G during 250mS, LEDGREEN ON
;else GETT OFF
;WAIT 750mS
;LEDRED ON
;WATI 250
;LED RED OFF
;if ACCX =+G AND ACCY=G during 250mS, LEDGREEN ON
;else GETT OFF
;USER MODE

;USER MODE
;Acc. Intepreter
;Menu Navigator
;Screen Generator
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Domingo 11 de Enero de 2004, 05:19
conexiones para el nuevo PCB. Resistencias pull-up en RA4,RB1,RB4 y RA1.

RB0   ACCx
RB1   EEPROM SDA
RB2   LCD SDI
RB3   ACCy
RB4   EEPROM SCL
RB5   LCD SCK
RB6   LED R, ICSP
RB7   LED G,ICSP
MCLR   ICSP
RA0   Vbat
RA1   Vreg3 SHDN
RA2   LCD D/C
RA3   LCD RST
RA4   LCD CS
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Domingo 11 de Enero de 2004, 15:13
Esto seria el metodo de lectura de los impulsos dutty cicle con el modulo CCP del 16F88. Queda mucho mas sencillo que el metodo que tenia pensado para el 16F84, y ademas se necesita ejecutarmenos instrucciones que antes. Si el TMR1 se puede configurar con un reloj de 144*65536 se puede obtener una profuncidad de 16 bits en cada medida.
Inconvenientes tenemos que solo se toman 144/2 medidas de los ejes X e Y por segundo, pero son suficientes de toda maneras.
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: © Jonathan © en Lunes 12 de Enero de 2004, 13:20
Muy bien amigo, me alegro que te hallas decidido por el 16F88, eso si, te informo que tengo 0 experiencia con ese micro, segun estuve viendo es muy similar al F84 pero con algunas cositas extras... bueno, es buena idea que comenzemos a implementar algo de lo que sabemos y escribamos un poco de codigo, por lo menos para que se nos haga un poco menos pesado. Vi el mensaje anterior y voe que lo tienes muy bien pensado a todo lo que vamos a hacer. Tengo algunas cosas que preguntarte, si no las posteo aqui te las pregunto por chat. Saludos y hasta lueguito :hola:
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: © Jonathan © en Lunes 12 de Enero de 2004, 16:14
Hola, mira estos archivos, estoy realizando el proyecto que esta aqui para ver que puedo sacar para nuestro proyec... Saludos :hola:
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Lunes 12 de Enero de 2004, 20:53
no esta terminada esta parte, pero es bastante sencilla asi que la pensare en otro mmnto...bueno aqui va el dibujo
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Martes 13 de Enero de 2004, 20:40
ahm, e pensado que las letras minusculas podrian estar en la eeporm del 16f88, incluso que las vocales minusculas podrian estar en la RAM. este dibujo no es sencillo de comprender, es el metodo xa generar 7 lineas de texto verticales y enviarlas al LCD en 6 bytes.
solo me queda comprobar una pequeña cosa de este ultimo dibujo y ya podria empezar a programar todo....
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: © Jonathan © en Miércoles 14 de Enero de 2004, 16:42
Se entiende perfecto, solo me queda preguntarte, de que manera escribiras el lcd???...

asi:

  0 1 2 3 4 5 6 7 8 9 10
  11 12  13  ...

O Asi:

0  11
1  12
2  13
3   ...
4   ...
5
6
7
8
9
10

  Saludos :hola:
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Miércoles 14 de Enero de 2004, 20:25
digamos que el LCD lo escribiria asi
primero de Y0,X7 hasta Y0,X83,  Y1,X7 hasta Y1,X83......  Y5,X7 hasta Y5,X83, despues desde Y0,X0 hasta Y0,X6,Y1,X0 hasta Y1,X6,..........Y5,X0 hasta Y5,X6.

El metodo que planteo mas adelante permite enviar al LCD 7 lineas de texto, y aun me queda pensar como hacer para escribir en el LCD una barra(como un pequeño menu al borde de la pantalla)con 6 botones que apareceria en la posicio Y0,X0 hasta Y0,X6,Y1,X0 hasta Y1,X6,..........Y5,X0 hasta Y5,X6.

En la memoria RAM 4 bancos. Dos consecutivos de 38 (R1H y R2H)bytes y otros dos consecutivos de 39 bytes(R1L y R2L).
Primero generamos el texto que queremos mostrar en esos dos bancos leyendolo de la EEPROM.
Ponemos el LCD en la direccion Y0,X7.
Segundo cogemos la direccion del primer byte del banco 1 y lo metemos en el FSR. Despues copiamos INDF al TXREG. Sumamos 38 al FSR para desplzarlo al R2H. Rotamos 1 vez a la izq y testeamos "carry", si es 1 ponemos a 1 TXREG,7.  enviamos TXREG al LCD.
ahora restamos 37 al FSR, restamos 38 y comprobamos si es 0, si no volvemos al principio.......bueno,mejor lo pongo en ASM y are un dibujo mejor...
 Me gustaria saber si las operaciones del INDF provocan alteraciones en STATUS REG...alguien lo sabe
La primera linea de texto no se rota, la segunda se rota x1, la tercera x 2, la cuarta x 3, la quinta x 4, la sesta x -3 y la saeptima x -2.

;Screen Generator
;LCD XYB1H
;Generar B1L en R1L
;Generar B1H en R1H
;Generar B2L en R2L
;Generar B2H en R2H
;set LCD ADDR
;mov RlADDR to FSR
;mov indf to TXREG
;ADD 38 to FSR
;RRF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w   ;!!!el resultado en W
;btfss STATUS,0
;goto LCD XYB1H

;LCD XYB1L
;mov R2ADDR to FSR
;mov indf to TXREG
;ADD 39 to FSR
;RRF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w   ;!!!el resultado en W
;btfss STATUS,0
;goto LCD XYB1L

;LCD XYB2H
;Generar B3L en R1L
;Generar B3H en R1H
;set LCD ADDR
;mov RlADDR to FSR
;mov indf to TXREG
;ADD 38 to FSR
;RRF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,6
;RRF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w   ;!!!el resultado en W
;btfss STATUS,0
;goto LCD XYB2H

;LCD XYB2L
;mov R2ADDR to FSR
;mov indf to TXREG
;ADD 39 to FSR
;RRF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,6
;RRF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w   ;!!!el resultado en W
;btfss STATUS,0
;got LCD XYB2L

;LCD XYB3H
;Generar B4L en R2L
;Generar B4H en R2H
;set LCD ADDR
;mov RlADDR to FSR
;mov indf to TXREG
;ADD 38 to FSR
;RRF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,5
;RRF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,6
;RRF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w   ;!!!el resultado en W
;btfss STATUS,0
;goto LCD XYB2H

;LCD XYB3L
;mov R2ADDR to FSR
;mov indf to TXREG
;ADD 39 to FSR
;RRF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,5
;RRF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,6
;RRF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w   ;!!!el resultado en W
;btfss STATUS,0
;got LCD XYB2L

;LCD XYB4H
;Generar B5L en R1L
;Generar B5H en R1H
;set LCD ADDR
;mov RlADDR to FSR
;mov indf to TXREG
;ADD 38 to FSR
;RRF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,4
;RRF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,5
;RRF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,6
;RRF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w   ;!!!el resultado en W
;btfss STATUS,0
;goto LCD XYB2H

;LCD XYB4L
;mov R2ADDR to FSR
;mov indf to TXREG
;ADD 39 to FSR
;RRF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,4
;RRF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,5
;RRF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,6
;RRF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w   ;!!!el resultado en W
;btfss STATUS,0
;got LCD XYB2L

;LCD XYB5H
;Generar B6L en R2L
;Generar B6H en R2H
;set LCD ADDR
;mov RlADDR to FSR
;mov indf to TXREG
;ADD 38 to FSR
;RLF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,5
;RLF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,6
;RLF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w   ;!!!el resultado en W
;btfss STATUS,0
;goto LCD XYB2H

;LCD XYB5L
;mov R2ADDR to FSR
;mov indf to TXREG
;ADD 39 to FSR
;RLF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,5
;RLF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,6
;RLF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w   ;!!!el resultado en W
;btfss STATUS,0
;got LCD XYB2L

;LCD XYB6H
;Generar B3L en R1L
;Generar B3H en R1H
;set LCD ADDR
;mov RlADDR to FSR
;mov indf to TXREG
;ADD 38 to FSR
;RLF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,6
;RLF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w   ;!!!el resultado en W
;btfss STATUS,0
;goto LCD XYB2H

;LCD XYB6L
;mov R2ADDR to FSR
;mov indf to TXREG
;ADD 39 to FSR
;RLF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,6
;RLF INDF,f       ;esto funcionaria?
;BTFSS STATUS,c     ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w   ;!!!el resultado en W
;btfss STATUS,0
;got LCD XYB6L
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Domingo 18 de Enero de 2004, 23:03
LCDXYB1L

 movlw 100
 movwf FSR,F

 movwf INDF,w
 movwf TXREG,f

 movlw 39
 addwf FSR,w

 rrf INDF,f

 bsf TXREG,7

 btfss STATUS,c

 bcf TXREG,7


 movlw    37
 subwf    FSR,f      ;(FSR-37=FSR)

 subwf   FSR,w   ;(FSR-38=w)

 btfss    STATUS,z

 goto    LCDXYB1L
 END

Me gustaria saber como conseguir las operaciones de FSR-38=w con los minimos ciclos posibles. con la instruccion subwf FSR,w ,lo que hago es restar el valor de FSR a 38, y lo que pretendo es restar 38 al valor de FSR. si despues de jecutar subwf   FSR,w, ejecuto la intruccion de complement rega,w y en rega hay un valor de 0? o despues de subwf   FSR,w le sumo 128 a w?
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Lunes 19 de Enero de 2004, 20:24
diagrama de flujo general del Acc. Interpreter
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Jueves 5 de Febrero de 2004, 20:25
Las rutinas basicas:
1 LEDs controller:
Utiliza de 4 a 8 registros de la RAM. Se ejecuta cada x segundos por una interrupcion de TMRx.
2 Acc reader:
Utiliza 4 a 10 registros de la RAM
Se ocupa de leer datos analogicos de AccX y AccY
3 Acc interpreter:
Utiliza de 10 a 20 registros de la RAM
se ocupa interpretar los datos leidos por el Acc reader
4Cursor mov.:
se ocupa de variar la posicion del cursor en funcion de Acc interpreter
5 EEPROM R/W
se ocupa de acceder a la EEPROM externa para escribirla o leerla
6Menu pointer
Se ocupa de marcar que menu se muestra en primera inea de pantalla, que menu esta seleccionado
7Screen Gen
Se ocupa de decodificar los caracteres de cada menu, de pintar el cursor en el lugar adecuado y de invertir el menu seleccionado.
8LCD config
Se ocupa de configurar el LCD y de enviarle DATOS
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: Pegasux en Martes 10 de Febrero de 2004, 16:21
Yo no se mucho de pics, pero soy capaz de integrarlo en un "reloj" de pulsera con el display del telefono movil y hacer un boligrafo que aparte de escribir tenga pulsadores para controlar el reloj por infrarrojos. Eso si, el diseño tiene que ser un pic 16F877 + Eeprom 24LC64 (igualito que el 16F876 en funcionamiento) o un 16F84 + 24LC16B. Aparte estaria bien que el programa diese la hora para disimular... XDDD
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: © Jonathan © en Martes 10 de Febrero de 2004, 20:48
No es mala idea, pero tendriamos que dejar de lado lo del acelerometro y las memorias para mayor capacidad... haber que opina mi amigo, la idea es muy buena, aparte nadie se lo imaginaria, pero tambien me gusta la idea de manejarse sobre el menu con unos movimientos... Ahh Averigue sobre la capacidad de la pila, es de 8 niveles y no hay manera de sobrepasarlos ni crear algo similar, no se puede usar la RAM para nada y lamentablemente deberemos de cambiar de micro, estuve averiguando y el que nos serviria es cualquiera de la serie 18Fxxx, lamentablemente son los unicos que tienen mas capacidad en la pila, lo malo es que disponen de 95 o algo asi de instrucciones, por lo que recomendaria que nos ocupemos y manipulemos con un micro de motorola ya que la diferencia es muy poca y la eficiencia del motorola es maxima. Saludos y suerte :hola:
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Martes 10 de Febrero de 2004, 20:50
si, las primeras versiones de mi proyecto funcionaban con un boli con pulsadores que transmitia las señales por medio de infrarrojos, pero luego conoci los acelerometros y me gusto incluirlos de alguna manera en el diseño. Una delas formas que mas me han gstado para disimular el aparato es quitarle al LCD una de las laminas de plastico que llevan en la parte superior. Solo quien mire a traves de esta lamina podra distinguir entre un pixel pintado yuno sin pintar,de tal manera que mientras los demas ven el LCD en blanco, tu puedes estar leyendolo a traves de unas gafas con esa laminita.
xq dices que puedes hacer esto con esas configuraciones de PIC unicamente? es xq estas pensando en usar chips de estos que se usan xa targetas de pirateria? no me lo he planteado, pero desde luego se puede conseguir un gran ahorro de espacio...aunqe quizas se quede corto en cuanto I/O...
en fin, agradezco enormemente tu interes y espero leer mas post que no sean mios...ejejej
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: Pegasux en Miércoles 11 de Febrero de 2004, 15:04
Si, efectivamente es devido a  la gran integracion del chip en esas tarjetas. Tambien se puede con otro tipo de micros (www.todotarjetas.com (http://www.todotarjetas.com) en la seccion de tarjetas de plastico) pero ya no son pic y no tengo ni idea!!. Lo del accelerometro se podria sustituir por un pulsador que haga correr el texto mientras esta pulsadoa una velocidad suficiente como para copiar a mano lo que aparece en pantalla. Lo de la laminita de plastico es muy buena idea!! tambien habria que incluir un jack mini en el reloj que sirva de puerto de comunicaciones PC para poder introducir los datos desde el programador, pero eso no es problema. Por cierto, recuerdo algo de una rutina para no tener que hacer circuitos antirebote en cada pulsador, eso vendria muy bien para no tener que fabricar antirebotes en cada pulsador del boligrafo-transmisor.
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Miércoles 11 de Febrero de 2004, 15:26
de momento estamos limitados al tamaño de la pantalla, que es de 34x40mm, el PCB tiene el mismo tamaño, y las baterias para una autonomia de 10-15 horas de uso miden lo mismo. El tamaño total del circuito con baterias es de 34x40x12mm con baterias y todo. Si queremos usarlo de relog basta con ponerle una correa...
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: Pegasux en Miércoles 11 de Febrero de 2004, 21:51
Si, pero estar constantemente manipulando el accelerometro... puede ser muy descarado, por no hablar de las pilas y los cables que colgarian o podrian verse. Existen unas pilas pequeñas de 6v, son como la mitad de una pila de mando a distancia, yo las he tenido y me imagino que en un bazar puedan conseguirse. Tambien supongo que habra otras pilas similares de otros tamaños/voltajes. Tengo un nokia 5110 pero no puedo destriparlo porque es de mi padre, tambien tengo un maxon mx-6869 destripado, el display esta bastante chulo pero no tengo ni idea de las conexiones, me imagino que sera mas complejo que un display sencillo asi que hare pruebas a ver que consigo.
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: © Jonathan © en Miércoles 11 de Febrero de 2004, 22:35
Es sierto lo que dice pagaxus sobre el acelerometro, la idea del infrarrojo esta muy buena, al mover el brazo a cada rato levantarias sospechas... quedarias como un loco, en cambio con una birome eso no seria problema, ya que es lo que menos sospecharian, ni siquiera mirarian a donde estas... pensando un poco me convence mas la birome, que piensas tu amigo???. Saludos :hola:
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Jueves 12 de Febrero de 2004, 18:20
el aparatito utilizaria si no recuerdo mal 12 pilitas de boton de 9mm radio y 3 de alto cada una con una capacidad de unos 35mAh. Estube calculando y con 12 baterias de estas dimensiones pero de nimh se obtendria una capacidad de 60mAh. Las pilas van detras del dispositivo, pegadas a el, recuerda que 34x40x12mm... bueno, los movimientos para manejar el aparatito no necesariamente tienen xq ser unos movimientos exagerados supongo que simplemente moviendo los dos dedos cn los que sujetamos el aparato bastaria, pero esta claro que pulsar botones en un boli es mas disimulado...en fin, d mmnto seguire cn este sistema.
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: Pegasux en Domingo 15 de Febrero de 2004, 13:52
¿La primera imagen que pones en el post corresponde al controlador del display? esta muy muy currado, no creo que yo pueda conseguir hacer un pcb tan preciso.
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Domingo 15 de Febrero de 2004, 14:17
Es todo el aparato. No es dificil si le heaces sin prisas. De todas maneras siempre necesito varios intentos xa conseguir unas placas decentes...lo mas importante es tener unas transparencias buenas. Yo imprimo el dibujo en un folio ampliado 2 veces, y lo llevo a una copisteria pido que me lo fotocopien sobre una transparencia reducido al 50%. El resto del proceso ya lo conoceras...
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: Pegasux en Lunes 16 de Febrero de 2004, 15:26
El controlador le has hecho con algun esquema de internet? estoy acostumbrado al los LCD de 16x2 de caracteres y una pantalla de movil no se como funcionara. Aqui tengo un standar pero preferiria algo ya integrado.

http://home.iae.nl/users/pouweha/lcd/lcd_examp.shtml (http://home.iae.nl/users/pouweha/lcd/lcd_examp.shtml)
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Jueves 19 de Febrero de 2004, 21:51
mmmm, nuevas subrutinas.
la memoria EEPROM externa lleva un banco con todos los caracteres en ASCII dijujados de tal manera que una l (en ASCII 81hex)seira:
81x5=285h
285$ 11111111
286$ 00000000
287$ 00000000
288$ 00000000
289$ 00000000
280$ 00000000
un total de 256 caracteres x 5bytes = 1280Bytes. (direcicon 500h)
De esta manera, leyendo un byte con un caracter en ASCII y multiplicandolo x 5 direccionamos rapidamente hasta las posiciones de memoria de la EEPROM que contienen el "dibujo" del caracter.

En las siguientes direcciones a partir de la 500h se encuentra toda la informacion de MENUS, con su NUMERO de MENU, MENU PC OK, MENU PC CANCEL, MENU NOMBRE, MENU CONTENIDOS.

A Menu Numero AB Menu PCOK BC Menu PCCANCEL CD Menu Nombre DE Menu Contenidos E

A: indica que los datos hasta nueva A van a indicar el Menu Numero
B: indica que los datos hasta nueva B van a indicar el Menu PCOK
idem con la C,D y E.

El Menu Numero tiene un tamaño fijo de 3 bytes
El Menu PCOK tiene un tamaño fijo de 2 bytes
El Menu PCCANCEL tiene un tamaño fijo de 2 bytes
El Menu Nombre puede cualquier tamaño
El Menu Contenidos puede cualquier tamaño


El Menu Numero esta estructurado en 6 datos de 4 bits que pueden ir del 0 al 11 lo que da un maximo de 14000 menus distintos(aunque no cabrian en la EEPROM)

El Menu PCOK son dos bytes con la direccion que habria que introducir en el program counter del micro si el usuraio hace un movimiento de OK y el cursor esta sobre ese menu)

El Menu PCCANCEL son dos bytes con la direccion que habria que introducir en el program counter del micro si el usuraio hace un movimiento de CANCEL y el cursor esta sobre ese menu)

El Menu Nombre son los caracteres que se muestran cuando un menu esta cerrado

El Menu contents son los caracteres que se muestran cuando un menu esta abierto


Cuando el dispositivo arranca va a la direccion de EEPROM 501h y busca A
INC EEADDR (la direccion EEPROM a leer)
mobemos los 3 bytes del Menu numbre a la RAM en Actual Menu y buscamos de nuevo A.
ahora buescamos la siguiente B
almacenamos en la RAM en ACTUAL Menu PCOK, con la C lo mismo
y ahora buscamos D...
EEDATA=D
MOV (84-ancho de la barra) to BFERC
label 1
 INC EEADDR
SAVE EEADR in CADDRP
READ EEPROM
EEDATA = D?   ---SI----> desde BFERC hasta final pintar 0. IR a Mostrar
Multip`licar EEDATA x 5, resultado en EEADDR
label2
MOV BFERC to FSR
READ EEPROM
MOV EEDATA to W
W=0? --------SI-------> "caracter terminado". Pintar espacio. IR a label 1
MOV W to INDF
INCFSZ BFERC ----0----->"Linea terminada". IR a Mostrar
DECFSZ CP----0----> "caracter terminado". Pintar espacio. IR a label 1
INC EEADDR
IR a label 2


Me queda explicar como pintar un cursor en la pantalla acorde con la posicion actual en funcion de los movimientos.
Me queda explicar como invertir el color (B/W) de un menu cuando el cursor esta encima de este
Me queda explicar como se pintauna barra a la izq. de la pantalla.

Me queda explicar un nuevo metodo para crear un buffer en la RAM con una fila entera de 84 bytes con los pixels que tienen que tienen que ser pintados en el LCD.
Me queda explicar como se hace un buffer para tranformar las 7 lineas de texto que aparecen en la pantalla a 6 lineas que caben en la pantalla.

Pero para explicar estos ultimos buffers asi como el aspecto del cursor are unos dibujitos

Tambien tengo un nuevo algoritmo para transformar los 7 caracteres a 6 lineas mas rapido que el que propuse en post anteriores....

en fin, si alguien comprende todo esto que pongo y me quiere sugerir algo...
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: Pegasux en Viernes 20 de Febrero de 2004, 15:55
Pues gracias por explicarte, y no, no lo entiendo aunqe me esfuerzo por ello. XDDD. Yo voy a intentar hacer la version del boli a distancia. No tengo los datos exactos pero si se como hacerlo:

Con un temporizador 555 smd, 4 pulsadores mini, 5 resistencias smd, 1 condensador smd, 1 emisor infrarrojo y una pila de 3v de camara de fotos. Cabe todo perfectamente en la mitad de un boligrafo que tenga el diametro un poco ancho. cada pulsador conectado a traves de una de las 4 resistencias al 555, todas de distinto valor para generar pulsos de distinta frecuencia. La salida del 555 al emisor infrarrojo. con la otra resistencia y condensador se hace el tiempo de descarga del 555, con lo que este tiempo es igual para los 4 pulsadores, asi que nos fijamos solo en la anchura de los distintos pulsos. En el programa habra que hacer una rutina que al recibir los pulsos infrarrojos mida la anchura del pulso(habra que hacer unas pruebas con osciloscopio para los valores de muestreo del pic) y decodifique cual de los 4 pulsadores ha sido accionado. Tanto el pic como el 555, como el display led funcionan con 2v, asi que con 3v tanto en el reloj como el boligrafo deberian tener una pila de esas de 3v o dos de boton de 1,5.
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Viernes 20 de Febrero de 2004, 16:22
lo dicho....
Me queda explicar un nuevo metodo para crear un buffer en la RAM con una fila entera de 84 bytes con los pixels que tienen que tienen que ser pintados en el LCD.
......Pero para explicar estos ultimos buffers asi como el aspecto del cursor are unos dibujitos

Tambien tengo un nuevo algoritmo para transformar los 7 caracteres a 6 lineas mas rapido que el que propuse en post anteriores....
...bueno, este es el dibujo...
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Viernes 20 de Febrero de 2004, 16:24
lo dicho....
Me queda explicar un nuevo metodo para crear un buffer en la RAM con una fila entera de 84 bytes con los pixels que tienen que tienen que ser pintados en el LCD.
......Pero para explicar estos ultimos buffers asi como el aspecto del cursor are unos dibujitos

Tambien tengo un nuevo algoritmo para transformar los 7 caracteres a 6 lineas mas rapido que el que propuse en post anteriores....
...bueno, este es el dibujo...
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: Pegasux en Lunes 23 de Febrero de 2004, 00:20
Estaria bien el poder incluir graficos, asi la chuleta seria mas completa.
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Lunes 23 de Febrero de 2004, 10:49
sip, lo se, pero de mmnto prefiero elaborar lo que mas o menos tengo en mente. una vez todo esto este realizado, si que kiero añadirle algunas cosas(como la posibilidad de almacenar y mostrar dibujitos).
Ahm, recorede una cosa que yo pense xa mi emisor de infrarrojos en su dia. Nada mas q yo lo hice con dos botones, y cuando se pulsaba uno la frecuencia era de 1Khz. Cuando se pulsaba el otro, la frecuencia era de 2Khz. Cuando se pulsaban los 2 a la vez emitia con una nueva frcuencia de 2.7Khz.
En fin, espero que este consejo te sea de utilidad
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: Pegasux en Viernes 27 de Febrero de 2004, 12:55
http://www.geocities.com/dinceraydin/lcd/intro.htm (http://www.geocities.com/dinceraydin/lcd/intro.htm)

En esta pagina viene explicado el funcionamiento de un display 2x16, esta bien para entender como funcionan para poder programarlos con el pic. Tambien viene un simulador. Estaria bien saber tambien las diferencias que hay con un display como el del 5110, ya que los estandar tienen 14 pines y el del 5110 solo tiene 9 creo:

http://todomodding.com/forums/showthread.php?threadid=254 (http://todomodding.com/forums/showthread.php?threadid=254)

aqui viene una explicacion de un display del 3310, seria interesante tener disponible toda la informacion para poder trabajar con ello mas comodamente.
Saludos.
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Martes 18 de Mayo de 2004, 17:24
#include <p16f88.inc>

ledRreg         equ      021H
ledGreg         equ      022H
ledcount      equ      023H
chanelreg      equ      024H
ADchanel2outC   equ      025H
ADchanel3outC   equ      026H
ADchanel4outC   equ      027H
;050H-05FH,0D0H-0DFH   Accx Buffer
;060H-06FH,0E0H-0EFH   Accy Buffer

init  
   nop
   nop
   nop
   nop
   
   ;BuscarFlAG, ejecutar subrutina, retfie.
   btfsc   INTCON,TMR0IF
   goto   TMR0overflow
   btfsc   PIR1,SSPIF
   goto   SSPcompleteTR
   btfsc   PIR1,TMR2IF
   goto   TMR2toPR2match
   btfsc   PIR1,TMR1IF
   goto   TMR1overflow
   btfsc   PIR2,EEIF
   goto   EEPROMwritecompleted ;Internal EEPROM
   

CONFIGDEV  ;CONFIG DEVICE(I/O PORTS, A/D, clock, SPI, IRQs,TIMERs, WDT)   
;OSCILLATOR CONFIGURATIONS            INTO2 8MHZ,whit I/O on RA6,RA7
   bsf      STATUS,RP0
   movwf   B'00000000'
   movwf   OSCTUNE
   movlw   B'01110010'
   movwf   OSCCON
   bcf      STATUS,RP0
;INTERRUPTS         TMR0,TMR1,TMR2,SSP
    bsf      STATUS,RP0
    movlw   B'10000010'
    movwf   OPTION_REG
    bsf      STATUS,RP0
   movlw   B'11100000'
   movwf   INTCON
   movlw   B'00000000'
   movwf   PIR1
   movlw   B'00000000'
   movwf   PIR2
   bsf      STATUS,RP0
   movlw   B'00001001'
   movwf   PIE1
   movlw   B'00010000'
   movwf   PIE2
   bcf      STATUS,RP0
;I/O PORTS
   ;PORTA
   movlw   B'00000000'
   movwf   PORTA
   bsf      STATUS,RP0
   movlw   B'01011100'   
    movwf   TRISA   
    bcf      STATUS,RP0
    ;PORTB
   movlw   B'00000000'
    movwf   PORTB      ;PORTB7-0 outputs
   bsf      STATUS,RP0
   movlw   B'00100010'   
    movwf   TRISB   
    bcf      STATUS,RP0
;SSP      configurado en modo SPI Master
   movlw   B'00000000'
   movwf   SSPBUF      ;b7-0
   movlw   B'00100000'
   movwf   SSPCON      ;b7-0   
   bsf      STATUS,RP0
   movlw   B'11000000'
   movwf   SSPSTAT      ;b7-6,1
   bcf      STATUS,RP0
;A/D
   movlw   B'00000000'
   movwf   ADRESH      ;b7-0
   movlw   B'01000001'
   movwf   ADCON0      ;b7-2,0
   bsf      STATUS,RP0
   movlw   B'0'
   movwf   ADRESL      ;b7-0
   movlw   B'11000000'
   movwf   ADCON1      ;b7-4
   movlw   B'00011100'
   movwf   ANSEL      ;b6-0
   bcf      STATUS,RP0

;TIMER0 MODULE
   movlw   B'00000000'
   movwf   TMR0
   
;TIMER1 MODULE
;TMR1L
;TMR1H
;T1CON
;TIMER2 MODULE
;TMR2
;T2CON
;PR2
;DATA EEPROM
;WDT
   bsf      STATUS,RP0
   movlw   B'00011110'
   movwf   WDTCON
   bcf      STATUS,RP0

;CCP MODULE                        OFF
;USART                           OFF
;COMPARATOR MODULE                  OFF
;COMPARATOR VOLTAGE REFERENCE MODULE   OFF

CONFIGREGS
   movlw   050H
   movwf   ADchanel2outC
   movlw   060H
   movwf   ADchanel3outC
   movlw   B'00000100'
   movwf   chanelreg
   movlw   B'10101010'
   movwf   SSPBUF
   movlw   B'00100000'
   movwf   SSPCON   

   
ledlevel
   ;como cambiar LedXreg desde cada subrutina?
   movlw   B'10101010'
   movwf   ledRreg
   movlw   B'10000000'
   movwf   ledGreg
   movlw   0B0H
   movwf   ledcount

loop      ;el programa inicial despues de un ReSET un configurar el uC

   nop
   goto loop
   nop


TMR0overflow ;(interrupt);
   bcf      INTCON,TMR0IF
ADnoend
   btfsc   ADCON0,GO_DONE   ;esperar en caso de q el AD no haya terminado
   goto   ADnoend
   btfsc   chanelreg,2      ;comprobar que canal se ha leido
   goto   ADchanel2out
   btfsc   chanelreg,3
   goto   ADchanel3out
   btfsc   chanelreg,4
   goto   ADchanel4out

ADchanel2out
   bcf      STATUS,RP0
   movfw   ADchanel2outC      ;guardar los datos de la conversion en un buffer mediante indf
   movwf   FSR
   movfw   ADRESH
   movwf   INDF
   bsf      STATUS,RP0
   bsf      FSR,7
   movfw   ADRESL
   movwf   INDF
   bcf      FSR,7
   bcf      STATUS,RP0
   incf   ADchanel2outC,f
   movfw   ADchanel2outC
   sublw   060H
   btfss   STATUS,Z
   goto   ADchanelselect
   movlw   050H
   movwf   ADchanel2outC
   ;indicar que el buffer Accx(050H-05FH,0D0H-0DFH)esta completo.El buffer Accy aun le queda un dato por almacenar
   goto   ADchanelselect


ADchanel3out   
   bcf      STATUS,RP0
   movfw   ADchanel3outC      ;guardar los datos de la conversion en un buffer mediante indf
   movwf   FSR
   movfw   ADRESH
   movwf   INDF
   bsf      STATUS,RP0
   bsf      FSR,7
   movfw   ADRESL
   movwf   INDF
   bcf      FSR,7
   bcf      STATUS,RP0
   incf   ADchanel3outC,f
   movfw   ADchanel3outC
   sublw   070H
   btfss   STATUS,Z
   goto   ADchanelselect
   movlw   060H
   movwf   ADchanel3outC
   ;indicar que el buffer Accy(060H-06FH,0E0H-0EFH)esta completo. Los buffers Accx y Accy estan llenos
   ;desactivar interrupciones por AD?
   goto   ADchanelselect


ADchanel4out
   ;solo comprobar que las tensiones son adecuadas comparandolo con una referencia
   goto   ADchanelselect
   
ADchanelselect
   ;change chanel to read in next AD obtain(2,3,4)
   bcf      STATUS,C
   rlf      chanelreg,f
   btfsc   STATUS,C
   bsf      chanelreg,0

   btfsc   chanelreg,2
   goto   chanel2      ;el AccX
   btfsc   chanelreg,3
   goto   chanel3      ;el AccY
   btfsc   chanelreg,4
   goto   chanel4      ;el Vbat
   movlw   B'00000100'
   movwf   chanelreg
   goto   chanel2   ;;; xq es el proximo que se debe leer!!!
chanel2   
   movlw   B'00010000'      ;seleccionar canal 2 (010)
   iorwf   ADCON0,f
   movlw   B'11010111'      ;seleccionar canal 2 (010)
   andwf   ADCON0,f   
   goto   ADstart
chanel3
   movlw   B'00011000'      ;seleccionar canal 3 (011)
   iorwf   ADCON0,f
   movlw   B'11011111'      ;seleccionar canal 3 (011)
   andwf   ADCON0,f
   goto   ADstart
chanel4   
   movlw   B'00100000'      ;seleccionar canal 4 (100)
   iorwf   ADCON0,f
   movlw   B'11100111'      ;seleccionar canal 4 (100)
   andwf   ADCON0,f
   goto   ADstart

ADstart
   bsf      ADCON0,GO_DONE
   goto   rotateLEDs
rotateLEDs
   incfsz   ledcount,f      ;esperar varias IRQ por TMR0 para rotar los LEDs
   retfie
   rrf      ledGreg,f      ;rotar y mostar LEDGREEN
   btfsc   STATUS,C
   bsf      ledGreg,7
   bcf      STATUS,C
   btfss   ledGreg,0
   bsf      PORTB,6
   btfsc   ledGreg,0
   bcf      PORTB,6
   rrf      ledRreg,f      ;rotar y mostar LEDRED
   btfsc   STATUS,C
   bsf      ledRreg,7
   bcf      STATUS,C
   btfss   ledRreg,0
   bsf      PORTB,7
   btfsc   ledRreg,0
   bcf      PORTB,7
   movlw   0B0H
   movwf   ledcount
   retfie               ;FIN DE LA INTERRUPCION ;Datos AD obtenidos y guardados en buffer, LEDs rotados.



SSPcompleteTR
   bcf   PIR1,SSPIF
;   subrutine
   retfie
TMR2toPR2match
   bcf   PIR1,TMR2IF   
;   subrutine
   retfie   
TMR1overflow
   bcf   PIR1,TMR1IF   
;   subrutine
   retfie
EEPROMwritecompleted
   bcf   PIR2,EEIF   
;   subrutine
   retfie

   END
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Lunes 14 de Junio de 2004, 00:16
Por fin termine 3 de las 4 rutinas para controlar el hardware, con sus interrupciones y su codigo optimizado para permitir ocupar el tiempo minimo al micro. Segun unos calclos aproximados el micro permanece libre aproximadamente un 90% del tiempo, es decir, la mayor parte del tiempo esta esperando a que se desborde un timmer o a q le devuelvan un dato del exterior.
El micro se arranca y configura los registros de todos los perifericos, busca la procendencia de las interupciones, salva y carga los registros mas importantes durante las interrupciones, lee datos analogicos de un ADXL 311 cada periodo de 3mS y toma el valormedio de cada 16 medidas. Comprueba e estado de la bateria cada 3mS. Envia datos a un LCD LPH7366 utilizando el periferico SSP y sus interrupciones, informa al usuario mediante 2 LEDs(rojo y verde) que tb van con IRQ...bueno, si alguien quiere el codigo en ASM que me lo pida, tb realice algunso cambios en el esquema, pero no son importantes. De mometo pienso eliminar el 74LVC07, el regulador de 5V y alimentar todo el circuito a 3.3V o 3.0V, pero no es nada demasiado importante....
Me queda realizar una rutina para leer y escribir en las EEPROM. Primero voy a hacer un diagrama de flujo del codigo que e escrito....en unos dias lo pondre.
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Lunes 14 de Junio de 2004, 12:56
aqui va el esquema del programa que e escrito en ASM, por cierto, son unas 380 instrucciones....
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jgpeiro en Sábado 26 de Junio de 2004, 18:40
por si alguien esta interesado en realizar este aparato conmigo aqui dejo los archivos con el codigo y demas para simularlo con el MPLAB v6.51.  tb voy a colgar un esquema y si alguien quiere puedo meter tambien los PCBs.
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: jptalledo en Jueves 29 de Julio de 2004, 16:09
Hola a Todos

quisiera pedirles ayuda en como calibrar el adxl311, realmente como saber el valor de 0G y la formula de transformacion de un voltaje a aceleracion en G tambien uso un pic para leer los datos

gracias
Título: Re: Evaluacion De La Idea De Mi Proyecto
Publicado por: LechugaHack en Viernes 30 de Julio de 2004, 10:12
HOLA

Me parece tu proyecto muy interesnte excepto la aplicacion claro...... :devil:  :devil:
no he leido todos los mensajes porq son muchos y mucha informacion, pero me sorprende agradablemente la forma tan documentada en q llevas todo.

Sabes para calibrar y saber exactamente como es q responde el dichoso acelerometro en circunstancias reales, lo primero q hubiese hecho es conectarlo directamente a una PC, al margen de lo q te diga la hoja de datos del chip.. y analizar las proporciones indicadas para ser tomadas en cuenta por tu chip.

No es necesario creo yo la precision matematica de las formulas por quien aplicara los movimientos

En cuanto a las posibilidades de obtener ganancias economicas de tu proyecto pues creo q no seran compensatorias al tiempo q le estas dedicando,  :lightsabre:  pero esta perfecto para hacerte rutinas muy interesantes aplicables a muchas cosas sobre todo el LCD.
 :)
En fin felicitaciones por la forma de hacer las cosas y soy tambien de los que creen en q se puden hacer cosas muy buenas en el laboratorio de casa. :smartass:

Suerteeeeee!!!!!!!

Bye  :hola: