Attiny 2313 LCD vezérlése

Hogyha sikeresen O/PLED illetve hagyományos alfanumerikus - esetleg tán grafikus kijelzővel gyűlik meg a baja valakinek:)
Avatar
fecus
DrótVégénSzéndarab
Hozzászólások: 22
Csatlakozott: 2012. szeptember 26. szerda, 6:00

Attiny 2313 LCD vezérlése

HozzászólásSzerző: fecus » 2013. szeptember 1. vasárnap, 6:39

Tiszteletem!

Egy saját építésű webrádió kijelzését szeretném attiny 2313-mal megoldani. Az LCD 2*16-os HD44780 kompatibilis. A program működik, de nem tudok rendesen fejleszteni, mert ahányszor megváltoztatok a kódban valamit, a puffer változók méretét is meg kell változtatnom (SER_BUFF_LEN), hogy megjelenjen a kijelzés. Misztikus. Hol a név hol a szám címe tűnik el. Ha a teljes 40 Byte LCD tárolót kihasználom, már az init string sem íródik ki. Olyan mintha szétírna valamit a kód a változók között.
A chip nincs tele:

Kód: Egész kijelölése

   Task "RunOutputFileVerifyTask"
            Program Memory Usage    :   1668 bytes   81,4 % Full
            Data Memory Usage       :   34 bytes   26,6 % Full
   Done executing task "RunOutputFileVerifyTask".


Nem tudom mekkora kódot szabad beszúrni. Az enyém 278 sor (6kB).
Az LCD-t Fleury library-val hajtom.

Kód: Egész kijelölése

/*************************************************************************
 Title   :   C include file for the HD44780U LCD library (lcd.c)
 Author:    Peter Fleury <pfleury@gmx.ch>  http://jump.to/fleury
 File:       $Id: lcd.h,v 1.13.2.2 2006/01/30 19:51:33 peter Exp $
 Software:  AVR-GCC 3.3
 Hardware:  any AVR device, memory mapped mode only for AT90S4414/8515/Mega
***************************************************************************/


Atmel Studio 6 SP2 win7 alatt; avrdude Ubuntu alatt; egyszerű párhuzamos programozó. Így debug nincs.

Üdv.

FF

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9738
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Attiny 2313 LCD vezérlése

HozzászólásSzerző: Robert » 2013. szeptember 1. vasárnap, 8:24

A hozzászólás hossza 32k lehet, de a filet csatolhatod is (256k-ig)

A hiba az stack környékén keresendő. Összecsúszik. A SRAM nincs nagyon tele? (buffer, szöveg-szám átalakítás, stb)
A T2313 viszonylag kis memóriával bír!

Avatar
fecus
DrótVégénSzéndarab
Hozzászólások: 22
Csatlakozott: 2012. szeptember 26. szerda, 6:00

Re: Attiny 2313 LCD vezérlése

HozzászólásSzerző: fecus » 2013. szeptember 1. vasárnap, 15:57

Biztos ez a gond. 3 db string változóm van, eredetileg 40 Byte-osak. Ezek hosszát adja meg az a mágikus változó (SER_BUFF_LEN). Az egyiket már kisebb méretben fixáltam (17 Byte).
Van valami trükk, hogy elkerüljem a problémát?
Debug nélkül, az Atmel Studio-ban meg lehet nézni a fordítás után, hogy hol szorít a cipő? Nem jelöli ki a változók helyét?

Milyen formátumban enged csatolni? C-t és txt-t nem lehetett.

FF

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9738
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Attiny 2313 LCD vezérlése

HozzászólásSzerző: Robert » 2013. szeptember 1. vasárnap, 16:08

Tiny2343 - 2x-es chip...

zipként csatolva?

Avatar
fecus
DrótVégénSzéndarab
Hozzászólások: 22
Csatlakozott: 2012. szeptember 26. szerda, 6:00

Re: Attiny 2313 LCD vezérlése

HozzászólásSzerző: fecus » 2013. szeptember 1. vasárnap, 16:42

Robert írta:Tiny2343 - 2x-es chip...

zipként csatolva?

4313-ra gondoltál? Szegeden nem találtam forrást ahol meg lehet venni. Majd keresem.
Mellesleg így is maradhat a cucc, csak legyek biztos benne, hogy nem rontottam el semmit és nincs rá valami ismert trükk, hogy kikerüljem a stringek tárolását (legalább az egyiket el kellene felejteni).

Úgy sikerült csatolni.

FF.
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9738
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Attiny 2313 LCD vezérlése

HozzászólásSzerző: Robert » 2013. szeptember 1. vasárnap, 16:56

ATTiny4313-PU a nagyobb.

T2313 SRAM: 128 byte
Az LCD-re amit kuldesz, az sorban tárolt.
Amit küldj: Első sor (max 16 karakter + ékezetes konverziós+pozíció)
utána várj 1-100 ms
utána folytasd a kiírást, azaz a buffer kezdjen ürülni.

Avatar
fecus
DrótVégénSzéndarab
Hozzászólások: 22
Csatlakozott: 2012. szeptember 26. szerda, 6:00

Re: Attiny 2313 LCD vezérlése

HozzászólásSzerző: fecus » 2013. szeptember 2. hétfő, 9:11

Ezt értem a hosszú stringeknél, de nem értem az init kiírást miért eszi meg.
Ha lefoglalom a 40Byte-ot mindhárom változóra, akkor még a "WEBRADIO" felirat sem jelenik meg teljesen. Ott még nem telhet meg semmilyen buffer, 2*8 karaktertől? Vagy mégis? Kipróbálom.
Elindítottam a szimulációt és ott a main értékadás után tényleg nem látom a RAM-ban a 3 hosszú stringet lefoglalva csak a két init kiírást.
Ezt a két stringet nem lehet kivarázsolni a RAM-ból? Hallottam valamit, hogy a programmemóriába is tudok fix változókat tárolni?

