Witam.
Mam problem, zdaje się, że dość prosty. Odbieram zmienną poprzez UART i ją odbijam z powrotem na terminal, co odbywa się w przerwaniu. Tą samą zmienną wysyłam na LCD. Zamiast otrzymać liczbę dostaje jej kod ASCII. Wolałbym liczbę, którą wpisałem z klawiatury. Ale zdaje się, że do UDR zapisywana jest ona w postaci kodu ASCII właśnie, tzn np zamiast 1 mam 49. Jak to przekonwertować??
Oto kod programu:
Dodam że wszystko działa należycie, LCD i UART. Funkcje i procedury to taki "Frankenstein" z bibliotek dostępnych w internecie. W razie wątpliwości udostępnie ich kod.
PS. zmiana volatile int Temp; na volatile char Temp; nic nie daje. Zamieszczony kod jest "eksperymentalny".. ale już za długo nie działa więc proszę o pomoc.
Mam problem, zdaje się, że dość prosty. Odbieram zmienną poprzez UART i ją odbijam z powrotem na terminal, co odbywa się w przerwaniu. Tą samą zmienną wysyłam na LCD. Zamiast otrzymać liczbę dostaje jej kod ASCII. Wolałbym liczbę, którą wpisałem z klawiatury. Ale zdaje się, że do UDR zapisywana jest ona w postaci kodu ASCII właśnie, tzn np zamiast 1 mam 49. Jak to przekonwertować??
Oto kod programu:
#include "konfig.h"
volatile int Temp;
ISR(USART_RXC_vect)
{
Temp=0;
Temp=UDR;
if (Temp==49)
{
UDR=Temp; //echo tego co wysyla
}
}
int main(void)
{
DDRA = 0xFF; //K**wa ważne!!!
UART_Init(); //inicjalizacja UART-u
lcd_init(); //Initializacja LCD
char bufor[10];
int liczba;
NEWLINE();
UART_putstr("TESTUJE TYPY");
NEWLINE();
while(1)
{
itoa(Temp, bufor,10);
lcd_xy(0,7);
write_text(bufor);
lcd_xy(1,7);
write_text(Temp);
}
}
Dodam że wszystko działa należycie, LCD i UART. Funkcje i procedury to taki "Frankenstein" z bibliotek dostępnych w internecie. W razie wątpliwości udostępnie ich kod.
PS. zmiana volatile int Temp; na volatile char Temp; nic nie daje. Zamieszczony kod jest "eksperymentalny".. ale już za długo nie działa więc proszę o pomoc.