TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: luisur en 25 de Junio de 2011, 22:36:05
-
Hola gente, necesito de su ayuda, realice un circuito con este dichoso pic y no lo pude hacer andar, esta muerto no da señales de vida.......pero....... cuando lo toco hecha a andar . :shock: :shock:
Y eso no es nada, apenas acerco el dedo sin tocarlo y voila funciona, :shock: :shock:es como si fuera un touch sin touch. Me pueden dar una mano? ya que se me acabaron las ideas.
Adjunto circuito y programa:
(http://i.min.us/idH52q.gif)
Esto es de la pagina de turbocnc, quiero hacer la ......maquina y estoy trabado mal. :5]
Este es el programa:
; File STEP.ASM ---> version 2
; ... for PIC16F84 microcontroller
; Program to use F84 as a step and direction controller for a unipolar
; step motor. Step and direction pins are RA0, RA1; RA2, RA3; RB0-3 and RB4-7 are the windings
; in order (driven by NPN small sig transistors or MOSFETS)
; Steps on negative going edge of step pulse.
; CPU configuration
; (It's a 16F84, RC oscillator,
; watchdog timer off, power-up timer on)
processor 16f84
include <p16f84.inc>
__config _RC_OSC & _WDT_OFF & _PWRTE_ON
; Declare variables
pattA equ H'0D' ;Current step pattern number (0-7) for axis A
lastA equ H'0E' ;Last state of step pin on axis A (1 is high, 0 is low)
pattB equ H'0F' ;Current step pattern number (0-7) for axis B
lastB equ H'10' ;Last state of step pin on axis B (1 is high, 0 is low)
inport equ H'11' ;Value of port A when read (stored for later access)
temp equ H'12'
; Program
org 0 ; start at address 0
;***************************************************
;
; START OF PIC 16F84 CODE FOR STEP;
;
;***************************************************
;
;------------------------------------------
;****Power on reset startpoint
;------------------------------------------
;***Initialization of program
; Set port B as output and port A as input (except bit 4)
movlw B'00001111'
tris PORTA
movlw B'00000000'
tris PORTB
;Clear ports and zero motors
clrf PORTA
movlw B'00010001'
movwf PORTB
clrf lastA
clrf lastB
clrf pattA
clrf pattB
;Loop around for a while to let everything stabilize
movlw d'255'
movwf inport
loop: decfsz inport, f
; goto loop
;***Basic program loop
;Main routine - check pin states and step on negative edge
;Get port data and store, then check axis A
;A10 checks if old is 0, new is 1 (update register)
;A01 checks if old is 1, new is 0 (step and update register)
;Similarly for axis B
main: movf PORTA, w
movwf inport
A10: btfsc lastA, 0
goto A01
btfss inport, 2
goto A01
bsf lastA, 0
A01: btfss lastA, 0
goto B10
btfsc inport, 2
goto B10
bcf lastA, 0
call stepA
B10: btfsc lastB, 0
goto B01
btfss inport, 0
goto B01
bsf lastB, 0
B01: btfss lastB, 0
goto main
btfsc inport, 0
goto main
bcf lastB, 0
call stepB
goto main
;------------------------------------------
;***stepA - sub to cycle axis A one half step
; improve this later to read RA4 and choose full/halfsteps as appropriate
; Dir of 1 is increase, else decrease
stepA: btfss inport, 3
decf pattA, f
btfsc inport, 3
incf pattA, f
;Peter Homann's optimization for add/subtract mod 7
movlw D'07'
andwf pattA, f
;Get step pattern and send to port B on bits 0-3
movf PORTB, w
andlw B'11110000'
movwf temp
movf pattA, w
call dcode
iorwf temp, w
movwf PORTB
return
;------------------------------------------
;***stepB - sub to cycle axis B one half step
; improve this later to read RA4 and choose full/halfsteps as appropriate
; Dir of 1 is increase, else decrease
stepB: btfss inport, 1
decf pattB, f
btfsc inport, 1
incf pattB, f
;Check for pattern overflow and fix
;Peter Homann's optimization for add/subtract mod 7
movlw D'07'
andwf pattB, f
;Get step pattern and send to port B on bits 4-7
movf PORTB, w
andlw B'00001111'
movwf temp
swapf temp, f
movf pattB, w
call dcode
iorwf temp, f
swapf temp, w
movwf PORTB
return
;------------------------------------------
;***stepcode - sub to generate bit pattern for number in w (!!MUST BE 0-7!!)
; pattern is stored in w register (lower four bits) for half step pattern
dcode: addwf PCL, f
retlw B'00000001' ;0
retlw B'00000011' ;1
retlw B'00000010' ;2
retlw B'00000110' ;3
retlw B'00000100' ;4
retlw B'00001100' ;5
retlw B'00001000' ;6
retlw B'00001001' ;7
;Mandatory end of program command
end
Les agradeceria una mano.
-
Asegúrate de que estén bien soldados la resistencia de MCLR, el cristal y los dos condensadores del cristal.
Si estás usando protoboard, intenta soldar al menos esa parte.
-
Capacitor de 100nF (y de 1uF) en alimentación, tan cerca como sea posible al PIC.
Conexión de GND efectiva y buena.
Cristal y capacitores del cristal con conexiones tan cortas como sea posibles.
No tiene que estar muy lejos de eso el problema.
-
dioh mio :mrgreen: he visto Problema sobrenatural en un 16f84a y me he tirao de cabeza a leer que habia pasao :D :D :D
-
yo me imagné :cuentos pic de ultratumba :D , los archivos secretos pic :D
-
:D :D
pensé que un 16F84A se había desdoblado a un 18F2550!!!!!!
:D :D
pero menos mal no!!! revisa la estabilidad de la fuente. Por lo que veo en tu esquema, estas usando un oscilador RC, prueba poner un XT (cristal + condensadores). La forma de activar los motores pueden causar transcientes de corriente .. podrías usar un ULN para ello también
Saludos
-
Si el circuito está armado tal cual el esquema, el problema no es sobrenatural... es bién terrenal, es físico.... y se debe a la estática, ya que no conectaste la patita de MCLR, por lo que el pic está en modo reset... al acercar el dedo, induces carga, que polariza dicho pin... que es de alta impedancia... y "funciona"... :mrgreen:
Saludos fantasmagoricos.... y bastante sobrenatural tenemos en mi ciudad las hamacas que se hamacan solas je je je
Norberto
-
hola, a mi me ha pasado este hecho extraño o sobrenatural jejeje, mi problema fue al poner los bits de configuracion para programarlo, lo estaba programando en modo de bajo voltaje. y pasaba lo mismo que funcionaba y al acercarle el dedo se reseteaba, y cosas de esas.
checa como lo programas, tal vez ese sea el problema
-
me he cag.. de la risa con lo que han puesto.
Volviendo al poseso, hice lo que me dijeron y no da bola le conecte el pin mclr y queda mudo, le conecte un capacitor en alimentacion (es una fuente AT) le cambie el ocilador por XT y nada sigue igual.
Le que si me llamo la atencion el ultimo comentario, ya que quise grabar otros pic hoy y me dio el famoso error h0000 como si no tuviera tension para grabar. Me dije "hoy no es mi dia " y deje todo para otra ves.
Consulto arme el grabador JDM y no me funciono, despues arme el gtplite y este aparentemente funciona ya que me identifica el pic me lo lee, graba y verifica, pero nada de lo que grabe anda.
En mi ciudad no hay casas de electronica grandes por lo que no arreglamos como sea desarmando trastos, ¿de estos programador cual es el mejor o cual seria mejor que estos?
-
le conecte el pin mclr y queda mudo
Hola, conectaste el MCLR con una R de 10k a VCC y MCLR con un capac 1uF a masa?
conecte un capacitor en alimentacion (es una fuente AT)
le cambie el ocilador por XT y nada sigue igual.
si cambias en la configuracion el oscilador por XT, tambien deves cambiar en el circuito, colocando un cristal de 4Mhz y dos cap. de 22nF
Saludos!
-
Hola, conectaste el MCLR con una R de 10k a VCC y MCLR con un capac 1uF a masa?
No, solo conecte el MCRL con 10k a VCC.
si cambias en la configuracion el oscilador por XT, tambien deves cambiar en el circuito, colocando un cristal de 4Mhz y dos cap. de 22nF
Si tambien lo hice, en la placa como en el programa, y cuando quise probar otros pic que tenia no los pude grabar. deci que tenia uno con el programa XT y otro con RC.
vuelvo a preguntar cual es el grabador mas eficiente para este PIC que se pueda armar con cosas comunes.
-
Muchachos!!!! Andubo
Me hicieron dudar del programador, (Construccion casera) por lo que realice unos ajuste que figuran en el foro, volvi a programarb el pic y nada, le conecte el MCRL con 10k a VCC y listo funciono perfecto!!! :-/ :-/
Gracias por su ayuda. :)
-
Me alegro de que lo hayas conseguido. La mayoría de las veces, lo "sobrenatural" se traduce en una resistencia sin poner y sólo basta con encontrarla :)