Autor Tema: Error en simulación de ATmega16 :S  (Leído 8389 veces)

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

Desconectado The_Chosen

  • PIC12
  • **
  • Mensajes: 51
Error en simulación de ATmega16 :S
« en: 28 de Febrero de 2008, 12:01:24 »
Hola amigos, en estos momentos estoy simulando un Atmega 16 en proteus isis:



EL problema surge con ese modelo, trato de prender un simple led con un botón, pero no me resulta.
También les digo que estoy programando con el AVR-gcc integrado en el AVRstudio 4. 
Les dejo el código, ojalá puedan ayudarme a encontrar ese error pequeño, tiene que ser bien chico porque hasta ahora no lo veo  :D 
 


Citar
#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>

void main() {
       
unsigned char i;

   //CONFIGURO PINCO COMO SALIDA
       
   DDRB |= 1<<DDB0;
   _delay_ms(250);

        //PARPADEO LEDS DOS VECES
   PORTB |= 1<<PB0;
   _delay_ms(250);
   PORTB &= ~(1<<PB0);
   _delay_ms(250);
   PORTB |= 1<<PB0;
   _delay_ms(250);
   PORTB &= ~(1<<PB0);
         
   // CONFIGURO PINB1 COMO ENTRADA
   DDRB &=~(1<<DDB1);

   //coloco la resistencia pull-up

   PORTB |= 1<<PB1;

for( ;; )
{
   asm volatile("nop");

      i= PINB & (1<<PB1);

      if (i)      
      { PINB |=(1<<PB0);
         
      }

}

}



Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Error en simulación de ATmega16 :S
« Respuesta #1 en: 28 de Febrero de 2008, 13:13:04 »
Hola

Deberías empezar simulándolo en AVR Studio. Proteus tiene errorcillos de simulación, a mi nunca me dejó simular el pic18f452.

Desconectado The_Chosen

  • PIC12
  • **
  • Mensajes: 51
Re: Error en simulación de ATmega16 :S
« Respuesta #2 en: 28 de Febrero de 2008, 15:40:18 »
Hola

Deberías empezar simulándolo en AVR Studio. Proteus tiene errorcillos de simulación, a mi nunca me dejó simular el pic18f452.

SI, tienes razón, simulé en avr studio y me impresionó el detalle con que sale cada registro. A pesar de que proteus es bueno, igual tiene algunos errores, pero encontré el error al final.

en el ciclo IF en vez de PINB |=(1<<PB0) debi colocar PORTB |=(1<<PB0)
jejjee.
Bueno, seguiré en esto :P

Desconectado MiCrOtRoNiC

  • PIC18
  • ****
  • Mensajes: 271
Re: Error en simulación de ATmega16 :S
« Respuesta #3 en: 28 de Febrero de 2008, 17:03:08 »
Hola

Deberías empezar simulándolo en AVR Studio. Proteus tiene errorcillos de simulación, a mi nunca me dejó simular el pic18f452.

o Tambien lo puedes simular con el AVR SIMULATOR IDE..q hasta orita me entero de su esistencia..tien la misma interfz del psi

edito:perdon este es en basic no en c..
« Última modificación: 28 de Febrero de 2008, 17:06:27 por MiCrOtRoNiC »

Desconectado The_Chosen

  • PIC12
  • **
  • Mensajes: 51
Re: Error en simulación de ATmega16 :S
« Respuesta #4 en: 01 de Marzo de 2008, 02:00:42 »
Bueno, ahora estoy simulando una pantalla LCD, y para ello encontré una librería LCD lista para usar. AHora el problema que me surgió es que al usar algunas instrucciones propias de la librería, como lcd_init, el compilador no los reconoce.
Lo anterior me sugiere que instalé mal la librería, porque son dos archivos que copié en una de las carpetas del WINavr, lcd.h y lcd.c y luego hice un #include <util/lcd.h> y nada más

¿Alguien podría explicarme como puedo instalar correctamente esta librería ? : :?

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: Error en simulación de ATmega16 :S
« Respuesta #5 en: 01 de Marzo de 2008, 02:33:16 »
Hola amigo, por lo que meciona seguro que ha emplanado mal las libreria, lee bien en ayuda y te dara cuenta deberia usar la libreria en el mismo archivo donde tiene escrito el programa, aunque te aconsejo que use AVstudio4 y integra el Winavr tambien, si te da problema ponlo todos por aqui asi te lo podria probar
Saludo

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Error en simulación de ATmega16 :S
« Respuesta #6 en: 01 de Marzo de 2008, 07:15:18 »
Cambia el include a:

#include "patch/lcd.h"

Donde patch es el camino completo a la librería.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado The_Chosen

  • PIC12
  • **
  • Mensajes: 51
