Witam, właśnie udało mi się uruchomić LCD od Nokii 3310, i teraz zaczynam wyświetlać na tym LCD kolejne C-stringi. Jednak mam pewien problem z funkcją sprintf, którą używam do tego żeby sformatować np. liczbę typu int na C-string, który będę mógł wysłać do LCD, poprzez odpowiednią funkcję.
Programik, który teraz piszę, ma kolejno w pętli wyświetlać indeks pętli "i". Jednak natrafiłem na taki problem, że jak umieszczę w pętli funkcję sprintf to nie chce działać ;/
Dla przykładu, żeby zobaczyć co jest nie halo, zdeklarowałem dodatkową zmienną liczba. I teraz jak wywołam funkcję sprintf przed pętlą, to w pętli napis się ładnie pokazuje w kolejnych liniach, ale jak już funkcję sprintf wrzucę do pętli to wtedy jest kaszanka. Ma ktoś może pomysł co robię źle?, pozdrawiam serdecznie Krzysiek
Dodano po 1 [godziny] 19 [minuty]:
Witam, problem rozwiązany, w uC kończyła się po prostu pamięć, przytoczę log kompilatora.
Przy zmianie warunku w pętli na i < 2, na wyświetlaczu pojawił się wyniki, pozdrawiam serdecznie Krzysiek ;]
Programik, który teraz piszę, ma kolejno w pętli wyświetlać indeks pętli "i". Jednak natrafiłem na taki problem, że jak umieszczę w pętli funkcję sprintf to nie chce działać ;/
Dla przykładu, żeby zobaczyć co jest nie halo, zdeklarowałem dodatkową zmienną liczba. I teraz jak wywołam funkcję sprintf przed pętlą, to w pętli napis się ładnie pokazuje w kolejnych liniach, ale jak już funkcję sprintf wrzucę do pętli to wtedy jest kaszanka. Ma ktoś może pomysł co robię źle?, pozdrawiam serdecznie Krzysiek
//------------------------------------------------------------------
//
// LCD_Nokia_WinAVR
//
//------------------------------------------------------------------
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
#include "NokiaLCD_Lib.c"
int main(void)
{
int liczba = 123;
unsigned char i, j;
char tablica[10];
LcdInit();
LcdClear();
sprintf(tablica, "%d", liczba); // ---->>>> Jezeli tutaj wstawię sprintf to w pętli na LCD w kolejnych liniach pokazuje się
// tekst '124'
while(1)
{
for(i = 1; i < 7; i++)
{
//sprintf(tablica, "%d", liczba); // Natomiast jeżeli wykomentuje funkcje wyzej i wstawie ja tutaj to na LCD nic
// sie nie pojawia, czemu???!!!
LcdClear();
LcdGotoXY(1, i);
LcdStr(1, tablica);
LcdUpdate();
for( j = 0; j < 10; j++)
{
_delay_ms (30);
}
}
}
while(1);
}
Dodano po 1 [godziny] 19 [minuty]:
Witam, problem rozwiązany, w uC kończyła się po prostu pamięć, przytoczę log kompilatora.
Size after:
AVR Memory Usage
----------------
Device: atmega8
Program: 3824 bytes (46.7% Full)
(.text + .data + .bootloader)
Data: 991 bytes (96.8% Full)
(.data + .bss + .noinit)
-------- end --------
Przy zmianie warunku w pętli na i < 2, na wyświetlaczu pojawił się wyniki, pozdrawiam serdecznie Krzysiek ;]
