Problem s poliami bajtov / N5110 LCD (vyriesene)

Sekcia určená pre Arduino nadšencov

Moderátor: Moderátori

TomasNM
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1371
Dátum registrácie: 22 Jan 2012, 19:24
Bydlisko: Nové Mesto nad Váhom
Vek: 43

Problem s poliami bajtov / N5110 LCD (vyriesene)

Príspevok od používateľa TomasNM » 25 Sep 2017, 21:13

Zdravim pani.

Narazil som na haluzny problem,s ktorym si neviem rady.
Uz som skusal cely kod napisat nanovo,chvilu to behalo,potom to zasa zblblo.

Ide o to,ze obrazovky mi vykresli bez problemov,ale akonahle siahnem po data pre zobrazenie cisiel,v lepsom pripade LCD zobrazi blbosti,v horsom cele Arduino skolabuje.

Ak v loop-e cokolvek odREMujem,tak nastava kolaps.
Nedokazem si to vysvetlit.
Ma niekto napad,co to moze sposobovat?

Dakujem za pripadne rady.

Tu je moj kod:

Kód: Vybrať všetko

static const byte screens[]={
0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x0F,0x08,0x0E,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0E,0x08,0x0E,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0xA0,0xA0,0xA0,0xA0,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFE,0x01,0x00,0x00,0x00,0x00,0x01,0xFE,0x00,0xFF,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x70,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x80,0xFD,0x05,0x05,0x05,0x05,0x05,0x05,0xFD,0x80,0xFF,0x00,0x00,0x00,0xFF,
0xFF,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x91,0x91,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0xFF,
0xFF,0x80,0xBE,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xBE,0x9C,0x80,0x80,0xFF,0x80,0x80,0x88,0x88,0xAA,0x9C,0x88,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xA0,0x80,0x80,0x80,0x80,0x80,0x80,0xBE,0x92,0xBC,0x80,0x80,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xA6,0x96,0x88,0xB4,0xB2,0x80,0xFF,

0xFE,0x0A,0xEA,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0xCA,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0E,0x08,0x0F,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x0F,0x08,0x0E,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,
0xFF,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF,
0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xB8,0x88,0xB8,0x88,0xB0,0x80,0xA0,0xB8,0x88,0x80,0x80,0xFF,0x80,0x80,0x88,0x88,0xAA,0x9C,0x88,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xA0,0x80,0x80,0x80,0x80,0x80,0x80,0xBE,0x92,0xBC,0x80,0x80,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xA0,0x80,0x80,0x80,0x80,0x80,0x80,0xBE,0x92,0xBC,0x80,0xFF,

0xFE,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0E,0x08,0x0E,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0E,0x08,0x0F,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x80,0x88,0xBC,0xBE,0xBC,0x88,0x80,0x88,0x9E,0xBE,0x9E,0x88,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF,
0};
static const byte numbers[]={
0xF8,0xFC,0xFE,0xFF,0x1F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x1F,0xFF,0xFE,0xFC,0xF8,
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
0x1F,0x3F,0x7F,0xFF,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xFF,0x7F,0x3F,0x1F,

0x00,0x00,0x00,0x00,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,

0x78,0x7C,0x7E,0x7F,0x1F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x1F,0xFF,0xFE,0xFC,0xF8,
0xC0,0xE0,0xF0,0xF8,0xF8,0x78,0x78,0x78,0x78,0x78,0x78,0x7C,0x7F,0x3F,0x1F,0x0F,
0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,

0x78,0x7C,0x7E,0x7F,0x1F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x1F,0xFF,0xFF,0xFE,0xFC,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3C,0x3C,0x3C,0x7E,0xFF,0xFF,0xEF,0xC7,
0x1E,0x3E,0x7E,0xFE,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xFF,0x7F,0x3F,0x1F,

0x00,0x00,0x00,0x00,0x00,0xC0,0xF0,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,
0x00,0xC0,0xF0,0xFC,0xFF,0x3F,0x0F,0x03,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,

0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x1F,0xFF,0xFE,0xFC,0xF8,
0x1E,0x3E,0x7E,0xFE,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xFF,0x7F,0x3F,0x1F,

0xF8,0xFC,0xFE,0xFF,0x1F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x1F,0x7F,0x7E,0x7C,0x78,
0xFF,0xFF,0xFF,0xFF,0x3C,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x3E,0xFE,0xFE,0xFC,0xF8,
0x1F,0x3F,0x7F,0xFF,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xFF,0x7F,0x3F,0x1F,

0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xCF,0xFF,0xFF,0xFF,0x3F,0x0F,
0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xF0,0xFC,0xFF,0x3F,0x0F,0x03,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,

0xF8,0xFC,0xFE,0xFF,0x1F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x1F,0xFF,0xFE,0xFC,0xF8,
0xC3,0xE7,0xFF,0xFF,0x7E,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x7E,0xFF,0xFF,0xE7,0xC3,
0x1F,0x3F,0x7F,0xFF,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xFF,0x7F,0x3F,0x1F,

0xF8,0xFC,0xFE,0xFF,0x1F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x1F,0xFF,0xFE,0xFC,0xF8,
0x0F,0x1F,0x3F,0x7F,0x7C,0x78,0x78,0x78,0x78,0x78,0x78,0x3C,0xFF,0xFF,0xFF,0xFF,
0x1E,0x3E,0x7E,0xFE,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xFF,0x7F,0x3F,0x1F,

0};

