Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola!!
He escrito un programilla de prueba que lo único que hace es enviar constantemente un byte por el puerto USART0 de un Atmega1284P.
Os copio el código para que me digáis qué es lo que falta o esta mal; es el primer programa que hago con AVR GCC y no sé si se me está pasando algo.#include <avr/io.h>
int main(void)
{
/ Activamos funciones USART 0 /
//UBRR a 51 (UBRRL a 33 hex) para Bitrate a 9600 y Clock de 8MHz
UBRR0H = (unsigned char)0;
UBRR0L = (unsigned char)51;
//Activamos recepcion y emision
UCSR0B = (1<<RXEN0)|(1<<TXEN0);
/* frame format: 8data, 1 stop bit */
UCSR0C = (3<<UCSZ00);
while(1)
{
while ( !( UCSR0A & (1<<UDRE0)) );
UDR0 = 200;
}
}
Como info adicional, los Fuses del micro para programar el reloj están como por defecto y con el CKDIV8 a 0, lo que supongo que es a 8MHZ, ¿cierto? Es decir, Oscilador RC interno, startup 6CK + 65 ms
Gracias!!!
Para depurar, y si lo pagas de tu bolsillo, te recomiendo el AVRDragon, que es el que me compré yo al final. Te sirver para casi todo: programar por ISP, depurar por JTAG y DebugWire, programación paralela para casos de emergencia, etc. Es decir, es un AVRISP con muchas más cosas, y a buen precio. Hoy por hoy no te recomiendo que te gastes el dinero en un JTAGICE de 300€ si no vas a hacer un uso profesional o va a ser estrictamente necesario.
Lo más 'negativo' que tiene el Dragon en frente del JTAGICE, JTAGONE y otras herramientas, es que no tiene el nuevo PDI para depurar Xmegas. Pero éstos tienen JTAG, así que puedes depurar igualmente en el circuito con las mismas limitaciones que había antes del PDI: cuatro pines, generalmente del puerto del ADC, dedicados al JTAG en lugar de a sus funciones.
Para el resto, tene un AVRISP siempre es interesante, por si las moscas. De cualquier manera, la depuración y la programación siempre las he hecho en la misma placa, y con el micro elegido, sólo es cuestión de dejar libres los pines que necesites para el ISP y/o el JTAG, con alguna manera de acceder a dichos pines, generalmente por un conector. Aunque hay un conector de 10 pines 'estándar' para el JTAG, al final yo dejé de usarlo y acabé haciendo un 'conector' de la manera más provechosa para el rutado de la PCB, y aplicando luego un adaptador (de hecho, un mazo de cables).
Si quieres más información, el AVRStudio en la sección de ayuda tiene mucha, y en ella podrás encontrar los pines y conectores habituales, así como los esquemas usuales de cableado de todas las herramientas de programación y depuración.
Lo bueno del JTAG y el AVRStudio es que es muy fácil y práctico el control y la configuración de los periféricos del micro. Muy visual y sencillo. Aunque al final el programa lo depuraba con el IAR, siempre empezaba los proyectos desde el AVRStudio, y escribía un 'driver.c' + 'driver.h' con todo el código de configuración de los periféricos, depurado desde el AVRStudio. Una vez hecho esto, lo pasaba al IAR, mejor para depurar programa propiamente dicho, pero peor para la parte de hardware/periféricos/drivers/bajo nivel.