Re: Error en simulación de ATmega16 :S
« Respuesta #7 en: 01 de Marzo de 2008, 11:44:36 »
Hola amigo, por lo que meciona seguro que ha emplanado mal las libreria, lee bien en ayuda y te dara cuenta deberia usar la libreria en el mismo archivo donde tiene escrito el programa, aunque te aconsejo que use AVstudio4 y integra el Winavr tambien, si te da problema ponlo todos por aqui asi te lo podria probar
Saludo

Hola stk500 ya había leído la ayuda con anterioridad, y claro, señala que instales la librería en la carpeta de tus proyectos. Pero aún así el compilador no reconoce lcd.h. Yo uso el AVRstudio 4 SP2 integrado con el WINavr en todo caso.

Cambia el include a:

#include "patch/lcd.h"

Donde patch es el camino completo a la librería.

Un saludo

Hola jfh900, ya había hecho eso, coloqué lo siguiente #include <Inicioatmel/AVRlib/lcd.h> pero igual sigo en las mismas.

Les relato algo más.

En la ayuda del AVRlib :

http://www.mil.ufl.edu/~chrisarnold/components/microcontrollerBoard/AVR/avrlib/docs/html/index.html

Sale que debo crear o modificar la variable de entorno AVRLIB. Me metí a editar el registro directamente, y cambié el directorio original :
AVRLIB = D:\Inicioatmel\AVRlib

por esto :

AVRLIB = D:/Inicioatmel/AVRlib

Seguido de eso le hice unas pruebas recomendadas en la misma ayuda, las cuales arrojaron como resutaldo final que la libraría AVRlib está lista para usarse, es decir estaría todo OK, pero igual no puedo compilar correctamente :S  :

Citar
    *  Open a Command Prompt (find it in your Start Menu or select Run, and run cmd.exe)
    * Change directories to the location where you installed AVRlib. For example:
      cd c:\Code\AVR\AVRlib
    * Go into the examples directory. cd examples
    * Pick an example to try compiling such as rprintf and change to that directory. cd rprintf
    * Type make clean at the prompt
    * Type make
    * If your output looked like this then you just compiled your first AVRlib program:

      C:\Code\AVR\avrlib\examples\rprintf>make
      avr-gcc -c -g -Os -Wall -Wstrict-prototypes -Ic:/code/avr/avrlib -Wa,-ahlms=rpri
      ntftest.lst -mmcu=atmega323 -I. rprintftest.c -o rprintftest.o
      avr-gcc -c -g -Os -Wall -Wstrict-prototypes -Ic:/code/avr/avrlib -Wa,-ahlms=c:/c
      ode/avr/avrlib/buffer.lst -mmcu=atmega323 -I. c:/code/avr/avrlib/buffer.c -o c:/
      code/avr/avrlib/buffer.o
      avr-gcc -c -g -Os -Wall -Wstrict-prototypes -Ic:/code/avr/avrlib -Wa,-ahlms=c:/c
      ode/avr/avrlib/uart.lst -mmcu=atmega323 -I. c:/code/avr/avrlib/uart.c -o c:/code
      /avr/avrlib/uart.o
      avr-gcc -c -g -Os -Wall -Wstrict-prototypes -Ic:/code/avr/avrlib -Wa,-ahlms=c:/c
      ode/avr/avrlib/rprintf.lst -mmcu=atmega323 -I. c:/code/avr/avrlib/rprintf.c -o c
      :/code/avr/avrlib/rprintf.o
      avr-gcc -c -g -Os -Wall -Wstrict-prototypes -Ic:/code/avr/avrlib -Wa,-ahlms=c:/c
      ode/avr/avrlib/timer.lst -mmcu=atmega323 -I. c:/code/avr/avrlib/timer.c -o c:/co
      de/avr/avrlib/timer.o
      avr-gcc -c -g -Os -Wall -Wstrict-prototypes -Ic:/code/avr/avrlib -Wa,-ahlms=c:/c
      ode/avr/avrlib/vt100.lst -mmcu=atmega323 -I. c:/code/avr/avrlib/vt100.c -o c:/co
      de/avr/avrlib/vt100.o
      avr-gcc  c:/code/avr/avrlib/buffer.o c:/code/avr/avrlib/uart.o c:/code/avr/avrli
      b/rprintf.o c:/code/avr/avrlib/timer.o c:/code/avr/avrlib/vt100.o rprintftest.o
        -Wl,-Map=rprintftest.map,--cref -mmcu=atmega323 -o rprintftest.elf
      avr-objcopy -O ihex      -R .eeprom rprintftest.elf rprintftest.hex
      avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section
      -lma .eeprom=0 -O ihex   rprintftest.elf rprintftest.eep
      avr-size rprintftest.elf
         text    data     bss     dec     hex filename
         9596       0     192    9788    263c rprintftest.elf
      Errors: none
      rm c:/code/avr/avrlib/vt100.o c:/code/avr/avrlib/rprintf.o c:/code/avr/avrlib/ua
      rt.o c:/code/avr/avrlib/timer.o c:/code/avr/avrlib/buffer.o

      C:\Code\AVR\avrlib\examples\rprintf>

      AVRlib is ready to use!

