Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola, estoy haciendo pruebas con un ATmega644 y comunicación serie. Tengo un programita que envía "HOLA" por el puerto serie y lo único que recibo son caracteres raros (sólo cuadraditos).
Utilizo AVR Studio 4 para compilar y cargar el programa en el micro.
¿Alguien tiene alguna idea de lo que puede estar pasando?
Gracias!
Os dejo el programita:
/**************************************************
UART_Test
************************************************/
#define F_CPU 16000000UL
#include <avr>
#include <util>
void USART_Init();
void USART_Transmit( unsigned char );
unsigned char USART_Receive( void );
int main(void)
{
USART_Init();
for(;;)
{
USART_Transmit('H');
USART_Transmit('O');
USART_Transmit('L');
USART_Transmit('A');
USART_Transmit('n');
USART_Transmit('r');
_delay_ms(25);
_delay_ms(25);
}
}
/***********************************************
Functions from UART_Test
***************************************************/
void USART_Init(){
/*
19200 baudios
cristal de 16 MHz
UBRR = 16^7/(16*9600) - 1
UBRR = 16000000/(16*19200)-1
UBRR = 16000000/307200-1
UBRR = 52.083-1
UBRR = 51.083
*/
//registro UBRRL
UBRR0H = 0;
UBRR0L = 51;
/* Enable receiver and transmitter */
UCSR0B = (1<<RXEN0)|(1<<TXEN0);
/* Set frame format: 8data, 2stop bit */
UCSR0C = (1<<USBS0)|(3<<UCSZ00);
}
void USART_Transmit( unsigned char data ){
/* Wait for empty transmit buffer */
while ( !( UCSR0A & (1<<UDRE0)) );
/* Put data into buffer, sends the data */
UDR0 = data;
}
unsigned char USART_Receive( void ){
/* Wait for data to be received */
while ( !(UCSR0A & (1<<RXC0)) );
/* Get and return received data from buffer */
return UDR0;
}
Bueno, tengo la opinión de que lo que ha pasado es que la débil señal del reloj del que funciona se ha acoplado a la entrada del que no funciona. Y eso le ha bastado para que la circuitería interior permitiese funcionar al que no iba.
Por cierto, aunque no he usado nunca el Arduino (del que he oído hablar muy bien, por cierto), recuerda que el WinAVR es totalmente gratuito y se integra en el AVRStudio. Tengo entendido que conociendo el Arduino, aprender C es sencillo, así que te animo a hacerlo, y además usar programas no pirateados ni hackeados. Además, C es el lenguaje más demandado en los trabajos donde se usan microcontroladores.
Que te diviertas con el 'pepino', que es uno de los AVR's más demandados. Por cierto, ¿donde lo has comprado? ¿Usas la versión en DIP?
Bueno, tengo la opinión de que lo que ha pasado es que la débil señal del reloj del que funciona se ha acoplado a la entrada del que no funciona. Y eso le ha bastado para que la circuitería interior permitiese funcionar al que no iba.
Por cierto, aunque no he usado nunca el Arduino (del que he oído hablar muy bien, por cierto), recuerda que el WinAVR es totalmente gratuito y se integra en el AVRStudio. Tengo entendido que conociendo el Arduino, aprender C es sencillo, así que te animo a hacerlo, y además usar programas no pirateados ni hackeados. Además, C es el lenguaje más demandado en los trabajos donde se usan microcontroladores.
Que te diviertas con el 'pepino', que es uno de los AVR's más demandados. Por cierto, ¿donde lo has comprado? ¿Usas la versión en DIP?
No sé si lo sabes pero Arduino es una plataforma de Hardware Open Source bajo licencia Creatrive Commons. Para adaptar el software a otros micros avr de Atmel además de los Atmega8, Atmega8L y Atmega168 sólo hay que modificar algunos archivos C que vienen al descargar el sofware (la descarga es gratuita).
Creo que he hecho un mal uso de la palabra "hackear" ya que existe una diferencia, además no hago uso comercial del sofware ni creo que cometa ninguna ilegalidad. El éxito y crecimiento de esta plataforma se debe en parte a las colaboraciones altruistas de mucha gente.
Los ATmega644(DIP) los compré por ebay a un distribuidor alemán a 5,50€ cada uno.
Saludos y gracias nuevamente.
No sabía que Arduino fuese Open Source, aunque sí que sabía que las placas sí que son más o menos 'free', al igual que el programa propiamente dicho. Mejor.
Lo que sí se es que tienen soporte en castellano. A ver si se promocionan más en este país, ya que los AVR son muy desconocidos por falta de soporte en nuestro idioma. Así que su iniciativa es bienvenida.
Miraré a ver que puedo aprender de este programa de desarrollo. Gracias por la información.
Por cierto, a ver si para la semana que viene puedo acabar de una vez por todas la placa evaluadora de AVR's en DIP, que daría soporte a los ATmega644 y demás 'pin compatible'.
Gracias por la información, y perdona el mal entendido. Que te diviertas.