|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - Huguen_aus_Tirol
Páginas: 1 ... 11 12 [13]
301
« en: Jueves 10 de Marzo de 2005, 17:47 »
Hola! Estuve probando con el WinPic800; pude grabar el 16F873 sin problemas. Pero con el 18F no hay caso... Según mis conclusiones, debe ser problema del soft, ya que con el ICProg funciona bien para ambos micros. Los 18F son un poco más complejos de grabar, comparados a los 16F; podría ser algún problema con los tiempos... Lástima que con el WinPic no se puedan ajustar los tiempos, como en el otro soft. Bueno, ya veremos como se soluciona... Saludos!
302
« en: Miércoles 9 de Marzo de 2005, 23:52 »
Hola Jonathan! Muy buena la idea de reunir los diversos programadores que existen! Les cuento que estoy usando sin problemas el que presenté. Me había olvidado de indicar como configurar el ICProg: En Ajustes>Tipo Hardware seleccionar el "TAIT Serial Programmer", y marcar "invertir MCLR" e "invertir VCC". El selector de "retraso IO" lo tengo en 1 y me funciona muy rápido; anteriormente no podía bajar de 5. Estoy usandolo con el 16F873 y con el 18F452, y debería funcionar con los demás micros que permite el soft. Me interesa poder usarlo tambien con el WinPic800, porque este soft dice poder grabar los dsPIC, que por ahora se están salvando de mí, pero no por mucho más tiempo... Desafortunadamente solo pude leer el 18F, pero no grabarlo; debería probar un poco más, pero estoy seguro de que es algo de la configuración... Bueno, esto es solo una simple interfaz... Deberíamos agradecer a los creadores de los softs que permiten realmente grabar nuestros micros, ya que es allí donde está toda la "inteligencia" de este tema Saludos!
303
« en: Martes 8 de Marzo de 2005, 17:52 »
Hola! El PC se carga con el valor que contiene más el valor que tenga W. La instruccion ANDLW 0x0F es para eliminar el nibble alto de W (los bits 4 a 7), de esta forma la longitud máxima del salto es 16 decimal. Si no haces esto, y tienes 16 RETLW, te puedes pasar de largo en la tabla y saltar a algún lugar fuera de ella; con esto se pierde el control del programa. En tu caso, si tu tabla se inicia en 0x10, en ningún caso va a saltar más alla de 0x0F; no importa que en TMR0 tengas un valor mayor a 0x0F, ya que se filtra con el AND. Bueno, espero haber sido más o menos claro... Ah!!! Otra cosa! Debes fijarte donde pones la tabla, porque si PCL se sobrepasa, el registro PCLATH no se incrementa automáticamente!!! Si está en 0x10 no hay problema, pero si está, p.e., en 0xFA (por decir una dirección) hay que tener cuidado. Se puede solucionar con soft... Todavía recuerdo los dolores de cabeza que me dió... Buano, saludos y suerte!
304
« en: Viernes 4 de Marzo de 2005, 16:37 »
Hola! Conseguí un TS922IN, que es un doble operacional rail to rail. Es compatible pin a pin con el TL082, pero sale un poquito más caro (no mucho...). Ahora me funciona bien, sin haber modificado nada en el hard. Tengo una tension de offset de 10 mV, y la salida me llega a 9.9 V (para alimentación de 10V). Desde ya muchas gracias, ADC!! Gracias por la ayuda!! Saludos PD. Me había olvidado! Lo más cerca posible de la alimentación del AO conecte a masa un C de 1 µF, el que no estaba originalmente.
305
« en: Jueves 3 de Marzo de 2005, 22:56 »
Hola! Aca les paso el circuito de un programador que acabo de realizar. Tenía otro, más clásico, pero al grabar en ICSP solía tener que desconectar el cable, según lo que tenía conectado en RB6 y RB7. Esto debido a que me dejaba en estos pines un nivel definido. La idea surgió de la Elektor de Enero (n. 410, edición alemana), donde se publica una placa experimental basada en 18F452, y que tiene incorporada la circuitería de programación. El autor del artículo es Peter Moreton, y tiene una página en Página de Peter Moreton; Pero verifiquen, ya que no pude conectarme. Este circuito es algo (bastante) distinto, pero se basa en el mismo concepto. Uso un 74LS244, que puede dejar sus salidas en alta impedancia, de esta forma consigo dejar aislados RB7 y RB6. Ahora no tengo que desconectar el cable cada vez que grabo el micro! Creo que el circuito es bastante simple de entender. No es gran cosa, pero lo publico con la idea de animar a los que recien empiezan. Lo importante es que, con un poco de paciencia e imaginación, y aprovechando los materiales que nos sobran podemos encontrar alguna solución a algún problema; p.e., uso para VPP un 7815 y unos diodos, que fue lo primero que encontré a mano . El 74LS244 bien puede reemplazarse por otro (74LS373, 74HCT573, etc...) Lo mismo vale para los transistores, e incluso las R pueden cambiar, siempre que nos mantengamos dentro de algunas reglas! El circuito me funciona a la perfección con el, por todos ya conocido, ICProg. Con el WinPIC800 puedo leer el PIC, pero no lo graba; si alguien me da una mano... Gracias! Bueno, a no desanimarse; y guardar bien los materiales que sobran!! Saludos
306
« en: Martes 1 de Marzo de 2005, 22:08 »
Hola! Aca les paso un pequeño programa de ejemplo, en el que está como utilizo el timer0 para generar retardos; me funciona muy bien, tal vez no tan exacto, pero me sirve a la perfección para lo que necesito. Además me parece fácil de adaptar a cualquier necesidad de tiempos... Usé el mismo concepto con los ST de Thompson, despues con los 16Fxx, y ahora me da excelentes resultados con los 18F. Bueno, espero no se mareen, pero me pareció mejor darlo asi como está... Ah, y si alguien lo entiende, le agradecería me explique como funciona!! (es chiste) Saludos y suerte TITLE "Temporizador general programable" ; ; Autor: Hugo Erhard, <hugoerhard@yahoo.de> ; Inicio: 23-08-2002 ; Terminado: 25-08-2002 ; ; Revisiones: 1.00 23-08-2002 Initial release ; 1.01 25-08-2002 Se define constante para Xtal 3.57 MHz ; ;=============================================================================== ; ;=============================================================================== ; errorlevel -215, -302, -301 list p=pic16f84 include "p16f84.h" __CONFIG 0x3FF1 ; ;------------------------------------------------------------------------------- ; DEFINICION DE VARIABLES ; CBLOCK 0x0E ; T0_ADJ; para correccion de error en timer T0_SEG; post scaler para 1 segundo MIL50; contador de 50 milisegundos CNT_SEG; contador de segundos CNT ; contador general ; ENDC ; ; DEFINICION DE PINES ; #DEFINE SELECT PORTA,0; selector base de tiempo #DEFINE START_SW PORTA,1; pulso de inicio #DEFINE OUT PORTA,2; salida, 1 mientras temporiza #DEFINE BUZZER PORTA,3; zumbador #DEFINE LED PORTA,4; led ; ; DEFINICION DE CONSTANTES ; XTAL EQU .10 ; si usas xtal de 4 MHz declaralo aqui ; if XTAL == .4 ; COUNTS EQU .61 ; 61 -> Xtal = 4 MHz // 81 -> Xtal = 3.57 MHz K_1seg EQU .20 ; 20 cuentas de 50 µseg = 1 seg ; else ; COUNTS EQU .159; 159 -> Xtal = 10 MHz K_1seg EQU .100; 100 cuentas de 10 µseg = 1 seg ; endif ; ;------------------------------------------------------------------------------- ; ORG 0 POR GOTO MAIN ; reset, salto al programa principal ; ORG 4 ISR MOVWF SAVE_W ; salvo W SWAPF STATUS,W; cargo STATUS MOVWF SAVE_S ; y salvo CLRF STATUS ; para asegurar que este en banco 0 BTFSC T0IF ; interrupcion de timer ? GOTO T0ISR ; si, atiendo... INTEND SWAPF SAVE_S,W; recupero STATUS invirtiendo nibbles MOVWF STATUS ; SWAPF SAVE_W,F; recupero W de esta manera para no afectar SWAPF SAVE_W,W; los bits de STATUS RETFIE ; y salgo de interrupcion habilitandolas ;------------------------------------------------------------------------------- ; ; T0 INTERRUPT SERVICE ROUTINE ; ; Cristal = 4 MHz ; Ciclo = 1 µseg, prescaler = 256 ; TMR0 se incrementa cada 1 µseg * 256 = 256 µseg ; Para llegar a 50 mseg -> 50000 µseg / 256 µseg = 195.31 -> 195 cuentas ; Cargando TMR0 con 256 - 195 = 61, se genera una interrupcion cada 195 ; cuentas, es decir cada 195 * 256 µseg = 49.92 mseg. ; Esto genera un error de 50000 µseg - 49920 µseg = 80 µseg. ; ; NOTA: si se utiliza un cristal de 3.579545 MHz, se tiene: ; temporizador MINUTOS cuenta cada 1.11746 minutos ; temporizador HORAS cuenta cada 1h 7' 2" ; Si se utiliza este cristal, para conservar los tiempos de temporizacion, ; cargar TMR0 con 81 (175 cuentas) en lugar de 61 (195 cuentas). ; Se agrega un error de 3 mseg por segundo de temporizacion. ; *** VER EN DECLARACION CONSTANTES *** ; ; CONSTANTES PARA CRISTAL DE 10 MHz ; ; Cristal = 10 MHz ; Ciclo = 0.4 µseg, prescaler = 256 ; TMR0 se incrementa cada 0.4 µseg * 256 = 102.4 µseg ; Para llegar a 50 mseg -> 50000 µseg / 102.4 µseg = 488.28 -> 488 cuentas ; ; Me pase, puedo tener maximo 256 cuentas!!!!!!! ; Probamos con temporizacion de 10 mseg = 10000 µseg: ; ; Para llegar a 10 mseg -> 10000 µseg / 102.4 µseg = 97.65 -> 97 cuentas ; ; Cargando TMR0 con 256 - 97 = 159, se genera una interrupcion cada 97 ; cuentas, es decir cada 97 * 102.4 µseg = 9.9328 mseg. ; Esto genera un error de 10000 µseg - 9932.8 µseg = 67.2 µseg. ; Este error corresponde a 67.2 µseg / 0.4 µseg = 168 instrucciones ; T0ISR if XTAL == .4 ; ; Se compila si se usa XTAL de 4 MHz ; NOP ; este lazo genera una demora de 80 µseg MOVLW .15 ; para compenzar el error del timer MOVWF T0_ADJ ; GOTO $+1 ; para gastar 2 ciclos ahorrando memoria DECFSZ T0_ADJ,1; GOTO $-2 ; ; else ; ; Se compila si se usa XTAL de 10 MHz (o distinto de 4 MHz OJO!!!) ; GOTO $+1 ; para compenzar error GOTO $+1 ; MOVLW .30 ; para compenzar el error del timer MOVWF T0_ADJ ; GOTO $+1 ; para gastar 2 ciclos ahorrando memoria DECFSZ T0_ADJ,1; GOTO $-2 ; ; endif ; MOVLW COUNTS ; cargo TMR0 para N cuentas MOVWF TMR0 ; DECF MIL50,1 ; DECFSZ T0_SEG,1; decremento post-scaler de 1 segundo GOTO T0END ; si falta salgo ; MOVLW K_1seg ; valor de recarga de post-scaler de 1 segundo MOVWF T0_SEG ; DECF CNT_SEG,1; decremento contador de segundos T0END BCF T0IF ; rehabilito interrupcion de timer GOTO INTEND ; y salgo ;------------------------------------------------------------------------------- ; ; Aqui salta despues de un reset, se inicializan todos los registros ; MAIN CLRF STATUS ; borro STATUS para saber como inicializo BSF RP0 ; banco 1 MOVLW b'00000011'; PORTA -> xxxOOOII MOVWF TRISA ; MOVLW b'11111111'; PORTB -> IIIIIIII MOVWF TRISB ; MOVLW b'00000111'; RB pull up enabled, x, TMR0 ck internal, MOVWF OPTION_REG; x, prescaler to TMR0, prescaler = 256 BCF RP0 ; banco 0 CLRF PORTA ; borro puerto A MOVLW K_1seg ; inicializo base de tiempos de segundos MOVWF T0_SEG ; MOVLW COUNTS ; inicializo timer 0 MOVWF TMR0 ; MOVLW b'10100000'; habilito interrupciones, solo timer 0 MOVWF INTCON ; ;------------------------------------------------------------------------------- ; ; Lazo principal, salida permanece baja por 58 seg y alta por 2 seg ; La salida se refleja en el led ; MAIN_LOOP BCF OUT ; salida en 0 BSF LED ; led apagado MOVLW .58 ; preparo demora de 58 seg MOVWF CNT_SEG ; WAIT_LOW TSTF CNT_SEG ; BNZ WAIT_LOW; espero a que pasen los 58 seg BSF OUT ; salida en 1 BCF LED ; led encendido MOVLW .2 ; preparo demora de 2 seg MOVWF CNT_SEG ; WAIT_HIGH TSTF CNT_SEG ; BNZ WAIT_HIGH; espero a que pasen los 2 seg GOTO MAIN_LOOP; y repito for ever... ; END
307
« en: Martes 1 de Marzo de 2005, 07:01 »
Hola! Hay muchísimas formas de hacer retardos en los microcontroladores; yo personalmente uso el timer0 y obtengo bases de tiempo de, p.e., 10 mseg, 1 seg, 1 min, etc. Todo depende de que es lo que se quiera hacer. Hacer que sea exacto quizá no debería preocuparte tanto, si tienes un error de algunos µseg cada segundo no es tan trágico. P.e., un error de 20 µseg por cada segundo (20 instrucciones, y es mucho) te da un segundo de error por cada, aprox., 14 horas! Si solo se quiere hacer parpadear un led para indicar un estado, o algo, tal vez sea lo mismo que parpadee a 1.2 seg, 1 seg, ó a 0.95 seg En este foro existen ya rutinas de tiempos hechas, si no me equivoco Jonathan ya te pasó el link. Eso te facilita el trabajo de hacerlas, pero fijate como funcionan; puedes sacar muchas cosas en claro, y que despues seguro te serviran para solucionar otros problemas Bueno, a seguir practicando, hasta que salga humo de nuestras cabezas, o del micro . Lo importante es aprender! PD Jonathan, gracias por aclarar el tema del warning! Siempre había tenido la duda... Saludos
308
« en: Lunes 28 de Febrero de 2005, 06:52 »
Hola Eliza! Es comun que salga el mensaje "register in operand not in bank 0", es el mensaje 302, y el programa te funciona igual. El warning tambien ya lo conosco (es el 207), pero en este preciso momento no me acuerdo como lo solucione De todas formas creo que no hay problema. Tienes que fijarte en que linea de tu codigo se encuentra el problema, y me dices asi lo solucionamos.... list p=16f84A [B]errorlevel -302, -207[/B] include "p16F84A.inc” STATUS equ 0x3; warning PORTB equ 0x6; warning TRISB equ 0x86; aunque estaba en 0x6 y me daba error ; por eso lo cambie = me da un warning org 00h reset goto inicio org 10h inicio
Con la linea anterior evitas que te salgan el mensaje y el warning Bueno, espero te ayude... Saludos Ah!!!!! Seguramente cuando declaras los registros, no estan en la primer columna de la pantalla!! Fijate que no haya ningun espacio, o tab ni nada!! Por eso el warning 207. Pero tiene que funcionar Saludos!
309
« en: Sábado 26 de Febrero de 2005, 18:57 »
Hola Eliza! Al iniciarse el micro tras un reset, el contador de programa apunta a la direccion 0x00. Como primer instruccion se acostumbra un salto (goto xxxx) a la direccion donde empieza tu rutina principal de programa. Puede ser 10h o cualquier otra, pero cuidado que en la direccion 0x04 se encuentra el vector de interrupciones; es decir que al producirse una interrupcion (si esta habilitada) se salta a la direccion 0x04 Para acceder a TRISB tienes primero que seleccionar el banco 1 de RAM, tal como esta en la segunda ventana de codigo de tu mensaje. El bit /PD es el bit 3 de STATUS! Posiblemente hayas tenido error porque no esta definido el registro TRISB; usando la instruccion TRIS PORTx funciona, pero es una instruccion de los viejos 15C5x y es aconsejable no usarla, seguramente te habra dado un mensaje al compilar. Cuando escribas o leas en PORTB (o PORTA) estas accediendo directamente a los pines del micro. Para ello primero hay que configurarlos, escribiendo en el registro TRISx correspondiente. Hablando de los bancos de memoria, es comun que seleccionemos un banco, el 1 por ejemplo, y despues nos olvidamos de volver al banco 0, lo que nos da algunos dolores de cabeza un rato... pero con el tiempo deja de pasar! Bueno, espero que te sea de ayuda Saludos y suerte
310
« en: Miércoles 9 de Febrero de 2005, 00:04 »
Hola Jonathan! Un par de veces cambié unos integrados smd, pero no eran tan pequeños; con un soldador con buena punta y soldando rapido funcionó. Pero recuerdo que un amigo soldó en varias oportunidades integrados smd muy pequeños, o mejor dicho con las patas muy juntas. Se valió de un alambre, que lo calentaba con un mechero creo; lo gracioso es que en una oportunidad le pidió ayuda a la señora, que tenía mejor pulso! No se todos los detalles del caso, pero no le resultó muy fácil (tampoco fue imposible) y la cosa funciono a la perfección.
Bueno, espero te sirva de algo...
Saludos
312
« en: Jueves 13 de Enero de 2005, 18:25 »
Hola ! Estuve viendo un poco de los micros de Atmel, y me trae a la memoria gratos recuerdos de cuando entré al mundo de los MCU, alla por el '92... con el 8051, más precisamente el 8031. Personalmente, por ahora sigo con los PIC; pero les acompaño un poco con estos micros... Por lo que vi en otros temas de discusión, el mayor problema esta en encontrar un programador. Recién bajé la hoja de datos del 89C51RC, y vi que tiene las especificaciones de programación; podríamos desarrollar uno nosotros mismos, aqui en este foro... p.e. sin otro micro y por medio del puerto paralelo. El problema será el programa (soft) para grabar el micro, yo no voy bien en lo que es programación en PC (VB, C, etc...); pero con la ayuda del foro se podría generar algún soft. Bueno, les dejo con la inquietud y voy leyendo la hoja de datos que bajé. Saludos a todos.
313
« en: Martes 11 de Enero de 2005, 06:50 »
315
« en: Lunes 10 de Enero de 2005, 23:05 »
Hola Jonathan! No estoy en el tema de los Atmel, aunque vi muchos articulos sobre ellos; si, hace varios años, programe los 8051. Recuerdo que hace un par de años salió como construirse un programador para los Atmel en una publicacion de la revista Elektor; lamentablemente no la tengo aqui, y no me es posible conseguirla ya que dejé el numero en Argentina... pero en una de esas te sirve el dato. Si mal no recuerdo creo que no estaba basado en otro micro. Bueno, mientras te escribo estaba navegando, aca va algo que quiza te sirva... http://www.pjrc.com/tech/8051/#atmel_89c2051http://www.epanorama.net/links/microprocessor.html#atmelPuedes fijarte tambien en los links de www.mikrocontroller.net, esta pagina esta en aleman, pero tiene links interesantes a sitios en ingles... Bueno, saludos y suerte...
316
« en: Sábado 8 de Enero de 2005, 10:35 »
Hola a todos. Tengo el siguiente problema: saco una señal analógica por los dos puertos PWM de un 18F452 (RC1 y RC2), lo que funciona perfectamente bien, y luego trato de multiplicarlo por 2, para obtener una señal de 0 a 10 V; es aquí donde tengo problemas, el amplificador no me funciona. El hardware es así: entre la salida del PIC y la entrada no inversora de un TL082 una R de 470, entre la salida del AO y la entrada inversora una R de 10 K y lo mismo entre esta entrada y masa (A=2). El circuito es el mismo para el otro modulo PWM; la alimentación es regulada y simple de +10V. Independientemente de la salida PWM, tengo a la salida del AO unos 7V. Probé con varios AO, y con distintas R de carga, el resultado es siempre el mismo. La frecuencia del PWM es 1 KHz. Si alguien me da una mano... le agradesco! Saludos
Hugo
317
« en: Jueves 16 de Diciembre de 2004, 19:37 »
Hola Farmada. Prueba bajar la corriente del led, con unos 5 mA debería funcionar. Con una resistencia de 4K7 en el ánodo tienes unos 5 mA para 24V, y unos 115 mW de potencia sobre R, es decir que una R de 1/8 W no tiene que tener problemas. Talvez funcione también una R de 5K6. En el lado digital, conecta el emisor del opto a masa (digital) y al colector una R de 4K7 a +5V; la señal al micro la tomas del colector. Cuando tienes 24 V tienes un 0 en la entrada del micro. Los 24 V tienen que ser de continua, sino hay que rectificar. Que PIC estás usando y a que puerto estás metiendo la señal? Bueno, espero te ayude... Saludos
318
« en: Jueves 9 de Diciembre de 2004, 23:32 »
Hola juanjillo! No entiendo exactamente el problema, tampoco programe pic´s en C, pero solo se tienen que configurar un par de registros para poder usar el AD de los pic´s; no es muy complicado, pero la primera vez puede haber algunos problemitas (me pasó). Si quieres el fin de semana te paso los registros y como se configuran (pero tu mensaje no tiene muchos datos), o lo puedes ver en el data sheet (esta en ingles...) Bueno, saludos y espero poder ayudarte
319
« en: Jueves 9 de Diciembre de 2004, 23:11 »
Bueno, como les decía, estuve un tiempo apartado del tema, y ahora lo quiero retomar. Veo que Microchip ha sacado muchas variedades de micros el último tiempo; bueno, en la provincia en la que estaba en Argentina era casi imposible conseguir un viejito 16F84... pero aqui es otra cosa. Por el momento no tengo ningún proyecto (a corto plazo), asi que me ofresco a ayudar a quien necesite una mano (con todo gusto y sin intereses!) Saludos a todos
320
« en: Jueves 9 de Diciembre de 2004, 07:14 »
Hola a todos! Hace poco encontre la hoja de datos de las SD, como las que se usan en las camaras. La direccion es: http://www.envoydata.com/secureDigital.htmTienen un monton de registros que hay que parametrizar, pero tienen mucha capacidad, son baratas y se consiguen por cualquier parte. Solo hay que tomarse el tiempo de estudiarlas un poco. No se donde se podría conseguir algun zocalo o algo para insertarlas y leerlas Espero les sirva y saludos
321
« en: Miércoles 8 de Diciembre de 2004, 22:48 »
Hola Girasol! Hace algun tiempo trabaje en un proyecto donde se enviaban datos por RF; no se si es mas o menos lo que quieres hacer, pero con gusto te ayudaría. Tengo una rutina con el TMR0 que me resultó bastante precisa como base de tiempos, con cristal de 4 MHz, pero se puede adaptar a otros... Saludos y espero tu respuesta.
322
« en: Miércoles 8 de Diciembre de 2004, 22:38 »
Hola y saludos a todos! Soy nuevo en este foro, y me interesaría participar en el tema microcontroladores, particularmente si se trata de PIC´s. Hace unos 9 años comencé con el 8051, y pase brevemente por Motorola y ST; despues me incliné por los de Microchip. Hace más o menos un año estoy algo desconectado y ahora quiero volver al tema. Bueno, espero compartir experiencias con ustedes... Me despido por ahora, y salgo con RETFIE... Saludos
Páginas: 1 ... 11 12 [13]
|
|
|