¿Qué error podría estar cometiendo ?

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Error en simulación de ATmega16 :S
« Respuesta #8 en: 01 de Marzo de 2008, 11:54:49 »
Tienes que poner las comillas y quitar los paréntesis.

Esta es su Sintaxis:

Citar
Directiva #include:

La directiva "#include", como ya hemos visto, sirve para insertar ficheros externos dentro de nuestro fichero de código fuente. Estos ficheros son conocidos como ficheros incluidos, ficheros de cabecera o "headers".

Sintaxis:

#include <nombre de fichero cabecera>

#include "nombre de fichero de cabecera"

#include identificador_de_macro

El preprocesador elimina la línea "#include" y, conceptualmente, la sustituye por el fichero especificado. El tercer caso haya el nombre del fichero como resultado de aplicar la macro.

El código fuente en si no cambia, pero el compilador "ve" el fichero incluido. El emplazamiento del #include puede influir sobre el ámbito y la duración de cualquiera de los identificadores en el interior del fichero incluido.

La diferencia entre escribir el nombre del fichero entre "<>" o """", está en el algoritmo usado para encontrar los ficheros a incluir. En el primer caso el preprocesador buscará en los directorios "include" definidos en el compilador. En el segundo, se buscará primero en el directorio actual, es decir, en el que se encuentre el fichero fuente, si no existe en ese directorio, se trabajará como el primer caso.

Si se proporciona el camino como parte del nombre de fichero, sólo se buscará es el directorio especificado.

Un saludo
« Última modificación: 01 de Marzo de 2008, 11:59:42 por jfh900 »
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado The_Chosen

  • PIC12
  • **
  • Mensajes: 51
Re: Error en simulación de ATmega16 :S
« Respuesta #9 en: 01 de Marzo de 2008, 12:37:34 »
mmm, le coloqué #include "D:/Inicioatmel/AVRlib/lcd.h" y a pesar que ya no me lanza el error  "No such file or directory" igual no me reconoce los parámetros básicos como por ejemplo "lcd_init(LCD_DISP_ON)" y me dice :

D:\Inicioatmel\datalogger\default/../datalogger.c:19: undefined reference to `lcd_init'.

Les adjunto ambos archivos: lcd.h y lcd.c




Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Error en simulación de ATmega16 :S
« Respuesta #10 en: 01 de Marzo de 2008, 12:49:41 »
¿Que compilador utilizas?

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado The_Chosen

  • PIC12
  • **
  • Mensajes: 51
Re: Error en simulación de ATmega16 :S
« Respuesta #11 en: 01 de Marzo de 2008, 12:55:49 »
¿Que compilador utilizas?

Un saludo

Uso el AVR-gcc que está integrado al AVRstudio4.

Otro dato que no les comenté es que la librería que estoy utilizando es la de Procyon http://www.mil.ufl.edu/~chrisarnold/components/microcontrollerBoard/AVR/avrlib/

Su librería lcd.h me lanzaba muchos errores así que la cambié por otra (corté y pegué :P ):

http://homepage.hispeed.ch/peterfleury/avr-software.html

que está más actualizada y es la que adjunté al post anterior.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Error en simulación de ATmega16 :S
« Respuesta #12 en: 01 de Marzo de 2008, 13:06:59 »
¿Es el AVR Studio 4.13 SP2 la versión que tienes?

Haber si lo puedo compilar.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado The_Chosen

  • PIC12
  • **
  • Mensajes: 51
Re: Error en simulación de ATmega16 :S
« Respuesta #13 en: 01 de Marzo de 2008, 13:13:23 »
¿Es el AVR Studio 4.13 SP2 la versión que tienes?

Haber si lo puedo compilar.

Exacto, versión 4.13 SP2 build 571.


Desconectado The_Chosen

  • PIC12
  • **
  • Mensajes: 51
Re: Error en simulación de ATmega16 :S
« Respuesta #14 en: 01 de Marzo de 2008, 14:54:20 »
¿Es el AVR Studio 4.13 SP2 la versión que tienes?

Haber si lo puedo compilar.

Exacto, versión 4.13 SP2 build 571.



No hay caso, siempre el mismo error :

D:\Inicioatmel\datalogger\default/../datalogger.c:19: undefined reference to `lcd_init'
D:\Inicioatmel\datalogger\default/../datalogger.c:24: undefined reference to `lcd_clrscr'
D:\Inicioatmel\datalogger\default/../datalogger.c:27: undefined reference to `lcd_puts'
D:\Inicioatmel\datalogger\default/../datalogger.c:33: undefined reference to `lcd_gotoxy'

:S Realmente no entiendo que pasa


 

anything