Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   395 / 1320
(#) szilva válasza potyo hozzászólására (») Jan 20, 2009 /
 
Így van, de lehet lassú a digitkapcsoló tranzisztor is. Azok általában szaturálnak, amiből elég lomhán élednek fel. Én már tapasztaltam olyat, hogy pár nop-ot be kellett tenni a digitváltásoknál, hogy az előző tranyó kikapcsoljon rendesen, hiába volt amúgy a dolgok átkapcsolásának sorrendje jó. A másik, ami szerintem a túl gyors léptetés ellen szól, hogy felesleges a proci idejének nagy részét ezzel tölteni.
(#) m.joco válasza szilva hozzászólására (») Jan 20, 2009 /
 
Na majd akkor megpróbálom, egyelőre csak dugaszolós nyákon, aztán lehet, hogy akváriumhoz fogom használni.
Üdv.
(#) delmur82 hozzászólása Jan 21, 2009 /
 
Üdv!

Jelenleg az LCD meghajtásával kezdtem el foglalkozni.
Van egy 2 soros 16 szegmenses LCD kijelzőm. Olvastam itt a cikkek között az LCD - ről írt cikket. Nagyon tetszett. Viszont azt írja hogy a közölt protokoll csak HD44780 - as vagyv azzal kompatibilis vezérlővel ellátott LCD - kel működik. Nos honnan lehet eldönteni hogy az enyém ilyen e?

Típusa: EW162G5YMY
16 csatlakozópont van rajta. De sajnos nem találok róla semmit, sem lábkiosztást sem hogy milyen vezérlő van benne.
(#) icserny válasza delmur82 hozzászólására (») Jan 21, 2009 /
 
"Keressetek, és találni fogtok"
Azt nem tudodm, hogy a G0 és a G5 között mi a különbség,de a ChipCAD-nél biztosan felvilágosítanak, ha megkérdezed.
(#) kissi válasza delmur82 hozzászólására (») Jan 21, 2009 /
 
Szerintem kompatibilis, de nézd meg a gyártó honlapját ( Chipcad-nél rátalálsz)!

Steve
(#) szilva válasza delmur82 hozzászólására (») Jan 21, 2009 /
 
Azt én sem tudom, a G0 és G5 között mi a különbség, de ahogy nézem, ezek teljesen standard HD44780-kompatibilis modulok, KS0066 chippel.
(#) delmur82 válasza szilva hozzászólására (») Jan 21, 2009 /
 
Hát remélem hogy kompatibilis. Viszont ezen 16 láb van ezért jó lenne egy lábkiosztás. Megnézem a chipcad - nél
(#) delmur82 válasza delmur82 hozzászólására (») Jan 21, 2009 /
 
A G0 - at találtam meg. Aztr írja az adatlap hogy a 15 - 16. láb a backlight. Oda mit kell kapcsolni?
(#) szilva válasza delmur82 hozzászólására (») Jan 21, 2009 /
 
A 15-16. láb a háttérvilágítás szokott lenni. Azt azért érdemes kilesni az adatlapból, hogy mi kell a háttérvilágításnak.

Szerk: kell lennie egy normál üzemi feszültségértéknek és áramértéknek a háttérvilágításhoz. Gyanítom, hogy ez LED-es backlight, és az 5V-ból egy előtétellenállással be lehet állítani simán. Egyébként háttérvilágítás nélkül is mennie kell a kijelzőnek, a felélesztéséhez az egyáltalán nem szükséges.
(#) delmur82 válasza szilva hozzászólására (») Jan 21, 2009 /
 
ok kössz!
Akkor mehet a programozás.
(#) delmur82 hozzászólása Jan 21, 2009 /
 
Az LCD bekötése egyszerűen csak ennyi?
(#) szilva válasza delmur82 hozzászólására (») Jan 21, 2009 /
 
Igen, ez a legegyszerűbb. 4 bites mód és nincs olvasás a kijelző felől, emiatt az adatlapi időzítéseket be kell tartani, mert nem tudsz busy flaget olvasni. Én is ezt használom szinte mindig.

Szerk: a tápok melletti 3. lábat (itt C-vel jelöli) egy potméter segítségével a tápfesz és a GND között változtathatónak illik megcsinálni, ezzel lehet az LCD kontrasztját állítani.
(#) delmur82 válasza szilva hozzászólására (») Jan 21, 2009 /
 
Hopp ezt hirtelen nem értem. Azt mondtad nem kell olvasni az LCD felől. Akkor miért kell olvasni a busy flaget? Én a READ/write lábat fix GND - re kötöttem.
(#) szilva válasza delmur82 hozzászólására (») Jan 21, 2009 /
 
Nem azt írtam, hogy nem kell, hanem hogy nincs olvasás. Az azt jelenti, hogy ebben a bekötésben egyáltalán nincs lehetőség az olvasásra, mivel az RW láb fixen földre (írási irány kijelölése) van kötve.

Ha lenne olvasási lehetőség, akkor tudnál olvasni a kijelző felől egy busy flag-et minden adat elküldése után, amivel meg tudnál győződni róla, hogy mikor végzett a kijelző annak feldolgozásával. Ha nincs olvasási lehetőség, akkor ki kell várni az adatlap szerinti időzítést a következő küldés előtt.

Én kiírandó karakter elküldése után 60-100us-ot szoktam adni a kijelzőnek, egyéb parancs elküldése után pedig 3ms-ot. Persze ezt sokszor úgy csinálom, hogy egy egyébként is meglévő, rendszeresen beeső timer interruptba van betéve számláló, ami számolja az eltelt időket és ha már szabad, akkor küldi a következő dolgot a kijelzőnek, és nem fixen a programba épített delay-ekkel.
(#) pinyooooo hozzászólása Jan 21, 2009 /
 
Sziasztok!

Segítségre lenne szükségem. Adott egy 4x4x4 led kocka, amit egy pic16f690 vezérel. Egy hóesés szerű effektet szeretnék programozni, de akadályokba ütköztem.

1. A ledek adatait (1 vagy 0) egy 4x4x4-es mátrixban szerettem volna letárolni, hogy a következő lépésben lejjebb léptethessek minden szintet. Itt ütköztem az első problémába: simán engedi deklarálni a tömböt, viszont amint műveletet hajtok végre vele, egyből lázad a fordító.
(no target memory available for section "UDL_main_0") Arra saccolok, hogy ez kb annyit jelent, hogy nincs elég memória. De hogyan? 4*4*4=64 db char=64 byte. Ennyi hely ne lenne a memóriában?

2. A felső szinten minden lépésben véletlenszerűen szerettem volna kigyújtani a ledeket. Végigkutattam az egész internetet, de konkrét sdcc-s véletlenszám generálást nem találtam sehol. Ezért az adconverter utolsó bitjével szórakoztam, de az nem az igazi.

3. A ledeket kigyújtó függvénynek több napi vértizzadás után se tudtam átadni a kívánt paramétereket. Ezért kénytelen voltam globális változókkal helyettesíteni a paramétereket. De így ez sem az igazi.

Az utolsó két probléma nem a világ vége, de az elsővel egyszerűen nem tudok mit kezdeni.

A segítséget előre is nagyon szépen köszönöm!

Üdv:pinyó
(#) potyo válasza pinyooooo hozzászólására (») Jan 21, 2009 /
 
Linux vagy Windows alatt dolgozol az SDCC-vel? Nem azért, mert most hirtelen tudnék megoldást a problémádra, hanem én is kisérleteztem már az SDCC-vel, és ha lenne valaki, akitől tudnék pár dolgot kérdezni, akkor újra elővenném.
(#) pinyooooo válasza potyo hozzászólására (») Jan 21, 2009 /
 
Most per pillanat Windows alatt, de általában Linux alatt szoktam. Szóval mindkettő.

Üdv:pinyó
(#) watt válasza pinyooooo hozzászólására (») Jan 21, 2009 /
 
Idézet:
„4*4*4=64 db char=64 byte.”

Ez elférne 64 biten! Minek kell egy bájt egy LED állapotára, ha 0, vagy 1 lehet csak? Ha mondjuk fényerőszabályzást is említettél volna akkor megérteném.

Ettől függetlenül 64bájtnyi hely biztosan van, de sajnos a SDCC-ben nem tudok segíteni.
(#) pinyooooo válasza watt hozzászólására (») Jan 21, 2009 /
 
Jogos. Viszont 1 byte-nál kisebb adattípust nem tudok deklarálni. Az sdcc man szerint az sdcc ismer bool típust, ami 1 bit, viszont ha bool-ból csinálok tömböt, már a deklarálásnál behal a fordítás.

Üdv: pinyó
(#) watt válasza pinyooooo hozzászólására (») Jan 21, 2009 /
 
Bájtként kell kezelni az effekt programot nem bitenként. Egy excell táblázat segíthet a bájtok kiszámításában.
(#) tibiiii00 hozzászólása Jan 21, 2009 /
 
helló mindeki

Tud valaki mondani nekem egy PIC16f877A-hoz
egy saját EEpromjába való irási időt?
4MHz kvarc-al és 9600 baud-on.
Csak azért kérdem mert nekem nagyon lassunak tünt szimuláláskor 10 karakter kiirása kb 50ms volt.

köszi
tibiiii00
(#) potyo válasza tibiiii00 hozzászólására (») Jan 21, 2009 /
 
Adatlapban benne van a pontos érték, de nagyjából ennyi.
(#) pinyooooo válasza watt hozzászólására (») Jan 21, 2009 /
 
Arra gondolsz, hogy egy bájtba nyomorítsam bele 8 led "adatait"? Ez nem rossz ötlet , hogy ez nekem nem jutott eszembe . Csak attól félek, hogy olyan hosszú programkódot fog eredményezni, hogy most meg a programmemória lesz kicsi . Mindegy, megpróbálkozok vele így.

pinyó

Ui.: Azért, ha valakinek van elegánsabb megoldása, szívesen veszem.
(#) delmur82 válasza szilva hozzászólására (») Jan 21, 2009 /
 
Ez nekem is megfelelő időzítés lenne. Én 4 MHz - es belső osc - it használok és 1:64 - es prescalert az TMR0 megszakításomhoz. Ebben az esetben mennyivel kéne feltölteni egy számlálót hogy mondjuk 1ms - os periódusonként leteljen az értéke. És ha nullázódik a számláló (1ms - onként )akkor engedem csak tovább a programot mondjuk adatírás után az LCD- re.
(#) trudnai válasza tibiiii00 hozzászólására (») Jan 21, 2009 /
 
Idézet:
„Csak azért kérdem mert nekem nagyon lassunak tünt szimuláláskor 10 karakter kiirása kb 50ms volt.”


Adatlap ezt pontosan leirja, de anelkul, hogy bele neznek - had ne en tegyem meg helyetted - az 5ms byte-onkent nagyjabol realisnak tunik nekem...

Idézet:
„4MHz kvarc-al és 9600 baud-on.”


Hat ezt igy most nem tudom az orajel sebessege mennyiben befojasolja ezt, de ugy gondolnam nem - a Vdd feszultseg szintje annal inkabb. A baud-ot meg nem ertem, milyen baud es hogy jon ez az eeprom firkalasahoz?
(#) szilva válasza delmur82 hozzászólására (») Jan 21, 2009 /
 
Tulajdonképpen ha egy egyszerű progiról van szó, akkor megengedhető az is, hogy a kiírásokba betedd a megfelelő delay-t, ami megfogja a végrehajtást a kellő ideig. Ez csak akkor kerülendő nagyon, ha amúgy van más tennivalója is a programnak, ami ráadásul nem interruptban megy.

Ha egy jelzőt timer interruptból billentesz és ezt megvárod a főprogramban, akkor gyakorlatilag ugyanott vagy, mintha delay-t tennél a főprogramba.

Én úgy oldottam meg a teljesen akadásmentes, interruptos LCD vezérlést, hogy a RAM-ban lefoglaltam egy buffert, ami az LCD-n kint lévő felirat "tükörképe". A program mindig csak ebbe a bufferbe írja a megjelenítendő karaktereket. Emellett van egy rendszeres interrupt, ami másodpercenként 10000-szer jön be (valójában 9600-szor, soros porti küldés miatt) és frissíti a kijelzőt a buffer tartalma alapján. Ha az aktuális interruptban ki kellett küldeni egy karaktert, akkor a számlálót 1-re állítom, így a következő interruptban (kb. 100us múlva) megint foglalkozhatok a kijelzővel. Ha egy parancsot kellett kiküldeni, akkor a számlálót 30-ra állítom, és a következő 29 interruptban csak a számlálót csökkentve múlatom az időt. A 30. interrupt kb. 3ms idő eltelte után fog bekövetkezni, ismét foglalkozhatok a kijelzővel. A főprogram így soha nincs megakasztva, az interruptban sincs explicit várakozás.
(#) slogan hozzászólása Jan 21, 2009 /
 
Sziasztok !
Mi a nyúgje ilyenkor a PICKIT2 -nek ?

Programming Target (2009.01.21. 21:39:15)
Erasing Target
Programming Program Memory (0x0 - 0x106)
Verifying Program Memory (0x0 - 0x106)
PK2Error0027: Failed verify (Address = 0x0 - Expected Value 0x5A3 - Value Read 0xFE0)
PICkit 2 Ready
(#) pinyooooo válasza slogan hozzászólására (») Jan 21, 2009 /
 
Szerintem az lehet a gond, hogy nem éri el rendesen a programmemóriát, ezért nem tudja érvényesíteni a felírni kívánt programot.
Eddig működött? Jó eszköz (device) van kiválasztva a programban? Érintkezik minden rendesen?
(#) slogan válasza pinyooooo hozzászólására (») Jan 21, 2009 /
 
A

"list p=16F877
#include "

sorokban volt a hiba .....


Még egy kérdés .
Ha Mplab -ból kiküldöm a programot ,az normális ,hogy a Pickit2 -n világít továbbra is a target led ?

Csak akkor indul el a programom ,ha lehúzom a Pickitet.
Elméletileg hagyhatnám rajta nem ?
ja....

és a resetre kéne valamit csinálnia ?

Ez csak kölcsön van nálam ,de holnap már itt lesz a sajátom
(#) icserny válasza slogan hozzászólására (») Jan 21, 2009 /
 
Idézet:
„Csak akkor indul el a programom ,ha lehúzom a Pickitet.”

Prorammer menüben kattints a Release from Reset pontra!
Következő: »»   395 / 1320
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem