Witam,
Mam pewne pytanie, bawię się z podłączonym LCD 2x16 oczywiście HD44780, biblioteka radzia.
Wyświetlam zmienną int(16 bit), konwertowaną na string za pomocą funkcji itoa. Opis itoa
W przypadku zmiennej signed -32768 ... 32767 , dodając w nieskończoność na wyświetlaczu otrzymuję te rezultaty.
Jednak przy zmiennej unsigned int gdzie powinno być 0 ... 65535, nadal na wyświetlaczu otrzymuje wartości od -32768 do 32767.
Czym to jest spowodowane? Jakieś ograniczenie funkcji itoa?
Zauważyłem że przy zmiennej 8 bitowej int8_t oraz uint8_t nie ma tego problemu i kolejno liczy od -127 do 127 a be znaku od 0 do 255.
Mam pewne pytanie, bawię się z podłączonym LCD 2x16 oczywiście HD44780, biblioteka radzia.
Wyświetlam zmienną int(16 bit), konwertowaną na string za pomocą funkcji itoa. Opis itoa
W przypadku zmiennej signed -32768 ... 32767 , dodając w nieskończoność na wyświetlaczu otrzymuję te rezultaty.
Jednak przy zmiennej unsigned int gdzie powinno być 0 ... 65535, nadal na wyświetlaczu otrzymuje wartości od -32768 do 32767.
Czym to jest spowodowane? Jakieś ograniczenie funkcji itoa?
Zauważyłem że przy zmiennej 8 bitowej int8_t oraz uint8_t nie ma tego problemu i kolejno liczy od -127 do 127 a be znaku od 0 do 255.
#define F_CPU 1000000UL // taktowenie wewnetrznym MHz
#include <avr/io.h>
#include <util/delay.h>
#include <hd44780.c>
#include <stdlib.h>
#include <inttypes.h>
#include <avr/sfr_defs.h>
#include <avr/interrupt.h>
#include <math.h>
uint16_t i =0;
int main (void)
{
char t[30];
LCD_Initalize();
LCD_Clear();
while(1)
{
itoa(i,t,10);
LCD_GoTo(0,0);
LCD_WriteText(t);
i=i+10;
}
}