#include <PCD8544.h>

#define LCD_COMMAND 0 
#define LCD_DATA  1

#define PIN_SCE   7 //Pin 3 on LCD
#define PIN_RESET 6 //Pin 4 on LCD
#define PIN_DC    5 //Pin 5 on LCD
#define PIN_SDIN  4 //Pin 6 on LCD
#define PIN_SCLK  3 //Pin 7 on LCD


// The dimensions of the LCD (in pixels)...
static const byte LCD_WIDTH = 84;
static const byte LCD_HEIGHT = 48;
static PCD8544 lcd;

int c;





void setup() {
  lcd.begin(LCD_WIDTH, LCD_HEIGHT);

  LCDWrite(LCD_COMMAND, 0x21); //Tell LCD that extended commands follow
  LCDWrite(LCD_COMMAND, 0xAA); //Set LCD Vop (Contrast): Try 0xB1(good @ 3.3V) or 0xBF if your display is too dark
  LCDWrite(LCD_COMMAND, 0x04); //Set Temp coefficent
  LCDWrite(LCD_COMMAND, 0x15); //LCD bias mode 1:48: Try 0x13 or 0x14
  LCDWrite(LCD_COMMAND, 0x20); //We must send 0x20 before modifying the display control mode
  LCDWrite(LCD_COMMAND, 0x0C); //Set display control, 0x0C normal mode. 0x0D for inverse

  screen(1);

}

void loop() {

//  drawBigNumber(4 ,c);
//  drawBigNumber(22,c);
//  drawBigNumber(46,c);
//  LCDWrite(LCD_DATA,numbers[c]);
  c++;if(c==10)c=0;
  delay(1000);
}





void LCDWrite(byte data_or_command, byte data) {
  digitalWrite(PIN_DC, data_or_command); //Tell the LCD that we are writing either to data or a command
  //Send the data
  digitalWrite(PIN_SCE, LOW);
  shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);
  digitalWrite(PIN_SCE, HIGH);
}
void gotoXY(int x, int y) {
  LCDWrite(0, 0x80 | x);  // Column.
  LCDWrite(0, 0x40 | y);  // Row.  ?
}





void screen(int scr) {
  gotoXY(0,0);
  for(int i=0;i<504;i++) { LCDWrite(LCD_DATA,screens[i+504*scr]);
  }
}  

void drawBigNumber(int pos, int num)
{
  for(int j=0;j<3;j++) { gotoXY(pos,j+1);
    for(int i=0;i<16;i++) {
    LCDWrite(LCD_DATA,numbers[i+(j*16)+(48*num)]);
  }}
}
0
Naposledy upravil/-a TomasNM v 27 Sep 2017, 08:08, upravené celkom 1 krát.

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: Problem s poliami bytov / N5110 LCD

Príspevok od používateľa peterple » 25 Sep 2017, 21:45

