logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

AVR Studio + RKlibAVR = Jak to uruchomić?

Citek 05 Sty 2009 20:43 2814 3
REKLAMA
  • #1 5955521
    Citek
    Poziom 22  
    Witam
    Próbuję uruchomić program do uart-a z biblioteki RKlibAVR, niestety coś mi nie wychodzi. Po prostu już nie wiem gdzie mam wrzucić potrzebne pliki. Na razie powrzucałem ja wszędzie gdzie się dało, niestety bez rezultatów (no, nie licząc tego, że teraz dostaję tylko 1 błąd i 2 ostrzeżenia zamiast 30:)).
    Poniżej zamieszczam PS tego co otrzymałem.
    Jeżeli ktoś by mógł, to proszę wytłumaczyć mi łopatologicznie jak i co zrobić po kolei

    Aha.
    Program WinAVR znajduje się w katalogu:
    C:\WinAVR-20080610
    Program, który piszę (nazwa programu: portszeregowy2) znajduje się w:
    D:\AVR\code\portszeregowy2
  • REKLAMA
  • #2 5955733
    dawid512
    Poziom 32  
    Biblioteki dołącza się w ustawieniach projektu czyli: project>configuration options>include directories.

    Po za tym pokaż kod bo nikt nie będzie wróżył.
  • REKLAMA
  • #3 5959288
    Citek
    Poziom 22  
    Kod programu jest wzięty, z katalogu przyklad/uart dołączonego razem z bibliotekami.
    Oto jego kod
    /*--------------------------------------------------------------------- */
    /*	Demo biblioteki UART						*/
    /*	Autor: Robert Krysztof						*/
    /* 	WWW:	http://www.8051.prv.pl 					*/
    /*	E-mail: robert.krysztof@wp.pl					*/
    /*--------------------------------------------------------------------- */
    
    #include <avr/io.h>
    #include <avr/pgmspace.h>
    #include <stdlib.h>
    #include "uart.h"
    
    /*--------------------------------------------------------------------- */
    /*			Deklaracje tablic i zmiennych			*/
    /*--------------------------------------------------------------------- */
    
    prog_char ANSI_NEWLINE[] = {'\n','\r',0}; 
    	// tablica zawiarająca znaki nowej linii
    prog_char ANSI_CLEAR[] = {27,'[','H',27,'[','2','J',0};
    	// j.w. ale czyszczącza ekran terminala
    
    char text_E[] __attribute__((section(".eeprom"))) = "Tekst z pamięci EEPROM";
    
    char text_P[] __attribute__((section(".progmem"))) = "Tekst z pamięci FLASH";
    
    /*--------------------------------------------------------------------- */
    /*		  Definicje stalych i makroinstrukcji			*/
    /*--------------------------------------------------------------------- */
    
    #define PRINT(p)	UART_putstr_P(PSTR(p))
    #define CLEAR()		UART_putstr_P(ANSI_CLEAR)
    #define NEWLINE()	UART_putstr_P(ANSI_NEWLINE)
    
    /*--------------------------------------------------------------------- */
    /* ----------------		Program glowny 	    ------------------- */
    /*--------------------------------------------------------------------- */
    
    int main(void)
    {            
      char c;			// bufor na znak
      char s[UART_MAX_GETSTR+1];	// bufor na łańcuch znaków
      s16 liczba=0x5555;		// liczba do testowania
      UART_init();			// inicjalizacja portu szeregowego
                
      PRINT("Test biblioteki UART .....\n\r");
      while(1)
      { 
        CLEAR();
        PRINT("Testowanie funkcji UART_putstr_P() i UART_putstr_E()");
        NEWLINE();
        UART_putstr_P(text_P);
        NEWLINE();
        UART_putstr_E(text_E);
        NEWLINE();
    
        NEWLINE();
        PRINT("Testowanie funkcji UART_putint()");
        NEWLINE();
        PRINT("Dwójkowo: ");
        UART_putint(liczba,2);
        NEWLINE();
        PRINT("Ósemkowo: ");
        UART_putint(liczba,8);
        NEWLINE();
        PRINT("Dziesiętnie: ");
        UART_putint(liczba,10);
        NEWLINE();
        PRINT("Szesnaskowo: ");
        UART_putint(liczba,16);
        NEWLINE();
    /*
        NEWLINE();
        PRINT("Testowanie funkcji UART_getchar() i UART_putchar()");
        NEWLINE();
        PRINT("Wyślij cokolwiek z terminala, znak \"t\" kończy...");
        NEWLINE();
        do
        {
          c=UART_getchar();		// pobierz znak z wejscia
          UART_putchar(c);		// zrób echo
        }
        while (c != 't');		// aż nie napotkasz znaku "t"
        NEWLINE();
    */
        PRINT("Testowanie funkcji UART_getstr() i UART_putstr()");
        NEWLINE();
        PRINT("Wyślij cokolwiek z terminala i naciśnij ENTER");
        NEWLINE();
        PRINT("...napis \"koniec\" kończy...");
        NEWLINE();
        do
        {
          UART_getstr(s);		// pobierz tekst z wejscia
          UART_putstr(s);		// zrób echo
          NEWLINE();
        }
        while (strncmp_P(s,PSTR("koniec"),6)!=0);	// aż nie napotkasz "koniec"
      }
    }
    
    /*--------------------------------------------------------------------- */
    /*			Koniec programu					*/
    /*--------------------------------------------------------------------- */
    


    Po zrobieniu tak jak mówisz, nic się nie dzieje, dopiero jak dodam poprzez prawy przycisk Nowe obiekty do Source Files oraz do Header Files wracam do punktu wyjścia

    Dodano po 1 [minuty]:

    Aha, przy tworzeniu nowego projektu wybieram procek ATMega8

    Dodano po 2 [godziny] 36 [minuty]:

    Udało mi się skompilować program, ale nadal otrzymuję dwa ostrzeżenia
    ../testRX.c:53: warning: pointer targets in passing argument 1 of 'UART_putstr_E' differ in signedness
    ../testRX.c:40: warning: unused variable 'c'
  • #4 7383421
    sqvarek
    Poziom 2  
    kurde, czy ktos wie jak ta biblioteke wykorzystac pod AVR Studio? dolaczam wszystkie potrzebne zrodla, naglowki , external dependenciesa pod koniec i tak wyskakauja bledy:

    ../biblioteki/rklibavr/delay/delayms.c:3: error: expected declaration specifiers or '...' before '(' token
    ../biblioteki/rklibavr/delay/delayms.c: In function 'delayloop32':
    ../biblioteki/rklibavr/delay/delayms.c:4: error: number of arguments doesn't match prototype
    ../biblioteki/rklibavr/delay/../delay.h:48: error: prototype declaration
    ../biblioteki/rklibavr/delay/delayms.c:5: warning: implicit declaration of function '_delay_ms'
    ../biblioteki/rklibavr/delay/delayms.c:5: error: 'count' undeclared (first use in this function)
    ../biblioteki/rklibavr/delay/delayms.c:5: error: (Each undeclared identifier is reported only once
    ../biblioteki/rklibavr/delay/delayms.c:5: error: for each function it appears in.)
    make: *** [delayms.o] Error 1
    Build failed with 6 errors and 4 warnings...


    czy ktos sobie z tym poradzil? widzialem mnostwo watkow na forum odnosnie tej biblioteki, caly czas ktos ma z nia problemy..
REKLAMA