TODOPIC
Otros Microcontroladores / Dispositivos programables => Microcontroladores 8 bits => Mensaje iniciado por: stk500 en 18 de Diciembre de 2009, 11:01:58
-
Hola amigos!
Estoy aprendiendo a programar en C con el compilador winAVR, despues de hacer Test con los puertos y encendiendo led y usando pulsadores hata ahi muy bien, ahora quiero hacer una comunicacion UART con la pc y el Atmega16, pero al compilar el codigo me tira un erroro que desconoco, quizas alguein por aqui me echa una mano.
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
#ifndef F_CPU
#define F_CPU 1000000
#endif
//set desired baud rate
#define BAUDRATE 9600
//calculate UBRR value
#define UBRRVAL ((F_CPU/(BAUDRATE*16UL))-1)
char n, //number numero
c; // mostramo el estado en pantalla
int main(void)
{
//ponemnos el Baud rate
UBRRL=UBRRVAL; //valor de Bytes bajos
UBRRH=(UBRRVAL>>8); //valor de Bytes altos
//ponemos el formatos de los Frame: asynchronous mode,no parity, 1 stop bit, 8 bit size poner tipo de formato de Dato
UCSRC=(1<<URSEL)|(0<<UMSEL)|(0<<UPM1)|(0<<UPM0)|
(0<<USBS)|(0<<UCSZ2)|(1<<UCSZ1)|(1<<UCSZ0);
// activamos transmisor y receptor
UCSRB=(1<<RXEN)|(1<<TXEN);
DDRA=0x00; //all A port pins as input todos los puertos A como entrada
PORTA=0xFF; //Enable internal Pull-Up resistors activamos la pull up interna
DDRB=0xFF; //All B port pins as output todos puertos B como salida
while(1)
{
c=1; //start with first LED iniciamos el primer led
while(PINA==0xFF) // esperamos para presionar
{
if (c==0) c=1; //if light passed all leds start over
PORTB=~c; //LED on
_delay_ms(100);//short delay
n++; // incrementamos el valor del numero
c=c<<1; //desplazamos los led
}
//esperamos por el vaciado del buffer de transmision
while (!(UCSRA&(1<<UDRE))){};
UDR=n; // enviamos el numero a la UART
PORTB=~n; //y mostramos el numero con led en (binary)
_delay_ms(200); // , delay largo
PORTB=0xFF; // apagamos todos los LED
}
return 0;
}
-
Puedes poner el código de error que te da, yo lo he compilado con el avr-gcc que viene con Ubuntu 8.10 y sólo me da este warning
In file included from main.c:3:
/usr/lib/gcc/avr/4.3.0/../../../../avr/include/util/delay.h:85:3: warning: #warning "F_CPU not defined for <util/delay.h>"
Y poniendo el #include <util/delay.h> después de
#ifndef F_CPU
#define F_CPU 1000000
#endif
se soluciona.
Saludos,
Miguel Ángel.
-
muchas gracia ma4826
lo que no comprendo es que lo estaba compilando con la Build666 version 4,17 y me daba error, ahora la compiler en mi Portatil que tengo la Build 638 Version 4,16, con esta ultima solo me da un Warnung(un aviso) como tu dice.
ahora lo voy a intentarlo simularlo con el Proteus.
Muchas una vez mas.
Saludos
-
Hola a todos, necesito utilizar algunas librerias que me baje, AVRlib, donde viene algunas librerias muy interesantes, sin embargo no se donde copiar los archivos .h para utilizarlos, si alguien me puede dar luces con este problemita, gracias>.........
-
pues la bajaste mal, ya que viene con un instalador, debe leer alli donde te la bajaste os me dice donde la bajaste para asi poder ayudarte.
Saludos