Aký procesor? Koľko má ramky?
Samozrejme že mám predstavu čo sa deje.
Čistá tragédia dávať takéto polia do ramky. Stretli sa ti data so zasobníkom a je mazec.
Toto nie je PC kde je 8G Ram predpokladám že máš tak 2kiBy. Spočítaj si koľko tie tvoje polia zaberajú. Kde máš miesto na zásobník?

Konštantne data sa strkajú do pamäte programu, tá je nepomerne väčšia.
http://www.nongnu.org/avr-libc/user-man ... space.html

Na MCU je RAMka vzácna ako soľ. Nemôže sa s ňou narabať ako s uhlím.

Čo sa deje ti určite vysvetlia kolegovia Arduinisti. A ako to riešia arduinisti neviem.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: Problem s poliami bytov / N5110 LCD

Príspevok od používateľa peterple » 25 Sep 2017, 23:17

Pozerám že Arduininsti to riešia úplne rovnako ako Cčkari
https://www.arduino.cc/en/Reference/PROGMEM

Ale arduinisti to riešia tak že použijú mocnejší procesor. Taký ESP8266 má 96KiBy a tam sa už dá robiť sa RAMkou ako s uhlím.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

TomasNM
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1371
Dátum registrácie: 22 Jan 2012, 19:24
Bydlisko: Nové Mesto nad Váhom
Vek: 43

Re: Problem s poliami bytov / N5110 LCD

Príspevok od používateľa TomasNM » 26 Sep 2017, 08:34

Toto ma nenapadlo.
Nepoznam architekturu AVR,teda ani som nevedel,ze programova pamat je cosi ine ako Flash.
Ratal som s tym,ze ked to tam vojde ako celok pri uploade,ze to pojde.
Vyskusam a dam vediet,ale uz teraz tusim,ze to pomoze.

Btw,Je to Arduino Nano s Atmega 328p.

Dakujem.
0

Používateľov profilový obrázok
roboulbricht
Stály člen
Stály člen
Príspevky: 156
Dátum registrácie: 07 Jan 2015, 12:01
Bydlisko: Banská Bystrica
Vek: 54
Kontaktovať používateľa:

Re: Problem s poliami bytov / N5110 LCD

Príspevok od používateľa roboulbricht » 26 Sep 2017, 09:18

peterple napísal: ...Taký ESP8266 má 96KiBy a tam sa už dá robiť sa RAMkou ako s uhlím.
Z toho je ale dosť veľa zapratané pre potreby samotného čipu, čiže teoretické voľné maximum je približne 50 kB RAM.
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: Problem s poliami bytov / N5110 LCD

Príspevok od používateľa peterple » 26 Sep 2017, 16:56

Máš v tom naozaj zmätok. Flash je pamäť programu. Okrem toho je tam pamäť dát SRAM. Ako by si chcel meniť flash za 100ns a povedzme 10milion krát za deň? Je to Harvardsaká architektúra dva samostatné adresné priestory. Ono vždy nastane obdobie kedy sa arduinista musí začať stávať Arduinistom. Ak teda nechce navždy zostať pojedačom koláčov.

328 má 2kiBy SRAM takže si presne trafil že jedno pole+stack ti tam ešte vlezie. Ale dve už nie. Chyby so stackom sa vyznačujú tým že pre neznalých veci sa javia ako úplne nepochopiteľné, vznikajúce za nedeterministických podmienok.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

TomasNM
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1371
Dátum registrácie: 22 Jan 2012, 19:24
Bydlisko: Nové Mesto nad Váhom
Vek: 43

Re: Problem s poliami bajtov / N5110 LCD

Príspevok od používateľa TomasNM » 26 Sep 2017, 20:24

Zabojoval som s tym a stalo sa,co sa stat malo: funguje to.
Peter,dakujem za radu ohladom PROGMEM.
Niesom ziaden AVR profesional a detailne som to nestudoval.
Na moje projektiky mi staci to Arduino,jednoduche a rychle naprogramovanie.
Je to predsalen davno,co Si mal snahu do nas tlacit 48-ky a 51-tky,ale aj to bolo iba okrajovo a po skole som sa tomu nevenoval.
Je to uz takmer 20 rockov,co som po maturite.
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok