¿Qué debo corregir de este programa Bascom AVR?

Necesito saber que está mal en este programa.
Según yo todo está bien, pero al compilar me da error.
Estoy realizando el control de una matriz de 8 x 32, y uso el 74ls164
El error aparece cuando realizo el desplazamiento.

Estoy usando el bascom avr 1.9
 

Adjuntos

  • 8x32.txt
    3.5 KB · Visitas: 10
Última edición por un moderador:
Tengo el siguiente código, consiste en obtener la temperatura actual y su promedio.
E
n el Proteus funciona de maravilla, pero una vez lo implemento en la protoboard, no funciona.
¿A
lguien podría ayudarme? por cierto, estoy usando Atmega16A
Código:
$regfile = "m16def.dat"

$crystal = 4000000

$baud = 9600


Config Lcd = 16 * 2

Config Lcdbus = 4

Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , Rs = Portc.3 , E = Portc.2


Const K = 25.7 / 1023


Config Adc = Single , Prescaler = Auto , Reference = Internal       'permite configurarar el adc

Start Adc


'EN ESTA VARIABLE SE MUESTRA LA TEMP. ACTUAL

Dim Prom As Byte

Dim T1 As Long

Dim T2 As Long

Dim T3 As Long

'VARIABLES PARA EL ADC DE TEMPERATURA

Dim A As Word

Dim B As Word

Dim C As Word

Dim D As Word

Dim S As Single

Dim T As Single

Dim U As Single

Dim V As Single


Locate 1 , 1

Lcd "Sensores de"

Locate 2 , 1

Lcd "de Temperatura"

Wait 1

Cls


Do

A = Getadc(0)

S = A * K

T1 = S * 10


Locate 1 , 1

Lcd "Temperatura 1"

Locate 2 , 1

Lcd "TEMP.=  " ; T1 ; "oC. "

Wait 1

Cls


B = Getadc(1)

T = B * K

T2 = T * 10


Locate 1 , 1

Lcd "Temperatura 2"

Locate 2 , 1

Lcd T2 ; "oC. "

Wait 1


C = Getadc(2)

U = C * K

T3 = U * 10


Locate 1 , 1

Lcd "Temperatura 3"

Locate 2 , 1

Lcd T3 ; "oC. "

Wait 1




Prom = T1 + T2

Prom = T3 + Prom

Prom = Prom / 3

Locate 1 , 1

Lcd "Promedio Total:"

Locate 2 , 1

Lcd Prom ; "oC. "

Wait 1

Cls


Locate 1 , 1

Lcd "Grupo"

Locate 2 , 1

Lcd "10"

Wait 1


Loop

End
1689283685024.png
Por cierto, de acuerdo a su datasheet.
1689283768235.png
¿En el pin 30 hay que conectar a Vcc, o no?
 
Última edición por un moderador:
Difícilmente te respondan si no les aportas mas información.

No sabemos nada de tu experiencia con el sistema Real.
Por lo general, las aplicaciones virtuales, te facilitan las cosas, pero el mundo real, suele diferir mucho.
Te sugiero "cortar" tu programa en partes pequeñas funcionales y vayas viendo cuales te funcionan DENTRO del chip y cuales no, para poder avanzar un poco, por suerte no es tan largo.
Así posiblemente, encuentres las partes que no te funciona y las que si .
 
Hola.

Además de lo que te dijeron los demás, deberías controlar el protoboard. Es el segundo proyecto que tenés que te funciona en el simulador y no en el protoboard.

Saludos.
Estoy 100% seguro que debe tener algo que ver la programación, debido que las conexiones están bien hechas, sin embargo el problema es que, una vez que grabo el programa en el Atmega16 y conecto a VCC y GND solo se enciende la pantalla del LCD pero no realiza ningún funcionamiento
 
Solo usas el datasheet "para ver dibujitos"...????
Que tal si leés que es el pin AVCC ???

Has leido lo que te indico el Dr. ??????


Por que si no alimentas con +5 VCC ese pin no funcionaran los ADC's !!!!!!!!!!!!!!!!!!!!





Salu2.-

P.D.: Nunca estés seguro al 100%, generalmente quienes estan asi de seguros, suelen estar equivocados al 99,99% !!!!!
 
Estoy 100% seguro que debe tener algo que ver la programación, debido que las conexiones están bien hechas, sin embargo el problema es que, una vez que grabo el programa en el Atmega16 y conecto a VCC y GND solo se enciende la pantalla del LCD pero no realiza ningún funcionamiento
A esta altura, Ya creo que el problema es el usuario que no sabe programar.
Un buen programador novato, pone banderas cada cierta cantidad de lineas para saber hasta donde se ejecuta bien lo que escribio y que le van diciendo, hasta donde el programa corre , pero este no hace nada de eso, así que, de pícaro, tiene poco. fundamental la imaginación en el programador además de las matemáticas y la factura de ecuaciones. :unsure: :rolleyes:
 
Has leido lo que te indico el Dr. ??????


Por que si no alimentas con +5 VCC ese pin no funcionaran los ADC's !!!!!!!!!!!!!!!!!!!!





Salu2.-

