Autor Tema: Problema con programa  (Leído 5856 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado yukardo

  • PIC16
  • ***
  • Mensajes: 106
Problema con programa
« en: 24 de Mayo de 2008, 13:42:41 »
Saludoss.

Estoy diseñando un pequeño organo, para ello empece a realizar una pequeña prueba. Pero el programa no me funciona como deberia. Me gustaria saber donde esta el error.

aqui esta el programa hice:

TRISIO=%00111110
A VAR BIT
B VAR BIT
C VAR BIT
D VAR BIT
main:
PEEK GPIO.1,A
PEEK GPIO.2,B
PEEK GPIO.4,C
PEEK GPIO.5,D
if A=0 THEN
GOSUB LA
ENDIF
IF B=0 THEN
GOSUB SI
ENDIF
IF C=0 THEN
GOSUB DO
ENDIF
IF D=0 THEN
GOSUB RE
ENDIF
GOTO MAIN
LA:
while A=0
freqout GPIO.0,1,440
WEND
RETURN
SI:
WHILE B=0
FREQOUT GPIO.0,1,494
WEND
RETURN
DO:
WHILE C=0
FREQOUT GPIO.0,1,262
WEND
RETURN
RE:
WHILE D=0
FREQOUT GPIO.0,1,294
WEND
RETURN

estoy usando el micro 12F675.

Tambien adjunto el circuito con el que estoy probando dicho programa.

Gracias por su ayuda de antemano.


Desconectado Chrisbaf

  • PIC16
  • ***
  • Mensajes: 178
Re: Problema con programa
« Respuesta #1 en: 24 de Mayo de 2008, 18:43:00 »
que es lo  que no hace tu programa

Desconectado yukardo

  • PIC16
  • ***
  • Mensajes: 106
Re: Problema con programa
« Respuesta #2 en: 24 de Mayo de 2008, 19:45:18 »
Se mantiene produciendo un sonido y al oprimir los pulsadores no pasa, nada no cambia el sonido. De echo el no deberia sonar a menos que sea oprimido algun pulsador.

Desconectado Chrisbaf

  • PIC16
  • ***
  • Mensajes: 178
Re: Problema con programa
« Respuesta #3 en: 24 de Mayo de 2008, 21:26:00 »
seria posible que pongas el esquema en formato de isis solo para que sea mas facil revisarlo, la proxima vez gracias

Desconectado Chrisbaf

  • PIC16
  • ***
  • Mensajes: 178
Re: Problema con programa
« Respuesta #4 en: 24 de Mayo de 2008, 21:42:06 »
chequea gp3 esta directo a la fuente

Desconectado yukardo

  • PIC16
  • ***
  • Mensajes: 106
Re: Problema con programa
« Respuesta #5 en: 24 de Mayo de 2008, 21:57:35 »
si conecto MCLR a la fuente y pasa eso. si no lo conecto no suena. Mañana coloco el archivo de proteus. lo tengo en otra PC.

Desconectado Chrisbaf

  • PIC16
  • ***
  • Mensajes: 178
Re: Problema con programa
« Respuesta #6 en: 26 de Mayo de 2008, 01:33:22 »
estuve chequeando tu programa y agregue la configuracion para inicializar el pic, ademas apague los comparadores y coloque todas las entradas digitales  lo probe y ya me funciono, aqui te dejo el codigo, creeme que yo tambien estoy aprendiendo. saludos, si no declaras wdt off el proteus te resetea a cada momento el pic. saludos :-/

        @ DEVICE pic12F675, INTRC_OSC_NOCLKOUT
                ' System Clock Options (Internal)       
        @ DEVICE pic12F675, WDT_oFF
                ' Watchdog Timer
        @ DEVICE pic12F675, PWRT_ON
                ' Power-On Timer
        @ DEVICE pic12F675, MCLR_OFF
                ' Master Clear Options (Internal)
        @ DEVICE pic12F675, BOD_ON
                ' Brown-Out Detect
        @ DEVICE pic12F675, CPD_OFF
                ' Data Memory Code Protect
        @ DEVICE pic12F675, PROTECT_OFF

TRISIO=%00111110
CMCON = 7 ' apaga comparadores
ANSEL = 0  ' setea todo digital
SYMBOL A = GPIO.1 
SYMBOL b = GPIO.2 
SYMBOL c = GPIO.4 
SYMBOL d = GPIO.5

main:

if A=0 THEN
GOSUB LA
ENDIF
IF B=0 THEN
GOSUB SI
ENDIF
IF C=0 THEN
GOSUB DO
ENDIF
IF D=0 THEN
GOSUB RE
ENDIF
GOTO MAIN
LA:
while A=0
freqout GPIO.0,1,440
WEND
RETURN
SI:
WHILE B=0
FREQOUT GPIO.0,1,494
WEND
RETURN
DO:
WHILE C=0
FREQOUT GPIO.0,1,262
WEND
RETURN
RE:
WHILE D=0
FREQOUT GPIO.0,1,294
WEND
RETURN


Desconectado yukardo

  • PIC16
  • ***
  • Mensajes: 106
Re: Problema con programa
« Respuesta #7 en: 26 de Mayo de 2008, 16:28:05 »
Muchas gracias ese era el error.

Aunque a mi el programa no me corre perfectamente al oprimir cualquier pulsador se me queda en la nota y no cambia.  Nose si a ti te paso.

Desconectado yukardo

  • PIC16
  • ***
  • Mensajes: 106
Re: Problema con programa
« Respuesta #8 en: 26 de Mayo de 2008, 16:53:21 »
TRISIO=%00111110
CMCON=%00000111
ANSEL=%00000000
A VAR BIT
B VAR BIT
C VAR BIT
D VAR BIT

main:
PEEK GPIO.1,A
PEEK GPIO.2,B
PEEK GPIO.4,C
PEEK GPIO.5,D

if a=0 then
freqout GPIO.0,1,440
endif
IF B=0 THEN
FREQOUT GPIO.0,1,494
ENDIF
IF C=0 THEN
FREQOUT GPIO.0,1,262
ENDIF
IF D=0 THEN
FREQOUT GPIO.0,1,294
ENDIF
GOTO MAIN

Asi me quedo la modificación del programa. Tiene un detalle cuando oprimo el pulsador C se queda pegado en esa nota y nose porque.

Desconectado Chrisbaf

  • PIC16
  • ***
  • Mensajes: 178
Re: Problema con programa
« Respuesta #9 en: 26 de Mayo de 2008, 17:58:43 »
cuando corro tu programa y agrego las modificaciones si me da ese efecto  pero cuando lo corro exactamente como te mostre usando symbol para definir entradas si me corre bien. Yo renombre con symbol las entradas y no use peek y si me corre bien las 4 entradas y no se me queda con ese efecto que me dices. saludos
« Última modificación: 26 de Mayo de 2008, 18:03:33 por Chrisbaf »

Desconectado yukardo

  • PIC16
  • ***
  • Mensajes: 106
Re: Problema con programa
« Respuesta #10 en: 26 de Mayo de 2008, 18:50:23 »
nose cual es la diferencia pero como tu dices si funciona. muchas gracias.

Desconectado yukardo

  • PIC16
  • ***
  • Mensajes: 106
Re: Problema con programa
« Respuesta #11 en: 27 de Mayo de 2008, 11:14:15 »
cambie el codigo para agregarle mas notas.

Ahora tengo el siguiente codigo:

TRISIO=%00001000
CMCON=%00000111
ANSEL=%00000000

SYMBOL ENT = GPIO.3
A VAR GPIO.1
B VAR GPIO.2
C VAR GPIO.4
D VAR GPIO.5

main:
A=0
B=0
C=0
D=0
if (A=0)and(B=0)AND(C=0)AND(D=0)AND(ENT=0) THEN
FREQOUT GPIO.0,1,262 'DO
ENDIF
HIGH A
IF (A=1)AND(B=0)AND(C=0)AND(D=0)AND(ENT=0) THEN
freqout GPIO.0,1,277 'DO#
ENDIF
LOW A
HIGH B
IF (A=0)AND(B=1)AND(C=0)AND(D=0)AND(ENT=0) THEN
freqout GPIO.0,1,294 'RE
ENDIF
HIGH A
IF (A=1)AND(B=1)AND(C=0)AND(D=0)AND(ENT=0) THEN
freqout GPIO.0,1,311 'RE#
ENDIF
LOW A
LOW B
HIGH C
IF (A=0)AND(B=0)AND(C=1)AND(D=0)AND(ENT=0) THEN
freqout GPIO.0,1,330 'MI
ENDIF
HIGH A
IF (A=1)AND(B=0)AND(C=1)AND(D=0)AND(ENT=0) THEN
freqout GPIO.0,1,349 'FA
ENDIF
LOW A
HIGH B
IF (A=0)AND(B=1)AND(C=1)AND(D=0)AND(ENT=0) THEN
freqout GPIO.0,1,370 'FA#
ENDIF
HIGH A
IF (A=1)AND(B=1)AND(C=1)AND(D=0)AND(ENT=0) THEN
freqout GPIO.0,1,392 'SOL
ENDIF
LOW A
LOW B
LOW C
HIGH D
IF (A=0)AND(B=0)AND(C=0)AND(D=1)AND(ENT=0) THEN
freqout GPIO.0,1,415 'SOL#
ENDIF
HIGH A
IF (A=1)AND(B=0)AND(C=0)AND(D=1)AND(ENT=0) THEN
freqout GPIO.0,1,440 'LA
ENDIF
LOW A
HIGH B
IF (A=0)AND(B=1)AND(C=0)AND(D=1)AND(ENT=0) THEN
freqout GPIO.0,1,466 'LA#
ENDIF
HIGH A
IF (A=1)AND(B=1)AND(C=0)AND(D=1)AND(ENT=0) THEN
freqout GPIO.0,1,494 'SI
ENDIF
GOTO MAIN

pero no me compila me da el siguiente error: address limit of 3ffh exceeded


Desconectado mancupic

  • PIC10
  • *
  • Mensajes: 13
Re: Problema con programa
« Respuesta #12 en: 27 de Mayo de 2008, 13:34:30 »
Sobre pasaste el maximo de memoria, address limit of 3ffh exceeded, yo no programo en c, pero si en pbp y me tira ese herror cuando supero la capacidad de memoria... creo que ese pic tiene hasta 1K de flash... trata de ir quitando sentencias, hasta que entre... (Por lo menos para ver si este es el verdadero motivo)

Desconectado Chrisbaf

  • PIC16
  • ***
  • Mensajes: 178
Re: Problema con programa
« Respuesta #13 en: 27 de Mayo de 2008, 21:31:06 »
tienes razon mancupic ese es el problema.

Desconectado yukardo

  • PIC16
  • ***
  • Mensajes: 106
Re: Problema con programa
« Respuesta #14 en: 28 de Mayo de 2008, 14:00:12 »
si ese era el problema. muchas gracias.


 

anything