Nie działa mi funkcja "printf".

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
nasiono
-
Posty: 46
Rejestracja: 29 lip 2005, 0:01

Nie działa mi funkcja "printf".

Post autor: nasiono » 03 gru 2007, 22:06

Witam.
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; 
} 
Patrzyłem na programy jnnych ludzi i im to działa. W kursie EDW programowania avr w C też stosują tą funkcje w ten sposób. I tylko mnie z jakiś powodów nie działa. Czy mógł by mi ktoś pomóc.

[ 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?

ODPOWIEDZ