P.D.: Nunca estés seguro al 100%, generalmente quienes estan asi de seguros, suelen estar equivocados al 99,99% !!!!!
El Dr no me brinda esa información, más bien yo debo aprender por mi cuenta, en fin AVCC es un pin diferente a VCC, por lo cual no sería lo correcto conectar directamente +5, estuve leyendo que se debe conectar un filtro pasa bajo, pero no se muy bien para que sería esa conexión
A esta altura, Ya creo que el problema es el usuario que no sabe programar.
Un buen programador novato, pone banderas cada cierta cantidad de lineas para saber hasta donde se ejecuta bien lo que escribio y que le van diciendo, hasta donde el programa corre , pero este no hace nada de eso, así que, de pícaro, tiene poco. fundamental la imaginación en el programador además de las matemáticas y la factura de ecuaciones. :unsure: :rolleyes:
Considero que no es la programación puesto que corre perfectamente y sin errores, tambien debo añadir que al momento de probar en el proteus funciona correctamente
 
Última edición:
en fin, AVCC es un pin diferente a VCC, por lo cual no sería lo correcto conectar directamente +5V
Me parece que no leíste la hoja de datos.
AVCC.jpg
estuve leyendo que se debe conectar un filtro pasa bajo, pero no se muy bien para que sería esa conexión
Conectar AVCC hacia VCC por medio de un filtro pasa bajos es una recomendación para cancelar ruido, y se puede usar un inductor de 10 uH con un capacitor de 100 nF.
Igualmente lo puedes conectar directamente a VCC y colocar cerca del pin AVCC un capacitor de 100 nF.

Sin embargo, el conversor ADC no es tu problema, ya que mencionas que no ves nada en la pantalla.
Por eso te mencione que revisaras los fuses, en todo microcontrolador esa configuración es muy importante.
Si algo no está bien en la configuración de fuses, o anda lento, o más rápido, o simplemente no hace nada.
 
El Dr no me brinda esa información, más bien yo debo aprender por mi cuenta, en fin AVCC es un pin diferente a VCC, por lo cual no sería lo correcto conectar directamente +5, estuve leyendo que se debe conectar un filtro pasa bajo, pero no se muy bien para que sería esa conexión

¿ No será que te estas confundiendo AVCC con AREF ?

Igual, además de lo que han agregado antes las preguntas del millón son: ¿ Que fuente de reloj usas ? ¿ Seguro que el microcontrolador está configurado para usar esa fuente ?. ¿ Como alimentas el display ? ¿ Como esta conectado el pin del contraste ?
 
Me parece que no leíste la hoja de datos.
Ver el archivo adjunto 301197

Conectar AVCC hacia VCC por medio de un filtro pasa bajos es una recomendación para cancelar ruido, y se puede usar un inductor de 10 uH con un capacitor de 100 nF.
Igualmente lo puedes conectar directamente a VCC y colocar cerca del pin AVCC un capacitor de 100 nF.

Sin embargo, el conversor ADC no es tu problema, ya que mencionas que no ves nada en la pantalla.
Por eso te mencione que revisaras los fuses, en todo microcontrolador esa configuración es muy importante.
Si algo no está bien en la configuración de fuses, o anda lento, o más rápido, o simplemente no hace nada.
Si conecte AVCC a +5 sin embargo seguía el mismo problema, y si leí lo de AVCC y entendí que ese pin se conecta si estoy realizando una conversión A/D, en cuanto a los fuses, voy a investigar eso muchas gracias
Me parece que no leíste la hoja de datos.
Ver el archivo adjunto 301197

Conectar AVCC hacia VCC por medio de un filtro pasa bajos es una recomendación para cancelar ruido, y se puede usar un inductor de 10 uH con un capacitor de 100 nF.
Igualmente lo puedes conectar directamente a VCC y colocar cerca del pin AVCC un capacitor de 100 nF.

Sin embargo, el conversor ADC no es tu problema, ya que mencionas que no ves nada en la pantalla.
Por eso te mencione que revisaras los fuses, en todo microcontrolador esa configuración es muy importante.
Si algo no está bien en la configuración de fuses, o anda lento, o más rápido, o simplemente no hace nada.
Si conecte AVCC a +5 sin embargo seguía el mismo problema, y si leí lo de AVCC y entendí que ese pin se conecta si estoy realizando una conversión A/D, en cuanto a los fuses, voy a investigar eso muchas gracias, no tenía idea de eso
Aaaaah, y el LCD? los demas pines donde los conectaste? :sneaky:
En el proteus se puede ver, saludos
¿ No será que te estas confundiendo AVCC con AREF ?

Igual, además de lo que han agregado antes las preguntas del millón son: ¿ Que fuente de reloj usas ? ¿ Seguro que el microcontrolador está configurado para usar esa fuente ?. ¿ Como alimentas el display ? ¿ Como esta conectado el pin del contraste ?
No utilizo ninguna fuente de reloj, sino un crista, y en cuanto al display, te refieres al LCD? Si es así le alimento con 5+ en el Anodo y GND en el cátodo.
 
Pues si proteus va y lo que montas no.
Es que no sabes montar.

Pero no enseñes lo que estás montando, que es secreto de estado...


Prueba por partes.
Encender un led y apagarlo
Manejar solo el LCD con una cuenta
Manejar solo una entrada analógica y mostrarla por el puerto serie...


Y vas viendo que pasa.

O no, mejor sigue preguntando y repitiendo enproteusvaenproteusvaenoroteusvaenproteusva
 
Atrás
Arriba