Fórum témák
» Több friss téma |
Lehet ostoba a kérdés... de a "DT" az esetünkben mit jelöl?
Köszönöm, még nem találkoztam vele, illetve csak most az LCD rutinok kapcsán.
Idézet: „16F877 est használok” Meg kérdezhetem, mi az oka, hogy ezt a PIC-et választottad? Kell ez a lábszám? Ha nem, mennyi szükséges? Ugyanis a 18-as széria F14K22 , F26K22, F46K22 tagjai nem csak jóval olcsóbbak, de nagyobb tudásúak és assemblyben sokkal könnyebben programozhatóak.
Ja bocsi, úgy emlékeztem, hogy Te írtad a váltást 16-ról 18-as szériára...
Igen, azért választottam ezt a tipust mert sok GPIO ja van és nem utolsó sorban ez volt itthon, a 18 as szériát meg abszolut nem ismerem. Elég sok bemenet-kimenet kell. Sőt, néha egyes bemenetek kimenetek is egyben, futás közben váltogatom őket. Néha egyes pin eken pollozok, majd ugyan az a pin később egy analóg kapcsolót vezérel..stb. Szóval a GPIO kból sosem elég... Másik, ahogy ez a kérdéseimből is látszik eléggé kezdő szinten vagyok, vagy talán újrakezdő 10 év uitán, de sosem voltam Hp41C szintjén pl. (És tuti nem is leszek) De mondhatnék most még rengeteg nicknevet akik profik ebben a témában. A 8 biteseken 16F szérián sosem jutottam túl (F628, F648, F877, de voltak 12F675, sőt 10F206 ra is szerényebb projectjeim. Én sosem tanultam programozni, amit "tudok" azt magamtól szedtem össze innen onnan, no és Tőletek csipegettem fel. Ezúton is hálás köszönetem érte. A 18 as széria úgy tudom annyiban más hogy nincsenek lapváltások, és bankok? Ez már előny ez tény. De nekem ez egyíelőre fekete lyuk... Mindenesetre mivel egyre többen ajánlják a váltást (gondolom nem véletlenül) berendelek egy szerényebb típust és vasalok hozzá egy tesztboard ot. Aztán hátha barátok leszünk és megszeretem.
![]()
A 18-as szériának nem merül ki abban az ekőnye, hogy nincsennek bankváltások.
Igen fejlett az indirekt RAM kezelése, ráadásul 3 különböző regiszter van hozzá. Azaz, ha az egyik regisztert beállítottad egy címre, le tudsz kérdezni úgy egy másik ramot, vagy épp írni bele, hogy az előző cím nem állítódik el. Pl. Mérésadatokat gyüjtessz. az egyik regiszter írja utóinkrementálásos módban. Te közben olvasni akarod. Megteheted anélkül, hogy az író módot befolyásolná. A Pali79 által felvázolt programmemóriában tárolt adatok olvasása is könnyű.
Értem, jól hangzik. Köszönöm! Ki fogom próbálni. Kezdésnek melyik típust ajánlanád? Amiben van mondjuk minimum 2 analóg komparátor, belső referencia és van 15-20 GPIO ja? Az LCD t szivesebben hajtanám 8 bites módban mert egyszerúbb kezelni és gyorsabb is így de az eleve elvisz minimum 10 GPIO t.
A hozzászólás módosítva: Ápr 22, 2020
Idézet: „A 18-as szériának nem merül ki abban az ekőnye, hogy nincsennek bankváltások.” 4096 regiszter címzése az utasítás 7 bitjével??? Mire szolgál a BSR gerisztere? Meg egy jó hónap, mire az utasítások eltérő jelzőbit kezelésével valaki tisztában lesz.
Mire oda eljut, hogy olyan hosszú programot írjon, ahol ez kelleni fog, sok víz lefolyik a hátán.
Szia!
Az LCD kezelése minimum 1 lábat visz el: azt, amivel az E -t vezérled. Ugyanis , ha E alacsony a R/S, C/D és a 8(4) adatvonal nagyimpedanciás. Pl. 10 nyomógomb kezelhető ezeken a vonalokon. Csak annyi kell, hogy a vonalakat felhúzó ellenállásokkal (10-47k) látod el, az egyes nyomógombok egy-egy soros ellenálláson (1k) keresztül húzzák a vonalat alacsony szintre. Legolcsóbb a 18F47Q43 I/P - 64kb program, 8k adat memória. A ChipCad -nál 690Ft+áfa (még 8 db van). A hozzászólás módosítva: Ápr 22, 2020
A bankváltás nélkül a 18FxxK22 -ben használható 96 byte GPR -en már túl van. Ha 1 bank váltást megendedünk, akkor 96+ 256 = 352 GPR, a 16F877 -e pedig 368.
A 18F14K22-nek 18 I/O portja van. Ebből 12 kapcsolható át 10 bites A/D converternek.
Kezdésnek ezt ajánlanám, mert elég szívós darab. Bár erre vonatkozó leírást nem találtam róla, de a tapasztalataim azt mutatják, hogy a kimenetei vagy áramgenerátorosak, vagy rövidzár védettek.RAM-ból 512 byte, EEPROM-ból 256 byte Flash memóriából 16kB áll rendelkezésre. Mindenképp a 4 bites módot ajánlanám az LCD kezelésére. De ha még szeretnél lábakat spórolni, van megoldás az LCD 2 vezetéken történő meghajtására. Bővebben: Link Idézet: „96 byte GPR -en már túl van” Én nem vagyok akkora puska ebben mint te, így megkérlek, fejtsd ki bővebben, miről írtál. Én eddig csak a 18F46K22-nél váltotam valaha bankot, mert az I/O portok egy része nem volt elérhető. A kisebbeknél sosem kellett még ilyet csinálnom. Idézet: „96 byte GPR -en már túl van” Mármint menyus a programjával.
Megbocsáss, de még mindíg nem értem.
Ez a kis kód 1024 byte adatot tölt át a flash memóriából a RAM-ba egy 18F26K22-esen. Nem kellett hozzá bankot váltani.
Ez egy igen speciális eset. Direkt címzésnél pedig a 18F -eken is kell foglalkozni a bankváltással. Persze lehet mindenhol a 2 szavas movff (3 szavas movffl) utasítást használni a WREG kezelésére, de a többihez (decf, incf stb ) be kell állítani a BSR -t.
A hozzászólás módosítva: Ápr 22, 2020
Na innentől el is ment a kedvem a 18 as szériától, maradok a 16 osnál. Az már bevált mint az Otto motor.
![]()
Ezt most nem igazán értem... 8 bites adatvonallal kezelve az LCD adatlábai D0 - D7, ez 8 GPIO a kontroller felől, + az E és a R/S. Az RW t mondjuk hogy nem használom mert nem olvasok az LCD ról csak írok rá, ezért az RW láb fixen VSS en van. Ez bárhogy is számolom 10 láb. Bár tény hogy láttam már "1 vezetékes" LCD s projectet is. Lehet pont itt a cikkek között? Én 8 bites vezérlésről írtam hogy talán az a legegyszerűbb. Ez az egy vezetékes dolog nekem még magas léc lenne így elsőre. Látod még a 4 bitessel is megszenvedek.
![]()
Nem az egyvezetékes LCD kezelésről írtam.
Azt vetettem fel, hogy ha 8 bitesen (adat) van bekötve az LCD plus a C/D és az E (ez 10 vonal) ebből csak egy van, amit nem tudsz másra használni - az E -t meghajtó lábat. - LCD re való írás előtt az adat vonalakat (8) és a C/D vonalat kimenetnek állítod be, beállítod a kívánt szintüket, ezután vársz egy kicsit és csinálcs egy pulzust az E -n. - Az adat vonalakra és a C/D vonalra a fent leírt módon bekötött nyomógombok olvasásához bemenetnek állítod a vonalait és beolvasod a szintjüket. Ez alatt az E vonalat alacsony szinten kell tartanod. Máris kétféle célra használtad a 9 vonalat.
Köszönöm, de lehet maradok a 16 os szériánál egyelőre. Legalábbis amit fejlesztgetek azt egyelőre megoldom azzal. A 18 asba meg csak belekóstolok.
![]() LCD vel kapcsolatban a 4 bittel is szenvedek nemhogy 2 biten. ![]()
Ja, így már értem. tehát az GPIO kat amivel az LCD adatlábait vezérlem és amelyek eredendően kimeneteknek vannak állítva, használhatom bemenetként is. Értem, ezt a módszert használom a mostani projectemben is, mint alább említettem. Az adott GPIO t hol bemenetként hol kimenetként állítom be és kezelem a programban. Csak éppen nem az LCD adatlábait vezérlő GPIO kat, mivel nem csináltam még LCD s projectet nem mertem ezt kockáztatni. Ez esetben valamilyen hardveres megoldással le kell választani a GPIO t az LCD adatlábáról? (dióda, tranzisztor..stb?)
Ez az egy vezetéskes dolog becsapós, mert az LCD n kívül feltételez + egy soros LCD vezérlő panelt is. Tehát "csak szoftveresen" nem megoldható ha jól gondolom. Mindenesetre az ötletet köszönöm, rendelek is egy párat ezekből a soros modulokból. Gondolom az Alin van, de lehet még itt a HE store ban is. Majd körülnézek.
Fentebb írtam, hogy a nyomógombokkal sorosan kell egí kis ellenállás (1k) és a felhasznált kimeneteket fel kell, húzni tára (ha a nyomógomb a földer kapcsolja) egy-egy nagyobb értékű ellenállással (10..47k).
Ezeket a vonalakat használhatod még kimenetnek is az alábbi módon. Válasz ki még egy (az LCD kezelésében részt nem vevő) lábat és végy egy 74HC273 regisztert. Az LCD 8 adatvezetékét kösd be a 74HC273 bemeneteire, a kiválasztott lábat a 74HC273 órajel lábára. Ha a vonalak kimenetek, de a pulzust nem az E-t hajtó lábra csinálod, hanem a 74HC273 órajelét hajtóra az adat megjelenik (és a következő pulzuisig ott is marad) a 74HC273 kimenetén. A MCLR -t a 74HC273 reset bemenetére kötve a kimenetek bekapcsoláskor alacsony szintre állnak be. Ezzel máris háromféle célra használhatod ugyan azt a 8 lábat.
Az igen, ezt így csípőből. Köszönöm az ötletet. Ha 1/10 ennyit tudnék mint Te, már a NASA nál lenne a CV m.
![]() ![]()
My Shift Protokol (c) Roman Black két ellenállás + két kondenzátor + 74HC595 kell. Az lcd 4 bitesen kezelhető vele.
Bővebben: Link
Köszönöm a hasznos infókat. Jó kis oldal, tele van jó kis LCD s projectekkel.
![]() ![]()
HR Elektronika -nál és a HAM bazár -ban is van (a honlap szerint).
A hozzászólás módosítva: Ápr 22, 2020
|
Bejelentkezés
Hirdetés |