Nigdy nie korzystałem z tej funkcji a teraz zaszła taka potrzeba i pojawił sie problem.
Mianowicie program nie wysyła tekstu powyżej jednej litery przez uarta.
Za to jesli wysyłam tylko jedną, jest transmitowana bez problemu.
Kod: Zaznacz cały
int uart_putc (char c);
int uart_getc (void);
#include <avr/io.h>
#include <string.h>
#include <stdio.h>
int main(void)
{
UCSRA=0x00;
UCSRB|=(1<<TXEN);
UCSRC|=(1<<UMSEL)|(1<<UCSZ1)|(1<<UCSZ0);
UBRRH=0x00;
UBRRL=103;
fdevopen(uart_putc, uart_getc);
while(1){
printf("xxxx");
}}
//---------------------
int uart_putc(char c)
{
loop_until_bit_is_set(UCSRA, UDRE);
UDR = c;
return 0;
}
int uart_getc(void)
{
if (bit_is_set(UCSRA, RXC) == 0)
return -1;
return UDR;
}
[ Dodano: 2007-12-07, 13:53 ]
Problem rozwiązany okazało sie, że program zajmuje więcej ramu niż procek posiada. Co objawiało sie takim dziwnym zachowaniem.
Teraz z kolei mam inne pytanie co dopisać do makefile by po skompilowaniu podawany był rozmiar w % zajętej pamięci procesora?