Fórum témák
» Több friss téma |
Elég sokszor. A MCLR az újabb típusokon lehet digitális bemenet is. Lesz még néhány furcsaság: A T0CKI kimenet néha (16F628) bekötetlen nyelőelektródás (open drain).
Először is Köszönöm,
Az MpLap státus sorában a STATUS bitjeit nekem nem mutatja, a W-t és a bankot igen. Ismét tanultam egy új hasznos dolgot. Ha jól értettem amit olvastam a "banksel"-ről, akkor ez nem assembly utasítás hanem az MpLab-ban lévő fordítóé? A "banksel nev" syntaxból az MpLab automata lefordítja a megfelelő bankba való átlépést!? Azon kívül hogy ha "manuálisan" állítom a Status bitjeit és ezzel váltok Bank-ot, könnyebb elrontani, miért jobb ha még most az elején a banksel-t szokom meg?
Igen.
A legfontosabb érv a banksel makró használata mellett az, hogy ha a változó egy másik bankba kerül valami miatt, akkor is helyesen fog működni a programod.
A "másik bankba kerül" alatt azt érted hogy más PIC en bizonyos változó más Bankban van, vagy hogy később más PIC-eknél egy PIC en belül is változhat? (program vagy beállítás függően?)
Ha a programot módosítod, új változókat definiálsz, akkor már más címre, másik bankba kerülhet egy korábban definiált változó. Az SFR regiszterek, amik a perifériákat kezelik, másik típusnál másik bankba kerülhetnek.
A hozzászólás módosítva: Jún 28, 2013
Szia!
- A W értéke és az Órajel között a zdcc betüsorozat utal a STATUS bitjeire: Z - zero, dc - digit carry, c carry. Ha nagybetüt látsz, a flag értéke 1, ha kisbetüt, akkor 0. - A banksel egy macro. A fordító a megadott kifejezés 8. és 7. bitje szerint beállítja az RP1 ill. RP0 iteket egy normál midrange kontrolleren. Egy advanced midrange vagy 18F típuson a BSR gerisztert tölti fel a megfelelő értékkel (movlb utasítás használja). Lényeg az, hogy a forrásban nem kell rögzíteni at értéket, a fordító szamolja ki (jól). Ha egy programot átírsz más típusra (pl 16F628 -ról 16F88 -re, mert kinőtte a memóriát), automatikusan számítja a Bank értéket a regiszterekhez (pl. EEprom kezelése). A hozzászólás módosítva: Jún 28, 2013
Köszönöm,
Ha a banksel macro-t használom mondjuk minden "beírás" előtt, akkor ha úgy jön ki hogy nem kell bankot váltanom mert előzőleg is már abban a bankban voltam amit használni akarok, akkor ilyen esetben a fordító ezt tudja/figyelembe veszi és nem piszkítja be fordítást? Nyugodtan használhatom akár folyamatosan?
Sziasztok!
Próbálkozom néhány teszt áramkör megépítésével, de gondjaim akadtak az égetésnél. Olvasni sikerült, de írni nem igazán. Viszont, lehet, hogy kinyírtam a PIC-et próba közben. Honna lehet tudni, hogy működőképes-e még? Igazából, a labortápról eddig 5v-ot vett fel, most meg 2 ampert, és esett a feszültség is... N
Az aramfelvetel A-ben van megadva, nem voltban. De ez valoban nagyon magas ertek. A PIC onmaga veszi fel ezt? Mert akkor mar izzana a tok, hacsak a leesett feszultseg nem par tizedvolt...
Hogy jo-e azt igy nem tudod megmondani, kieghetett port, kimehetett modul. De ha nem tudod olvasni (tobb olvasoval, torles utan sem), akkor biztosan rossz. A maximalis aramfelvetele ugy 100mA lehet, kb. 5V fesz mellett. A pontosabb erteket az adatlapban talalsz. Esetleg nem lehet, hogy a tapfesz elcsuszott egy labbal? (GND helyere kerult volna?)
Igen, igazad van, azt próbáltam meg leírni, hogy egy ideig ugyanabban a kapcsolásban tudtam olvasni, de írni nem igazán, azután valameddig lefutott az írás, 8 ledből négy elkezdett világítani, majd a labortápon már nem az 5v ot olvastam, hanem 1,2-1,3 V-ot, és nagy áramerősséget.
Szóval próbáljam meg olvasni, az adott kapcsoláson kívűl, ha nem sikerül, akkor kuka... Nagyon szépen köszönöm a segítséget! N
Sajnos a fordító mindig befordítja a bank beállító utasitás(ok)at. Ha az egymásután beállítandó regiszterek azonos bankban vannak, elég az első előtt beállítani a bankot. Ha többfajta kontrollert is megcélzol, akkor az előbbi mondet úgy igaz, hogy minden típusnál azonos bankbeliek előtt elég állítani.
Makrókat hogyan tudok elmenteni, és hova kell menteni hogy utána egy include-dal beépíthessem a programba?
I2C vel kapcsolatosan kérdeznék.
A PIC master adási üzemmódjában mikor megkapja az ACK -t a slave -től miért elég így írni a programot az ACK figyelésére? (A kód több helyen is hasonlóan szerepel, ezt például a melléklet Microchipes I2C leírás 64. oldaláról vettem)
A gondom az vele, hogy az ACKSTAT bitnek elvileg nem lesz ideje beállni, mert a PIC órajelével átrohan az utasításon, jóval előbb míg a slave ACK -t tudna küldeni mondjuk a 100KHz -es órajelével. . Ha én csinálnám valami várakozást beépítenék ide, de hogy mennyit az nem is lenne elsőre egyszerű kérdés. A fenti kérdésemet a mellékelt leírásból kiszedett alábbi kódrészlettel sem tudom magyarázni, mert itt ugyan van várakozás a kiküldés után, de csak a 8 bites adat kiléptetésének idejére az SSPIF el. Ez nem vár az ACK ra.
Ti ezt hogy értelmezitek? A hozzászólás módosítva: Jún 28, 2013
Sziasztok, csak egy gyors kérdésem lenne: PIC en ha nem használok egy lábat, mit kell/érdemes csinálni vele? Van mód kikapcsolni mondjuk, vagy mire állítsam? konkrétan most 12f683-ról van szó, de a kérdés a későbbiekben más PIC-ekre is vonatkozik.
Szia!
Maga a szinkron soros illesztő megvárja, az ACK pulcust. Ha a slave nincs kész az adat fogadásával, alacsony szintetn tartja a SCL vonalat az ACK kiadása előtt. Ha elkészül alacsonyra húzza a SDA -t és "elengedi" az CSL -t. Ha a SCL magasra vált, a master beolvassa az ACK értékét a ACKSTAT bitbe. Ha alacsony, akkor vette a megcímzett slave, ha magas, nem volt slave, aki vette volna az adatot.
Ha beállítható kimenetnek, akkor kimenetre állítás és alacsony szintet kiadni rá. Ha csak bemenet lehet, akkor le- vagy felhúzó ellenállást kell alkalmazni.
A macrokat ugyan úgy kell írni, mint a forrást.
Egy másik .asm -be is meg lehet adni és
formában használni. Az első hivatkozás előtt be kell "include" -olni.
És ha megírom a makrót, akkor azt hova kell elmenteni?
Célszerű a projekt könyvtárába menteni. Ha másik könyvtárat választasz, csak kínlódni fogsz...
Köszi.
Gondolom a fejlesztőkörnyezettel kell megírni a makrókat és csak egy sima "save as"-el elmenteni, ugye?
Úgy is lehet. De használhatod a Jegyzettömböt is.
Király.
Köszi mindenkinek
Idézet: „És ha megírom a makrót, akkor azt hova kell elmenteni?” A makro lehet a forrás állományban is, ekkor külön nem is kell elmenteni.
Első "komolyabb" programom. egy DIP kapcsolóval két "program" közül választhatok.
Igaz elég gagyin, mert a másodikat csak akkor lehet kiválasztani, ha az első számú program fut. És még arra sem voltam tekintettel hogy az 1-es lábnál a 2-es program indul és fordítva Meg ha az egyes program kapcsolóját lekapcsolom akkor még kétszer-háromszor végigmegy a futófény.. Na mindegy, gondoltam kirakom ide, hátha valakinek van türelme értelmezni, és figyelmeztetni hogyha valami olyat csináltam a programban ami nem tesz jót a uC-nek, valamint adni pár jó tanácsot továbbiakhoz. Meg ha lenne pár linketek, mint például 7-szegmenses LED kijelző használata, programozása, az is jó lenne. (Biztos nem nehéz megoldani a kapcsolókérdést hogy ne keljen egyszerre bekapcsolni a kettőt hogy fusson a kettes, de nem volt hozzá kedvem már gondolkodni rajta Ja és a kapcsolóhoz fogalmam sem volt hogy hogyan működik, de gondoltam hogy próba cseresznye, és láss csodát, sikerült ) Ha valakinek netán volt ideje erre, akkor jó lenne ha PM-et küldene, köszi előre is!
A hozzászólás módosítva: Jún 28, 2013
Jó reggelt! Olvasgattam, az oszcillátorokról, de még mindig homály pár dolgok, úgyhogy inkább kérdezek.
Lehet külső illetve belső oszcillátor használni ha jól értettem? Minek mi az előnye/hátránya? (külső/belső oszcillátor) Minden PIC nek van belső oszcillátorra? Belső oszcillátor esetén mitől függ hogy hány Hz-es?
E fenti kóddal pontosan mit állítok be? Előre is köszönöm!
Jó reggelt. Ajánlanám neked ezt az oldalt, én itt kezdtem: http://t-es-t.hu/elokep/pic/felhkk.htm
Eltart egy jódarabig mire a végére érsz, de megéri, hidd el A hozzászólás módosítva: Jún 29, 2013
Sziasztok, Első kódom élesben való kipróbálásakor sajnos problémába ütköztem. 12f683 két lábára kötött lednek kéne világítania, de nem teszi. Szimulátor szerint jó, de csak a beprogramozáskor villan fel az egyik ledem. Tápfeszt rendesen kap azt kimértem, de a lábakon amiken elvileg logikai (magas) értéknek kéne lennie nincs semmi.
Valamilyen beállítást rontottam el MpLab-ban vagy a kód rossz? Előre is köszönöm!
Szia!
Látni kellene a kapcsolást. Oszcillátor kiépítve? MCLR felhúzva a Vdd -re? 100nF tápszűrés közvetlenül a pic táplábainál? A LED -ek hogyan vannak bekötve?
Lehet hogy rosszul tudom, de 12f683 nak van belső oszcillátora, azt szeretném használni.
MCLR láb ami a 4es láb, földre van kötve. Ez az adatlap szerint csak bemenet lehet, így digitális bemenet lett belőle. Tápot a PIC a PicKit2-től kap. Ledek 5, 6 os lábon vannak (GP1, GP2). láb -> ellenállás -> led -> föld ellenállás 164 Ohm (2x82), led 3,5 volt nyitó feszültséggel, úgy számoltam hogy ez úgy kb 10mA lábanként. Adatlap szerint 25mA-t bír max lábanként a pic. Nem tudom ez így elég infó e, ha kell megrajzolom a kapcsolást is, ha gyerkőcöt lefektettem. |
Bejelentkezés
Hirdetés |