LCD + Serial egyutt nem mukodik

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
Avatar
szasziz
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2012. november 6. kedd, 7:00

LCD + Serial egyutt nem mukodik

Hozzászólás Szerző: szasziz »

Sziasztok!

Egy fura problemaval talaltam magam szemben egy Arduino R3-mal es egy 16x2-es LCD-vel. Mind az LCD, mind a soros kommunikacio tokeletesen mukodik, az LCD-n meg tudom jeleniteni a PC-rol, serialon keresztul kuldott adatot mindenfele gond nelkul. Szoval ez igy mukodik. Ellenben irtam egy alkalmazast, ami aktivan hasznalja az LCD-t (karaktereket futtat rajta), am amint ezen programba megprobalom integralni a soros kommunikaciot, azonnal elhal az egesz. Ugy tunik, hogy meg a Serial.begin hivason sem jut keresztul. Ellenben amint kiveszem az LCD-t hasznalo kod hivasat, egybol mukodni latszik.

A programom nagy vonalakban igy nez ki: a loop() fuggvenyben egy ciklus bizonyos feltetelig sajat keszitesu karaktereket futtat a kijelzon, majd egy bizonyos feltetel teljesulese utan a loop() ujrakezdodik az LCD torlesevel. Ebbe szeretnek beleszolni soros porton kuldott uzenetekkel, de sajnos sikertelenul. A setup()-ban az LCD fenyerejenek bekapcsolasan, sor- es oszlopszam beallitasan valamint a Serial inicializaciojan kivul nincs mas kod. Az alkalmazas logikai resze (egy osztaly peldanya) globalis valtozoban inicializalodik, ezt nem is kell kommenteznem, mindegy, hogy megtortenik vagy sem, egyedul a loop()-ban levo kod latszik elrontani a mokat. :-(

Mi lehet a gond? Tudtok tippet adni, hol tudnek elindulni? Esetleg tulsagosan memoriaigenyes a programom?

Ui. Azert gondolom, hogy a Serial.begin()-en sem jut tul, mert a kozvetlen ezutan levo kuldes sem tortenik meg (legalabbis a soros monitoron nem latom).
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Kódot lehet kapni?
Első tipp: van egy nem megfelelően lekezelt feltételed....
Második tipp: Építsd fel a programot, hogy aprókat lépsz (ne lebontsd!). Könnyebben lesz meg a hiba.

A serial.begin() igaz nem a loop()-ban van, hanem a setupban?

Setup() részed végéte tegyél be egy serial.print("Start...'"); sort... Illetve utána egy delay(100)-at, vagy LED villogtatást vagy hasonlót...
Ha a serial részt kidobod (kompletten), akkor a LCD megy?
A LCD-t igaz nem a D0, D1 lábakra kötötted?
Avatar
szasziz
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2012. november 6. kedd, 7:00

Hozzászólás Szerző: szasziz »

A kodot feltettem ide: http://pastebin.com/SRZUSCgi

Azota modositottam egy picit a kodon, most ugyan elindul, am amint a PC elkedi fogadni a jeleket, lefagy a programom.

A begin termeszetesen a setup-ban van.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Kevered az Arduino-t és a C-t. Első olvsatra összeveszik valami a háttérben (memóriaátfedés?)
Avatar
szasziz
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2012. november 6. kedd, 7:00

Hozzászólás Szerző: szasziz »

Igen, lehetseges, hogy egy picit agyuval verebre ehhez osztalyokat irni. :-) Azert batorkodtam C++-t hasznalni, mert ahogy neztem az SDK is ebben keszult. Serial hasznalata nelkul egy oran keresztul is tud futni hiba nelkul, ugyhogy szerintem a memoriat nem szemeteli. Neha olyan dolgokat produkal, hogy a mozgo objektumok idejekoran eltunnek a kepernyorol, vagy ottragadnak, ha a Serial inicializalva van (kommunikacio megkezdese utan azonnal megfagy a program). Megprobalkozom kevesebb dinamikus memoriaterulet hasznalataval.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Melyik chipre fordítasz?
M168: 1 kSRAM van, M328: 2k.
Avatar
szasziz
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2012. november 6. kedd, 7:00

Hozzászólás Szerző: szasziz »

M328.
Avatar
szasziz
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2012. november 6. kedd, 7:00

Hozzászólás Szerző: szasziz »

Hm, keszitettem egy object poolt az Enemy1 es Enemy2 osztalyoknak, igy elozve meg a felesleges memorialefoglalasokat es felszabaditasokat. Es most mukodni latszodik. Igy mar csaknem statikus a rendszer.
Hm, ugy tunik en voltam a balga, hogy tulterheltem a rengeteg objektum-krealassal. :-(

Azt hiszem ez jo lecke volt. :-)

Koszonom!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

PC-programozó hallgatóknak szoktam mondani:
"Ez nem PC, hogy korlátlan memória és processzor-erőforrás áll rendelkezésre!"

De ebből lehet tanulni. A hibákból és a megoldásokból...
Válasz küldése