Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
A fenti assembly programot egészíteném ki. Hogyan határozhatom meg a portb, a GMTIM1, és a LED bitjének helyét? Nekem az lenne a segítség, ha leírnátok ezt a hiányzó három programsort!
Az általad közölt hivatkozás programjában (Kösz!) van egy TRISA parancs.
Lehet, hogy marhaságot kérdezek. A PIC16F877A adatlapján olvasom a következőt. Note: To maintain upward compatibility with future PIC16F87X products, do not use the OPTION and TRIS instructions. A TRISA parancs is TRIS parancs? Mert én akkor TRISA nélkül tanulnám meg az assembly programozást!
Szia!
A TRISA egy regiszter (melynek bitjeivel a PORTA -hoz kapcsolódó kivezetések szerepét -bemenet/kimenet - lehet beállítani) neve, nem a TRIS utasítás változata. A régebbi programozási leírásokban a TRIS még külön utasításként jelent meg, a mostaniakban már a következő utasításokkal lehet a funkcióját elérni: Ez a példa a PORTA 7..4 bitjeit bemenetnek, a 3..0 bitjeit kimenetnek állítja be:
Természetesen nagyobb kontrollerben lesz TRISB, TRISC,... TRISG is a megvalósított portoknak megfelelően. Szia
Sziasztok! Szeretném a rutinosabb kollégákat felkérni egy kis brainstorming-ra. A probléma a következő:
Adott egy PIC ami folyamatosan adatokat gyűjt külső perifériákról meghatározott sorrendben és ezeket az adatokat autoincrement módon szórja ki SPI-n egy SRAM-nak, mert az elég gyors hozzá, hogy kövesse ezt a ritmust. Mondom az én megoldásomat, hogy megértsétek. Tehát amikor tele lesz az SRAM, akkor átkapcsol a második SRAM-ra és azt kezdi írni. Ezzel egy időben egy második PIC az első SRAM-ról kiírja SD kártyára FAT fájl rendszerben, valamilyen kiterjesztésű fájlba az adatokat. Mivel a FAT-os fájl létrehozás elég lassú és erőforrás igényes, ezért éppen bele fog férni abba az időbe amíg a második SRAM betellik. Amikor a 2. SRAM betellett, akkor az 1. PIC kezdi elölről a munkáját és addig a 2. PIC a 2. SRAM-ot menti fájlba. Ez az én költségesebb, de talán szép megoldásom. Ha valakinek van egy egyszerűbb olcsóbb megoldása, szívesen megfontolom. Köszi! Maradjunk a 16-os, 18-as PIC családnál, ha lehet! Köszi!
Mindössze egy gyors logikai észrevétel. Szóval tolnád kifele SD kártyára az adatokat, mert az SRAM betelik. És az SD kártya nem telik be? Vagy abból is használsz kettőt, és melléraksz majd egy led-et jelzőnek, hogy ha ideje cserélni valamelyiket? Ha teszem azt van egy számítógép is bekapcsolva a közelben, kitolhatnád eleve USB-re is. Vagy akár soros portra is, ha belefér a sávszélességbe.
Még egy apróság. A fat-ozás talán tényleg nem apróság, de ds33F sorozatból akár spdip 28-as kivitelben is találhatsz 40 mips-es példányt is, és nevetségesen alacsony áron. Azokban a pic-ekben van normálisan munka memória is. Szóval tuti annyira meg kell aztat bonyolítani, hogy dupla pic, meg dupla sram meg spi busz? Csak átgondolnám a helyedben az elavult vacak pic szériákról való áttérést, ha már gigászi fába csapod a fejszédet, amihez alapból SD kártyát kell mellékelned, mert annyi lesz az adat. Esetleg ha eleve meghatározott méretű az SD kártya, írhatnál rá globálisan egy darab file-t is, mert cserélni úgyis csak akkor kell, ha betelt. Úgy nem kell eldarabolni a folyamatokat, és kevesebb szufla is elég lehet. Mindent egybevetve, ha csak nem olyan iszonyúan kell pörögnie annak az adat gyűjtésnek, egyetlen normálisabb pic is elég lehet. De persze nem a 16/18f sorozatból. De persze a fő baj az lesz, hogy ha több pic, akkor több "alrendszert" kell hibamentesítened. HW/SW hibákat együttesen összekotorni, az igazából egy rémálom
Köszi! Azért nem eszik olyan forrón... Az első és fontos ok amiért ez a PIC széria van szem előtt, hogy birtokomban van egy olyan gyors fejlesztő szoftver, ami az összes komplex programozási kihívást apró parancsok formájában valósítja meg. Ez jelen esetben nagyon fontos érv. Egyszerűen most nincs idő áttérni magasabb tudású szériákra. Meg nem is vagyok egy szakmai zseni.
Egy 16MB-os memóriakártya is elég nekem, bőven viszont a legnagyobb SRAM 32kbyte, ami elég kevés. Az adat minden nap letölthető egy PC-re USB-n, de ez most mindegy.
Basszus, azt még ki kell találni, hogy miként lehet leválasztani az egyik PIC vonalait, amíg a másik beszélget.
Szia! Milyen fejlesztő szoftvert használsz ?
Miért nem működik az alábbi, hibátlanul leforduló assembly program?
Ezzel beprogramoztam egy PIC16F877A mikrovezérlőt, melynek PORTD lábaihoz van csatlakoztatva 8 db LED.[b]
Hali,
van egy pic 18f4420 -as panel és a pickit2 nem tudja beolvasni az ic id-jét? Találkozott már valaki ilyennel? Mi lehet a baj?
Próbáld a pickit 2 szoftverével törölni,
"use vpp first program Entry" beállítással. Nincs véletlenül direktben 0, ra kötve a /MCLR láb?
Talán a legnagyobb hiba a programban: a bsf, valamint a bcf utasítás biteket bizergál, nem egész bájtokat, mint ahogyan a programodból sejthető a felhasználása.
A portd beállítását nem szükséges elvégezni, hiszen pont erre van betöltve a program elején a P16F877A.INC fájl. A felhasználható regiszterek neveit tartalmazza az abszolút címükkel hozzárendelve. Egyébként milyen órajelen működik a mikrovezérlőd? Az a 250-ről való visszaszámlálás elég karcsú, olyan gyorsan le fog futni, hogy talán még a LED-ek felvillanását sem fogod látni szemmel, ha működőképes lesz a programod.
Szia!
Több baja is van a programnak: -A legnagyobb baj az, hogy a PORTD megfelelő bitje nincs kimenetnek beállítva, az alábbi részlet kell az elejére:
- A bsf és bcf utasítás második paramétere egy bit pozicióját jelentő szám (0..7). - Meg kellene adni a kezdőcímet, amitől elhelyezi a programot a fordító. - Ahhoz hogy valamit mérni is tudjál a semmit sem csináló végtelen ciklus inkább villogtassa a led-et. Ekkor oszcilloszkóppal már látható a működés. Ahogy azt előttem már ajánlották, nagyobb cikust kellene alkalmazni, ha látni is szeretnéd a villogást. - A portd definíció helyett a PORTD szimbólumot használd. Szia
A nagykapacitású, soros vezérlésű FLASH IC-ket nézted már?
Bővebben: Link Szerintem kicsit erőltetett elképzelés csöbörből vödörbe passzírozgatni a bájtokat, két PIC-kel. Idézet: „Egyébként milyen órajelen működik a mikrovezérlőd?” 4 MHz Most kivettem a kódból a LED-et kikapcsoló részt, s így bekapcsolva marad.
Én értem a hozzáállásodat, de végeredményben nem leszel ám boldogabb, ha 10x annyit buksz a réven, mint amit a vámon nyertél. Persze ha csak enni akarod a saját főztödet, ám legyen neked
Napi 16 mega az bakfity. Emiatt ugyan ne izgulj rá minden vacakra, mint dupla buffer, meg még flash is, ha naponta tudsz adatot menteni. Ebben a játékban csak a méret a lényeg. Kotorássz valahol a IS42S81600A környékén. 128mbit önfrissítős dram, van belőle soic tokos is, kb 2k huf áron berendelhető. A pichez mellé dobsz egy max232-est, és egy mezei soros porton összedugod pc-vel. Hogy ram vezérléshez egy 18-as hogyan fogja bírni speeddel, az már más kérdés.
C fordító környezetet bármilyen pic-hez (8 bitestől 32-esig) használ valaki parancssoros környezetben ?
Kellene nekem egy scriptes toolchain. Mplab-ot ki kellene hagyni a játékból. Teljesen. Böhöm nagy vacak, és nem kell amúgy semmire. Jobb híjján rákukkantottam egy MCCxx doksijára, és elvileg meg lehet csinálni. Ha senkinél sincs még ilyen, nekiesek én magam, de ha már van, jelezze plz (ds33F).
Ilyesmire gondoltál?
Bővebben: Link
Hali. Készítettem régebben egy PIC égetőt. Működött is. Ma elkészítettem újra, de nem megy. Emlékszem, hogy régebben pár alkatrészt módosítani kellett, mert anélkül állítólag nem működött. (én csak a módosítottal próbáltam ki, eredeti alkatrészekkel nem) Lehet hogy Újra Módosítani kellett volna az alkatrészeket, és működne? a kapcsolás
Miért ne építsünk JDM-et?
Megszámoltam csak a Te kedvedért! Ez a link jelen topikban 19-szer van meg minimum.
De ha ez a kapcsolás, ugyanez a nyák Nekem működött. megépítettem újra, és nem megy... Az a válasz hogy miért ne JDM-ezzünk?
Olyasmire, csak éppen windows alatt. Mostanra nekiestem saját magam scriptet faragni. Bineknek igazából minden szükséges dolog megvan a microchip tanulós C fordítója alatt is - elvileg.
Arra persze kíváncsi lennék, hogy azt a 60 napos korlátot hogyan kellett érteni? Talán a fordító progi mindig bemászik a registrybe, vagy roseb tudja hova, és számolja a napokat, aztán 60 nap után nem fog nekem optimalizálni?
A válasz konkrétan más is lehetett volna, de most, hogy ki akarod húzni belőlem, hát leírom.
A JDM mozaikszó hallatán szinte mindenki undorral gondol arra a bizonyos áramkörre. Sok-sok, PIC-es berkekben járatos embernek herótja van az áramkörtől és tízmilliószor le lett róla beszélve egy csomó próbálkozó/kezdő, s jópáran bele is fásultak az egészbe az állandó JDM-gondok felemlegetése miatt. A linken minden lényegeset összeszedetten elolvashatsz, ami a JDM-mel kapcsolatban felmerülhet. Ha nem működik a kapcsolás, akkor szét kell tárni a kezeket, jó nagyra kinyitni a szemeket és hosszan csodálkozni és elmélkedni; atombiztos sosem lesz az áramkör, a konkrét, egyedi problémáit pedig lehetetlen és nem is érdemes kikutatni és kijavítani, legalábbis vállalkozó szellemű embert nemigen fogsz találni... (ehhez talán már nem is lenne elég a vállalkozó szellem)
Szerintem olvasd el azt a cikket, és majd megérted.
Pld: most éppen máshova volt kedve statikusan kiragadni a soros portodnak, ergo nem működött. Éppen valami futott a háttérben, elmászott valami időzítés. Vacakolt a +12V-od. Fizikailag egy másik soros portra kötötted, és ott mások a tényleges fizikai feszültségszintek. Azt állítod "működött", de elfelejtetted hozzá tenni, hogy csak egyetlen pic-en próbáltad ki, és azon is csak egyetlen alkalommal. Kicsit korán örültél. És nem, nincs mit tenni ellene. A világon semmit se tehetsz azért, hogy biztosan működjön. Egyszerűen csak azért nem működik, mert ha valaha valahol valakinek működött is, az majdhogynem egy lottó nyeremény esete. Amikor a JDM-et megtervezték, még mások voltak a soros port vezérlő áramkörök, és azóta már változott a világ. Álmodoztak a srácok, és nem kiforrott dolgokon törték a fejüket, hát eljárt a JDM felett az idő. Meg kellene venni azt a pickit-et.
Kösz a válaszokat, de a Te válaszodból megtudtam amit akartam
Idézet: „számolja a napokat, aztán 60 nap után nem fog nekem optimalizálni?” Igen, és ezenkívül szövegel is. Erre számítania kell egy scriptnek, ha a fordító üzeneteit akarja értelmezni.
A nyavajás! Direkt a student verziót szedem le, amire azt ígérik, békén hagy, de a doksijában ugyanúgy ott a figyelmeztetés, és ugyanúgy izélget is.. *broaf*
Nincs valami másik windowsos C fordító legalább ds33F családhoz? A scriptben arra akaszkodtam rá, hogy fordítás előtt letörlöm a kimeneti object állományt, és fordítás után ha nem létezik, akkor hiba van. Ha létezik, akkor max warningok kikerültek menet közben a képernyőre, de azt úgyis látom. A scriptes hátteret most már megcsinálom én magam, mert nem olyan bonyolult az, viszont normális binárisok kellenének hozzá. Valami tipp? Ja igen, akad valami olcsóbb termék esetleg, amihez jogtisztán az üzleti verziót is ideadják a C fordítóból? |
Bejelentkezés
Hirdetés |