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'