Még egy kérdés: van olyan linked ahol leírják miképpen végzi a dolgát egy atmel proci? Példákkal. Csak szeretném megérteni, hogy pl. egy ilyen string kiírásokor miket haszál ahhoz, hogy végül megjelenjen a szöveg. Ez a full adatlapból nekem nem derült ki.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9738
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Attiny 2313 LCD vezérlése

HozzászólásSzerző: Robert » 2013. szeptember 2. hétfő, 11:24

A 3 lefoglalást nem értem.
A program - ha jól elemzem - úgy működik, hogy valami bejön a sorosporton. Ezt buffereli és időnként feldolgozza (kiírja ill. karaktereket cserél (ékezetes).
Mindháromra hiába foglalsz le (128 byte van).


Bascom-AVR alatt a stack-kezelést ismerem, C alatt kevésbé (de elindulni jó lehet):
http://avr.tavir.hu/modules.php?name=Co ... age&pid=50

Avatar
fecus
DrótVégénSzéndarab
Hozzászólások: 22
Csatlakozott: 2012. szeptember 26. szerda, 6:00

Re: Attiny 2313 LCD vezérlése

HozzászólásSzerző: fecus » 2013. szeptember 2. hétfő, 12:30

Robert írta:A 3 lefoglalást nem értem.
A program - ha jól elemzem - úgy működik, hogy valami bejön a sorosporton. Ezt buffereli és időnként feldolgozza (kiírja ill. karaktereket cserél (ékezetes).
Mindháromra hiába foglalsz le (128 byte van).
...


Jól emlékszel, de minden beolvasás után ki is írja.

Kód: Egész kijelölése

   const char serbuffer[SER_BUFF_LEN];
   char name[SER_BUFF_LEN];
   char title[SER_BUFF_LEN];

Ez nem azt jelenti, hogy 3*SER_BUFF_LEN hosszúságban lefoglalja a memóriából a helyet? Erre és ilyen működésekre szeretnék választ kapni (nem Tőled, hanem valami dokumentumból) :oops: .
Ha azonban csak a rutin meghívásakor veszi el a memóriát akkor lehet, hogy a beolvasást vissza kellene tennem a fő programba, még ha kódterületet vesztek is vele!?

Az USB-s MKII programozóval lehetne debuggolni a hardvert? Látnám az ilyen dolgokat az Atmel Studióban?

FF

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9738
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Attiny 2313 LCD vezérlése

HozzászólásSzerző: Robert » 2013. szeptember 3. kedd, 4:08

Változókról:
http://www.stud.u-szeged.hu/Levai.Balaz ... alapok.pdf


A kódban lcdkezeles, meg egy par kulso doilogra hivatkozol.
Igazan a kodot kellene ujrairni, mert eleg pazarloan banik a hellyel :(
Vagy chipcsere a 4313-ra....

Avatar
fecus
DrótVégénSzéndarab
Hozzászólások: 22
Csatlakozott: 2012. szeptember 26. szerda, 6:00

Re: Attiny 2313 LCD vezérlése

HozzászólásSzerző: fecus » 2013. szeptember 3. kedd, 9:51

Köszi, nekifogok.
Igazam volt. A programot a Studio-ban futtatva a következő sorok lefutása után az SP 0xDD-ről azonnal 0x7F-re ugrik. Még egy sor kód sem fut le, csak a változókat deklaráltam. Tényleg lefoglalja az összeset. Azt nem tudom ez a fordító vagy a processzor.

Kód: Egész kijelölése

int main(void)
{
   const char serbuffer[SER_BUFF_LEN];
   char name[LCD_WIDTH+2];
   char title[SER_BUFF_LEN];               

   int i = 0;
   int length = 0;
   int shift = 0;


Ezek után persze a szubrutinok hívása után szétírja a változókat.

Üdv.

FF

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9738
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Attiny 2313 LCD vezérlése

HozzászólásSzerző: Robert » 2013. szeptember 3. kedd, 11:11

A SRAM eleje pl. az I/O portokkal, 1-2 belső regiszterrel fed át... (32?)

Hát bizony ez a fordító, mert TE lefoglaltad a memóriacímeket....

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9738
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Attiny 2313 LCD vezérlése

HozzászólásSzerző: Robert » 2013. szeptember 3. kedd, 11:14

Muszály ennyi karaktert látorolnod? valahogy a programban érzem, hogy aváltozókezeléssel száll el. Bascom-AVR alatt jobban kezelhetőnek látom (mert én azt ismerem inkább, és abban van több gyakorlatom:( )

Avatar
fecus
DrótVégénSzéndarab
Hozzászólások: 22
Csatlakozott: 2012. szeptember 26. szerda, 6:00

Re: Attiny 2313 LCD vezérlése

HozzászólásSzerző: fecus » 2013. szeptember 3. kedd, 13:41

Már struktúrálom át a kódot. Csak egy sor fogok tárolni. Annyit muszáj mert különben nem tudom kiszedni belőle a felesleget. A fix kiírásokat meg a progmem-ben. Még nem fut, este már késő volt... :(

Erre még tudsz válaszolni:
Az USB-s MKII programozóval lehetne debuggolni a hardvert? Látnám az ilyen dolgokat az Atmel Studióban?

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9738
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Attiny 2313 LCD vezérlése

HozzászólásSzerző: Robert » 2013. szeptember 3. kedd, 14:15

A ATTiny2313 debuggerre 2 megoldás van:
1, AVR JTAGICE MKII
2, AVR-Dragon

Az AVRISP MKII ill a sima MKII csak programozni tud.


Vissza: “LCD kezelése”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 3 vendég