Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Én is úgy gondoltam, hogy csak néhány függvényt, amik kritikusak, amik a szűk keresztmetszetet adják. De akkor is meg kell ismerkedni a C mindenféle dolgaival és ahhoz alkalmazkodni, ahogy az írtad is. Természetesen nem állnék neki egy teljes programot assembly-ben PIC32-re írni.
Egy TFT kijelző vezérléséről van szó. Már egy jó ideje olyan program írásán munkálkodok, amivel könnyen lehet készíteni minden féle kezelői felületeket. Első körben csak gombokról meg feliratokról volt szó, amiket statikusan ki lehet rakni a kijelzőre. Viszont mostanra már addig fajult a dolog, hogy alkalmazásokat lehet rá írni és azokat megnyitni. Pl. egy számológép alkalmazást el lehet indítani 12-szer is, ahogy az egy normáis oprendszeren is van. Hogy konkrétan a kérdésre is válaszoljak, akkor tűnt lassúnak a dolog, mikor egy 480x320as kijelzőn egy háttérkép felett betöltődött egy teljes képernyő méretű áttetsző ablak, amin további áttetsző objektumok voltak. Ez annyira lassú volt, hogy már lehetett látni, hogy betöltődik. Kb 60 ms lehet. Akkor is lassú volt, ha egymás felett volt pl 3 áttetsző ablak és mindegyiket más irányba akartam kiúsztatni. Lehet látni rajt, hogy megakad. Igazából egy kb 10 soros for ciklust kellett volna optimalizálni, ami az átlátszó téglalapok színét számolja. Röviden tömören erről van szó A hozzászólás módosítva: Júl 20, 2013
Ja értem, ehhez tényleg sovány a 32MX. Már csak ha a memóriát nézzük, akkor is.
Mivel oldod meg, használsz DMA-t? Hol tárolod a képeket?
Egy háttérkép 480x320-ra 480 * 320 *16 bit = 300kB. Ez kb félig van a 512kB program memória. 320x240-en viszont csak 150kB, az simán belefér. Tehát a képek simán a program memóriában vannak. SD kártyáról elég lassan lehet betölteni, főleg egy háttérképet, amit szinte mindig ki kell rajzolni, ha bármint frissíteni kell. De a fő probléma, nem is a képek tárolásával van, mivel látszik, hogy egy háttérkép és meg jó pár ikon elfér a program memóriában. A nagyobb gond a RAM. Ugyanis ha pl egy ikont odébb akarsz húzni kijelzőn az ujjaddal, akkor frissíteni kell az ikon régi helyét, hogy az ikon nélkül látszódjon a kép, és ki kell rajzolni az ikon új helyét, hogy ott látszódjon az ikon. Az eltüntetéshez a legegyszerűbb kirajzolni mindent újra, ugyanis ha az ikon rajt volt egy téglalapon és az is rajt volt egy másik téglalapon, akkor már jó ég sem tudja, hogy mi mit takar el. Ha viszont kirajzolsz mindent újra, akkor, villogni fog az egész és az elég gázul néz ki. Ezt meg lehetne oldani úgy, hogy mindent először a RAM-ba rajzolsz ki, hogy ne kijelzőn íródjanak felül a pixelek, viszont ahhoz 320x240-es kijelzőnél is 150kB RAM kellene, pedig 128kB van max a PIC32-ben. Na ilyenkor jönnek trükközések
DMA-t nem használok. Mivel ahogy utána számoltam a RAM-ból DMA nélkül kirakni egy 480 x 320-as területet kb 10ms. Igazából nem számottevő. DMA-val lenne meg pl 5ms. Viszont jelenleg csak a Timer1 et és Timer2-t használja program, így nem lenne túl nehéz áttérni másik kontrollerre. Ezért lesz jó az új fajta PIC32MZ amiben 512kB RAM van és 2MB flash. 512kB-ba már valahogy dinamikusan lehetne bufferelni is a képeket. Idézet: „512kB-ba már valahogy dinamikusan lehetne bufferelni is a képeket.” Ha meg DRAM-ot használnál, akkor nem kéne a byte-okat számolgatni... Ahogy ismerem a Microchip árazását, még csak nem is lesz olcsóbb az 512KB SRAM-os modell (ha egyszer végre elkészül és sikerül nekik valamennyire minimalizálni a bugokat), mint amennyiből már piacon levő, sokkal kiforrottabb, SDRAM támogatással, beépített TFT-vezérlővel rendelkező ARM-okkal ugyanezt röhögve meg lehet csinálni. A hozzászólás módosítva: Júl 20, 2013
Kicsit elszomorodtam, mikor rájöttem, hogy a PIC32MX kicsit gyenge a komolyabb grafikai dolgokhoz és megnéztem mi újság a konkurenciánál. Tényleg vannak nagyon jó dolgok, de mivel ez nem valami céges ügye, hanem magamnak csinálom, így míg vennék néhány másik procit, programozót, ráadásul ahogy lenni szokott minden panel kb harmadikra lesz jó... hát az nagyon sok pénz meg idő lenne. Pedig már tényleg a váltáson filóztam, mikor kiderült, hogy lesz ez a z új széria. Ebben is már lesz rendes memória kezelő periféria, ha minden igaz. Bár akárhogyan is ez tényleg egy új dolog lesz hibákkal és mi egymással, szemben a kiforrott ARM-os MCU-kal. De most még azon vagyok, hogy megéri várni. Meglátom milyen lesz ez az új csoda.
Tehát túl nagy befektetés lenne az átállás időben és pénzben is, mikor PIC32MZ semmivel sem lesz rosszabb, mint akármilyen ARM magos MCU. Legalábbis szerintem
Az előbb kifelejtettem, hogy nem hiszem, hogy a külső memória nagyon üdvözítő megoldás lenne, mikor a saját RAM-ja sem volt elég gyors A hozzászólás módosítva: Júl 20, 2013
Köszi a választ! Hasonló project van függőben nálam is. Arra gondoltam, hogy SD helyett(mellett) egy SRAM-ot illesztenék a párhuzamos portra és DMA-val mozgatnám az adatokat az SPI és a PMP között. Még nem merültem annyira bele, hogy konkrét elképzeléseim legyenek, de az már biztos, hogy az SD-ről nem lehet kellő sebességgel mozgatni a képeket, főleg, hogy nekem 800x480 a kijelzőm. Ezért kéne áttölteni párhuzamos SRAM-ba.
Nincs mit!
Ami jó hír egy 800 x 480 háttérkép 750kB. 2MB-ba azért bőven elfér. És annál gyorsabb tutira nem lesz semmi. Hátrány viszont, hogy elég macerás így háttérképet változtatni. Én azzal próbáltam trükközni, hogy amit lehet megpróbálok szoftverből generálni, hogy ne képeket kelljen használni. Pl egy sima téglalapnak be lehet állítani a színét, keret színét, a lekerekítését, átlátszóságát, domború effekt mértékét és jellegét, a kerethez effektet és köd effektet (pl egy gomb megnyomáskor olyan mintha világítana a gomb körül). Így egy gomb kinézetét menet közben is meg lehet változtatni, mert csak egy másik stílust kell neki beállítani. Mi célod a kijelzővel (ha nem indiszkrét a kérdés). Vagy Te is azért csinálod, hogy legyen ha kell ,mint én?
Értem. Akkor előre!
Ha tudok valamiben segíteni, írj bátran!
PIC16F1824 adc, dac
A +5V – 0V referenciákra kötött ADC 0V bemenet esetén az adresh,3 (balra igazított tíz bites ADC 6.bitje) „1”,pedig ez kb. 156mV-nak felel meg. A DAC b’00000000’ bemenetre 0V helyett kb. 500mV ad. A daccon1-t 0-63 tartományba egyesével növelve a kimenet nem ad lineáris lépcsőjelet. Tippek ? Kösz.előre is. PDM
sziasztok,
Készítettem egy univerzális 2-től 8 érpárra alkalmazható kábelok tesztelésére egy berendezést (mellékelten küldök róla egy rajzot). Tökéletesen működik. De a következő ami szeretnék az lenne hogy nem csak 8 érpárt tesztelni hanem kb 150-et. Valakinek esetleg valami ötlete, hogy meg-e tudom ezt valósítani PIC(több pic) segítségével vagy bármi más módszerral?
- 74HC373/374/240/245-tel portbővítés (8-bites párhuzamos adatátvitellel)
- 74HC595/165-tel portbővítés (pár vezetéken soros adatátvitellel) - MCP23017/23S17-tel portbővítés (I2C/SPI adatátvitel) - Több PIC, közöttük kommunikáció (I2C, SPI, vagy ahogy jólesik) 74HC helyett lehet újabb szériákat is (pl. AHC) használni. A hozzászólás módosítva: Júl 22, 2013
Én egy rakat léptetőregisztert kötnék sorba, amíg ki nem adja a szükséges erek számát.
A drótok másik végét pedig megfelelő számú 74*150 segítségével egyenként meg lehetne vizsgálni, akár zárlatra is.
Még egy apró infó hozzá. Azt szeretném ha rákapcsolok egy "kábel köteget" ami mondjuk nem 150 et- csak pl 120 érpárt tartalmaz. A berendezés pedig felismerné majd kijelezné, hogy mennyi csatlakozás van benne. Beállítaná a megfelelő ki/be meneteket és a következő köteget ez alapján teszteli. Lényegében egy ilyen hasonlót szeretnék építeni.
Lehet hogy elég bonyolultak az elképzeléseim, jelenleg ott tartok elszeretném dönteni hogy megépíthető a dolog vagy sem. De azért jó lenne ha össze lehetne hozni
Hogy a nem eléggé szabatosan megfogalmazott magasszintű elképzeléseidet milyen áramköri megvalósítással lehet elérni, azon inkább nem kezdek el gondolkozni.
De ha a lenti áramköröd ezt a funkcionalitást tudja (márpedig ezt írtad a kiinduló hozzászólásban), akkor a "kibővített" áramkörrel is összehozható.
Megépíthető. A kábel bekötésére kell a pilótavizsga A kábel kapacitása, ohmos ellenállás tesztelése, mérése már komolyabb falat lenne.
bocs a nem megfelelő szó használatért de jobban nem tudtam megfogalmazni mit is szeretnék. a fenti áramköröm sajnos ezt nem tudja, ott kapcsolók segítségével választottam ki a szükséges érpár számot.
Hát az biztos, hogy nem lesz egyszerű feladat kapacitás vagy Ωos ellenállás tesztelése szerencsére nem szükséges.
120 érig 2 darab pic24EP256GU814 vagy dsPIC33EP256MU814 is megteszi. A maradék két lábon beszélgethetnek egymással és a kijelző - kapcsoló vezérlővel. 240 érhez négy darab kell csupán...
A megvalósítás kiválasztásához jó lenne tudni, szóba jöhet-e SMD százlábú, vagy csak DIP tokos alkatrészeket tudsz beépíteni? A kijelzésre inkább egy PC-t lehetne felhasználni, akár nyomtatott lista is készülhet kábelről (nevezzük kábelnek tesztelendő pácienst! . Az anyagilag milyen korlátok vannak?
SMD alkatrész beépítésére nem nagyon van alkalmas szerszámom (szerintem), csak egy egyszerű forrasztóm van PC-t gond nélkül tudnék csatlakoztatni. (a nyomatott lista nagyon tetszik! ) Anyagi dolgokat úgy mondom, hogy céges viszonylatban lehet gondolkozni.
Pic18F4550 USB -val, sok-sok (160 vezetékhez 20 db) 74HC595 a vezetékek meghajtására (pl. a B portról 8 db léptető regiszter soros bemenete egyszerre vezérelhető), a beolvasáshoz ugyanannyi 74HC166 (8 db soros kimenere egyszerre fogadható a D porton). A léptető regiszterek az RE0..3 lábakon vezérelhető. Az A porton egy LCD vezérelhető (4 bitesen). A C port maradék bitjeivel (RC0..2, RC5..7) a tesz eredményét megjelenítő LED -ek és a gombok kezelhetők. Az USB segítségével a PC-s vezérlés és a nyomtatott teszt eredmény is megvalósítható.
A hozzászólás módosítva: Júl 22, 2013
Én a léptetőregiszteres vagy SPI portbővítős megoldásra szavazok. Lehetne egy csomó picet is felfűzni valami buszra, csábító is lenne a kb. 30 vezeték egy 40 lábú tokra, viszont a kiírás és beolvasás szerintem jóval tovább tartana, mint a léptetőregisztereknél. Léptetőregisztereket láncba fűzöd, SPI porton hardverből gyorsan ki lehet rájuk tolni, amit kell, másik SPI porton ezután beolvasni a bemeneti portbővítők állapotát, és elvégezni, amit kell.
A hozzászólás módosítva: Júl 22, 2013
Legfeljebb 16 darab 74*150 16-ból az 1 bemenet állapotát ki lehet választani 4 címbittel. Egy 74*154 pedig felhasználható a 16 darab 74*150 kiválasztására újabb négy címbittel. Ez összesen 8 láb felhasználásával 256 bemeneti vonal lekérdezését teszi lehetővé egy kilencedik lábon. 16 darab 74*595 léptetésével 256 drótra adhatunk ki jelet, egyenként. Ez 3 lábat jelent. Egy PC-vel soros vonali kapcsolat, talán bluetooth, mint a legolcsóbb, legegyszerűbb megoldás és egy terminálprogram. Ha jól számoltam, egy 18-20-28 lábú 8 bites PIC meg tudja oldani a feladatot.
A hozzászólás módosítva: Júl 22, 2013
Mártix pontokba nem lehetne kötni a kábelvégeket? Pár dióda azért kéne, de az talán nem vész. Ha azok a diódák LED-ek, még látni is lehetne, ha valamelyik szakadt.
A hozzászólás módosítva: Júl 22, 2013
egy dolog viszont még nem világos. léptető regiszterekkel és pic-el rövidzárlatra is fogom tudni tesztelni a csatlakozásokat ?
Szia!
Ha a kimeneteket egyenként szeretnéd nagyimpedanciás állapotba vinni, akkor dupla annyi 74HC595 kellene és 4 vezetékenként 1 db 74HC125 vagy 74HC126. A kialakítás a teszt módszerétől függ. Ha magas vagy alacsony szintet kell egy vezetékre kiadni, akkor elég az eredeti mennyiségű (20 db) 74HC595 és a 4 vezetékenként 1 db 74HC125 vagy 74HC126. A vezérlés egy portlábon adható ki az össze 74HC125 (74HC126) -nek. A hozzászólás módosítva: Júl 22, 2013
|
Bejelentkezés
Hirdetés |