TODOPIC
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
23 de Abril de 2014, 11:32:25

Ingresar con nombre de usuario, contraseña y duración de la sesión
Buscar:     Búsqueda Avanzada
342694 Mensajes en 38372 Temas por 39734 Usuarios
Último usuario: cienfuss
* Inicio Ayuda Buscar Calendario Ingresar Registrarse
Buscar en TodoPIC
+  TODOPIC
|-+  Otros microcontroladores/dispositivos programables
| |-+  ATMEL (Moderador: stk500)
| | |-+  Error en simulación de ATmega16 :S
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Marcar como favorito Imprimir
Autor Tema: Error en simulación de ATmega16 :S  (Leído 3992 veces)
The_Chosen
PIC12
**
Desconectado Desconectado

Mensajes: 51


« : 28 de Febrero de 2008, 11: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  lol 
 


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);
         
      }

}

}


En línea
migsantiago
Colaborador
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 7951



WWW
« Respuesta #1 : 28 de Febrero de 2008, 12: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.
En línea

The_Chosen
PIC12
**
Desconectado Desconectado

Mensajes: 51


« Respuesta #2 : 28 de Febrero de 2008, 14: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 Razz
En línea
MiCrOtRoNiC
PIC18
****
Desconectado Desconectado

Sexo: Masculino
Venezuela Venezuela

Mensajes: 271



« Respuesta #3 : 28 de Febrero de 2008, 16: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, 16:06:27 por MiCrOtRoNiC » En línea
The_Chosen
PIC12
**
Desconectado Desconectado

Mensajes: 51


« Respuesta #4 : 01 de Marzo de 2008, 01: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 ? : Confused
En línea
stk500
Moderador Local
DsPIC30
*****
Desconectado Desconectado

Sexo: Masculino
Alemania Alemania

Mensajes: 3926



« Respuesta #5 : 01 de Marzo de 2008, 01: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
En línea

Mis Programadores Favoritos
STK500
STK300
ARDUINO
ICD2
EASYPIC2
PIC18F2550Trainer
jfh900
Moderadores
DsPIC30
*****
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 3551



« Respuesta #6 : 01 de Marzo de 2008, 06:15:18 »

Cambia el include a:

#include "patch/lcd.h"

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

Un saludo
En línea

* 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
The_Chosen
PIC12
**
Desconectado Desconectado

Mensajes: 51


« Respuesta #7 : 01 de Marzo de 2008, 10: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 ?
En línea
jfh900
Moderadores
DsPIC30
*****
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 3551



« Respuesta #8 : 01 de Marzo de 2008, 10: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, 10:59:42 por jfh900 » En línea

* 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
The_Chosen
PIC12
**
Desconectado Desconectado

Mensajes: 51


« Respuesta #9 : 01 de Marzo de 2008, 11: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



En línea
jfh900
Moderadores
DsPIC30
*****
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 3551



« Respuesta #10 : 01 de Marzo de 2008, 11:49:41 »

¿Que compilador utilizas?

Un saludo
En línea

* 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
The_Chosen
PIC12
**
Desconectado Desconectado

Mensajes: 51


« Respuesta #11 : 01 de Marzo de 2008, 11: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é Razz ):

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

que está más actualizada y es la que adjunté al post anterior.
En línea
jfh900
Moderadores
DsPIC30
*****
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 3551



« Respuesta #12 : 01 de Marzo de 2008, 12:06:59 »

¿Es el AVR Studio 4.13 SP2 la versión que tienes?

Haber si lo puedo compilar.
En línea

* 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
The_Chosen
PIC12
**
Desconectado Desconectado

Mensajes: 51


« Respuesta #13 : 01 de Marzo de 2008, 12: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.

En línea
The_Chosen
PIC12
**
Desconectado Desconectado

Mensajes: 51


« Respuesta #14 : 01 de Marzo de 2008, 13: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
En línea
Belgitaes
Colaborador
PIC16
*****
Desconectado Desconectado

Mensajes: 182


« Respuesta #15 : 01 de Marzo de 2008, 13:55:07 »

Bueno no se si le servira eso a alguien
aqui dejo un muy simple ejercicio que e hecho
Prender Un Led Pulsando Un Botton Con Atmega8
Lo e hecho Con El AvrStudio y simulado con proteus
para ver si efectivamente funcionna

lo e subido a un rapidshare
http://rapidshare.com/files/96212616/Prender_Un_Led_Pulsando_Un_Botton_Con_Atmega8.zip.html

Código:
;.................................................
; Prender Un Led Pulsando Un Botton
;-------------------------------------------------------
; Declaraciones estandar para este micro Atmega8:
.include "m8def.inc" 
;-------------------------------------------------------
; Definicion de constantes y variables
; ------------------------------------------------------
; Pila
  .equ          PILA                   =0x0FF
;-----------------------------------------------------           
.DSEG       
; MEMORIA RAM       
    .ORG                (PILA+1)
;----------------------------------------------------
;            Vectores de interrupcion
;----------------------------------------------------           
.CSEG       
    .ORG     0x0000         
rjmp        RESET                        ; RESET
; --------------------------------------------------------
;                       RUTINA DE RESET
; --------------------------------------------------------
RESET:  cli
        ldi        r16,HIGH ( PILA )         
out        SPH,r16         
ldi        r16,LOW (PILA )                         
out        SPL,r16         

;*******DESDE AQUÍ VUESTRO CODIGO*****

ldi     r18,0x01  ; carga  00000001  0= Entrada 1=Salida
out     DdrB,r18  ; r18 es enviado a DdrB (Configura Salida De Direcion Puerto.B) 
out     PortB,r18 ; r18 es enviado a PortB (Configura Salida Datos De Puerto.B)

rjmp stop

;****HASTA AQUÍ VUESTRO CODIGO********

STOP:        rjmp        STOP   ;FIN DEL PROGRAMA

En línea
The_Chosen
PIC12
**
Desconectado Desconectado

Mensajes: 51


« Respuesta #16 : 01 de Marzo de 2008, 20:46:37 »

Listo, solucioné el problema  Razz. Ya no tengo errores de compilación. Tenia que guardar el archivo lcd.c en el apartado "source files" del avrstudio lol, y colocar #include "d:/Inicioatmel/AVRlib/lcd.h"  lol

Lo malo que ahora me surgió otro problema, dos pines del puerto C no los puedo configurar como pin I/O, son los puertos PC6 y PC7. Según la hoja de datos tengo que poner a nivel bajo el bit AS2 del registro ASSR "Asynchronous Status Register" ASSR &= ~(1<<AS2), pero ni eso funciona   Confused
En línea
TODOPIC
   

 En línea
Páginas: [1] Imprimir 
« anterior próximo »
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines XHTML 1.0 válido! CSS válido!
Página creada en 0.063 segundos con 24 consultas.
anything