Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
A PIC szemszögéből nézve a TX vonalra kell két ellenállás, az RX vonalra pedig nem kell semmi. Az 5 V-ot leosztod 3,3 V-ra a TX oldlaon, az RX oldalon a 3,3 V -ot pedig magas szintként fogja érzékelni a PIC 5 V-os tápfesz. esetén.
A hozzászólás módosítva: Feb 19, 2016
Az RC7 (UART RX) elvileg Schmitt trigger bemenet, ami viszont 0.2VDD alatt logikai alacsony, 0.8VDD felett pedig logikai magas.
Szóval elvileg 0-1V között "0", 4-5V között "1" van, 5V tápfesz esetén.
A tx láb az rendben lehet ellenállással de az rx-hez kellene vmiféle illesztés..
Az a gond, hogy nem véletlen írtam én sem igen is jelentkezik a probléma. L72-es quectel gsm modemmel kisérletezek még ha 4V tápot adok neki akkor is csak 2,8V--3V körül van az aktív magas a kimenetén így 16F877 már többször nem érzékelte magasnak csomó tévesztés van a kommunikációban. Azért is akarok jó megoldást mert fontos hogy minimális legyen a fogyasztás így lényeges hogy mivel végzem a szint illesztést...
Annó csináltam pár próbát, a 3 V valóban határeset. A mellékletben egy lehetséges megoldás. Esetleg a HEStore-ból valamilyen szintillesztő: Bővebben: Link.
Egy 74HTC08, 74HCT126, 74HCT1G08, vagy két invertáló kapu sorban, ami a kontroller 5V -járól megy, elvégzi a szintillesztést. Megoldható egy elég gyors komparátorral is, ami 5V -ról képes működni. Használható még két egymásután kapcsolt tranzisztoros inverter (földelt emitteres kapcsolás) is, a második kollektorköre a kontroller 5V -jára kapcsolódjon. Egy másik ötlet, amihez csak egy P-MOS FET kell, az I2C szintillesztő megoldásából vehető át. Bővebben: Link. Ha a modul az UART TX kimenetén megengedi a magasabb feszültséget (pl. mert nyitott kollektoros), egy egyszerű felhúzó ellenállás (a kontroller 5V tápjára) is megldás lehet.
Ha a hely nem probléma, akkor tehetsz valami 74HCT logikai ic-t. 5V-ról táplálod, 2V-ot már magasnak érzékel a bemenetén. Létezik ezekből egyetlen kaput tartalmazó tok is, 74HCT1Gxx jelzéssel. Persze hogy mennyire van a sarki boltban, az jó kérdés...
Köszönöm szépen így már van miből szemezni. Azt találtam ki, hogy amíg debuggolom a kapcsolást vagy a fetes vagy a két nand kaput alkalmazom attól függ mit találok itthon. Aztán majd a végleges kapcsolás kap egy LF pic-et
Sziasztok!
Egy PIC32MZ2048EFH100-on szeretném letesztelni a PLL beállításaimat. Mégpedig úgy, hogy a Timer 2-n szeretnék egy 1ms-os interruptot, amivel majd (később 500ms-al) egy LED-et villogtatok. A Timer 2 ha jól olvastam a PB3CLK órajelforrásról jár. A beállításaim a következők 200Mhz-es órajel esetén:
Ez nem 1ms-os megszakítás lesz, de nem is ezzel van a gond. Hanem ha elindul a Timer, a LED-et be kellene kapcsolnia, azonban sajnos nem történik semmit.
Az IEC0bits.T2IE = 1; hiányzott.
Ez a megszakításom:
Ez a timer init:
Ez alapján úgy számoltam, hogy ez 1,024ms-os megszakításokat generál. A fenti esetben a LED-nek másodpercenként kellene állapotot váltania. Azonban kb. 100ms-onként vált állapotot. Mit rontottam el? Ez a PIC configuration bit settings:
Egy külső 24MHz-es órajelgenerátorról jár az OSCI lábra kötve. Elvileg 200MHz-en. A hozzászólás módosítva: Feb 22, 2016
Sziasztok, kis segítséget szeretnék kérni! Nem régiben elkezdtem PIC mikrovezérlőkkel foglalkozni...
grafikus LCD-t szeretnék kezelni... de sehogyan nem jutok vele semmire KS0108-as chippel ellátott kijelzőket kezdtem el nézegetni... a driverig eljutottam.... CCS C-t fordítót használok! A hozzászólás módosítva: Feb 22, 2016
Szia! Első körben az:
helyett:
írj. Ez fontos, ha megszakításból is akarsz kezelni egy változót. Ennek oka az, hogy ha nem volatile a változó, akkor azt a proci a gyorsító tárból is beolvashatja, amiben már nem biztos, hogy az van megszakításkor is, ami előtte volt. A volatile megerősítés után a program mindig a memóriából olvassa a változót, az eredeti helyéről. A másik tippem a watchdog, ha futna...
Tenyleg, siettem es elhagytam.
A watcdog-ot leellenőrzöm! Szerinted is jól jár a PLL 200MHz-en és a timer is 1,024ms-onként generál megszakítást?
A TCKPS<2:0> 3 bit terjedelmű, kettőt állítasz be, ha jól látom. Ha minden igaz akkor ez a 010 értéket jelenti, ami 1:4 osztás. A megjegyzésben 64-et írtál...
Egyébként, ha pontos 1ms-et akarsz, akkor jobb lenne a PBDIV 1:32, TMR2 pre 1:2, és a PRx 3125.
Biztos kell oda az a volatile? A gcc application category processzoroknál ugyan megcsinál olyat, hogy egy memóriaváltozót write-back cache-el regiszterekben - azt tiltja a volatile - de itt csak pic-ről van szó, és a hozzá alakított c fordító gyártja a programot. Pláne az a cnt csak a megszakítási rutinban van használva.
Teljesen pontosan nem tudom, mit csinál a fordító, de nekem már volt olyan, hogy csak ültem és nem értettem miért változik meg egy változóm értéke és ez volt a megoldás. A változó a megszakításban is és a fő ciklusban is változhatott.
Itt jelen esetben lehet, hogy nem ez a baj(mivel csak a megszakításban változik), sőt már kiderült, hogy más okozza az eltérést, de jobb megelőzni a bajt szerintem.
A volatile módosító azért kell, hogy a fordító ne akarja kioptimalizálni a változó beolvasását, és ne feltételezze, hogy annak a tartalma nem változott meg a legutóbbi kiolvasás óta. A volatile kiírása olyan változókhoz kell, amelyek megszakítási szinten vagy hardveresen módosulhatnak.
Használ valaki ICD3-at? A gyakorlatban miben különbözik a PICkit3-tól? Egyszer használtam, akkor is távvezérelt gépen keresztül (TeamViewer), és annyi tűnt csak fel hogy jóval gyorsabb. Próbáltam utánaolvasgatni de nagyjából annyit találtam csak hogy jobb debuggolásban. De mi az hogy jobb? Több töréspontot enged mint a három? Vagy stabilabb a működése? Nem olyan bugos? (A PICkit3+MPLABX ugye néha csinál hülyeségeket...)
Gondolom csak jónak kell lennie hiszen sokkal-sokkal drágább mint a PICkit3. Bár olyat is olvastam már hogy nem is jobb.
En eddig csak annyit tapasztaltam, hogy menet kozben is lehet torespontokat betenni az ICD3-nal, mig a pickit3-nal csak forditas elott lehet megadni torespontokat.
Sokkal gyorsabb, sokkal stabilabb(bár a PK3-al se volt sok gondom) és a hibakeresés nagyságrendekkel gyorabban megy, nem csak azért, mert az egy lépés is gyorsabban lefut, hanem azért, mert a max 6 megszakítási pontot bárhová teheted menet közben is (bár van, mikor időkritikus részek lefagynak a megszakítási pont kirakásakor, de ezen egy reset segít, nem kell újra programozni miatta.). Ha gyorsan kell valamivel elkészülni, akkor meghozza az árát, de ha csak egyszerűen telik rá, akkor nagyszerű érzés vele programozni a PK3 után.
@Wezuv, Droot:
Valamikor egy hónappal ezelőtt nézelődtetek pic sqi / sd kártya területen. Megkérdezhetem, milyen sikerek születtek vele? Működött, nem működött, félbehagyódott? Ha voltak vele működő kísérletek, és véletlenül a fogyasztását is mértétek, érdekelnének arról kísérleti értékek, hogy milyen sebességgel volt folyamatosan kezelve (írás / olvasás), és azzal a sebességgel milyen fogyasztása volt? Amiket doksiban erről találtam, ott 10 mA-től 100 mA-ig minden létező érték előfordul ugyan arra a sebességre (class 10 kártyák, 10 megabyte / sec folyamatos átvitel), ami kicsit gyanús nekem. A hozzászólás módosítva: Feb 24, 2016
Folyamatban van egy panel beültetése, amin SQI-t kötöttem az SD-re, ha lesz valami fejlemény jelzem.
A szűk keresztmetszet az lehet, hogy hová tölthetem hasonló sebességgel az adatokat, amit kiolvasok. (elvi max 25MBájt/sec, ha 50MHz et veszem és a 4 bites szélességet) Ha Ethernetre nyomom, az is max 8MB/sec. Az a 512k RAM nagyon hamar megtelik, meg aztán kicsit hiábavaló is memóriába olvasással tesztelni egy átvitelt. Egyetlen gyorsabb periféria a TFT 16bites PMP busza, igazából azért is próbálom ki az SQI-t, hogy az SD-ről milyen gyorsan lehet áttolni egy képet. Ebből már lehetne egy max sebességet kalkulálni. Ha 10MHz-el hajtom a PMP-t, akkor az kb. 20MB/sec. Ennek fele is álomszép lenne...
Szia!
Én még csak a PMP-vel foglalkoztam, ezt hajnalban összeröffentettem. Egyenlőre még csak 8 bites módban. Most afelől nézelődök, hogy van-e értelme 16 bites módban működtetni.
Azt hogy érted, hogy érdemes-e? Minden pixel 16bitből áll. Minden képpont x,y pozíció adat is legalább két bájtos, úgy is kell megadni, ha jól emlékszem. Naná, hogy érdemes!
Január 3 óta vadászom a pic32mz/da család információit. Egészen mostanáig húzódott, de már totál zsákutca. Írtam egy ticketet mc supportra, ott azt válaszolták, kérdezzem meg a sales-t (merthogy a developerek nem tudják..). A sales (microchipdirect) azt válaszolta, kérdezzem meg a területileg illetékes sales-t. Amikor rámutattam nekik, hogy ők azok, azt válaszolták az angol levelezésben, hogy hívjam fel őket telefonon - Ausztriában. Lévén németül nem tudok annyira, részemről letettem róla. Ha hall bárki bármit bárhol véletlenül, jelezze. A nyomozás faillal végződött.
Igen, ezt már átgondoltam. Most azt próbálom majd ki, hogy hogy lesz jó.
A sysreg-ben az MCUIF-ben 16 bitesre kell átállítanom az interfacet. Most a 8 biten már működő beállításokkal átállítottam 16 bitesre a kommunikációt és pl a háttérvilágítás halványabb lett. Egyébként ez az RA8875 nagyon tetszik, nem pixelenként kell grafikai elemeket kirajzolni hanem minden benne van. Pl még a szögletes sarkokat is le tudja kerekíteni. Csak megadom neki a két átló koordinátáját és a rádiuszt. Persze lehet hogy más kontrollerek is tudják és csak nekem új.
De miért ennyire fontos hogy mennyi áramot fogyaszt?
Ez a 100mA maximum amit mondtál tény, változtatni úgysem tudsz csak valami más rovására. Vagy az SQI konfigurálással van gond? |
Bejelentkezés
Hirdetés |