Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
A hozzáadott CD-n pedig vannak... (Nekem legalábbis volt)
Van egy valag segedlet:
Bővebben: Link Illetve vegulis egy komplett USB szekcio foglalkozik -- informatiok, termek kivalasztas stb: Bővebben: Link
Ezt a kártyát az USB használatának okítására találták ki, az USB keretrendszer meg C18-at kíván, ezért a mintapéldák is (legalábbis ami a honlapról letölhető) C-ben vannak.
De engem még jó darabig nem érdekel az USB. Én csak egyszerű LED-eket szeretnék villogtatni! Lehet hogy akkor nekem is inkább a PICkit2 starter kit-et kellett volna inkább megvennem mint Skori tette.
![]() Ahogy nézem direktben rá van kötve pár dolog, mint kvarc, MAX323. Akkor nem is tudom a PIC ezen lábait használni akármire ezen a nyákon? A rajzon és a nyákon nem PORTA, PORTB feliratok vannak, hanem: RA0, RA1, RA3, RA4, RA5, RB4, RB5, RB6, RB7, RC0, RC1, RC2, RC3, RC4, RC5, RC6, RC7 Jól gondolom hogy ezek lennének a három port bitjei? És hova lett akkor az RA2, RB0, RB1, RB2, RB3?
LED-eket is tudsz villogtatni, meg amit csak rá lehet kötni, gyakorlatilag ez is csak egy próbapanel.
Tegyél rá egy szabad portra 8 LED-et, és kezdődhet a villogtatás, futófény "nájtrájder", digitális számok megjelenítése stb.
Ne panikolj Attila! Jol dontottel.
A jovoben szukseged lesz meg a tobblet funkciokra, mint pl. az USB. Mindenek elott a mikrovezerlod adatlapjat olvasd vegig teljesen. A periferiakat (AD, soros port, CCP...) egyelore eleg ha csak feluletesen atfutod. Alaposabban raer, ha majd rajuk kerul a sor. Egyelore ertsd meg a belso felepiteset a MCU-nak, memoria strukturat, mi mivel hogyan kapcsolodik, digitalis portok mukodeset. A specialis funkcioju regiszterek (SFR) elso ranezesre nagyon ijesztoek lehetnek, a rengeteg regiszter, meg megtobb fura nevu bit amibol felepulnek. Ezeket ugy kell elkepzelni, mint egy nagy vezerlo pultot, tele kapcsolokkal es jelzo lampakkal, amik a kulonbozo reszek vezerlesere, es a mukodesuk visszajelzesere szolgalnak. Alapbol itt is foleg a CPU -hoz tartozokat kell megerteni es megtanulni. A periferiake raer kesobb. Talan azert is volt (szamomra) szerencses meg a 16F84-el kezdeni, mert nagyon egyszeru joszag, csupan egy idozitot es belso EEPROM-ot tartalmazott, igy nagyon egyszeru volt megerteni a mukodeset. Alig tartalmaz nehany specialis funkcioju regisztert, tehat nem kavarta ossze a kezdot az a rengeteg sok minden. A neten volt is egy magyarra forditott adatlap hozza, igaz en sosem hasznaltam, de talan segithet. En is csak ajanlani tudom a Mikroelektronika konyveit, a gyonyoru abrak benne magukert beszelnek. Bővebben: Link
Elvileg a PORTC minden lába szabad, csak az alsó négy bitje van gyárilag rákötve 1-1db LED-re. Gondoltam bekapcsolom az alsó kettőt. Elkezdtem bepötyögni valamit, és közben oda tett nekem egy B-betűt az egyik sorhoz: Bővebben: KÉP
Ez mit jelent? Illetve; mielőtt belegyömöszölöm a programocskámat a PIC-be, nem lehet kiolvasni és elmenteni valahogy a gyárilag benne lévő programot? (A négy LED futófényként működik gyárilag.)
Valamire rányomtál, vagy kettőt kattintottál a soron. Ez a B a Breakpoint betűje, vagyis szimulációkor ha futtatod a programot, akkor ezen a soron megáll, és meg birod nézni a regiszterek tartalmát, módosítani birod, stb.
Van olyan opció, hogy Programmer->Read és utána File->Export-al el tudod menteni.
Az a LED-kigyújtó program működőképesnek tűnik, bár utána kellene nézzek, hogy a 18F14K50-nek milyen konfigbitjei vannak, mert lehet, hogy attól azért több, mint amit Te felsoroltál.
Még egy jótanács: az ilyen programok végrehajtása a PIC-ben nem fog attól befejeződni, hogy ott van az utolsó utasítás után az END. Attól még a memóriában lévő utasításokat (memóriaszemetet) szépen elő fogja venni a végrehajtó egység, és egyesével el is fogja végezni az azokban előírt műveleteket. Tehát ha azt akarod, hogy a program álljon meg és ne történhessen semmi "véletlen" az utolsó utasításod után, akkor tégy oda egy végtelen ciklust! Pl. egy iyet:
Még az jutott eszembe, ha az első kapavágásokon túlvagy, akkor esetleg megnézheted a PICkit2 starter kit-hez vagy debug expresshez adott ASM kódgyűjteményeket is. Azokon a paneleken is hasonló "perifériák" vannak, mint a tiéden: 4 vagy 8 LED, egy poti és egy nyomógomb, a gyári leckesor ezekkel operál. Igaz, hogy 16F-es PIC-re és esetleg más portbitekre kötött perifériákra lettek megírva a mintaprogik, de azt egy nagyon jó kis önképzésnek vélem, ha ezeket a progikat szépen átbütykölöd a saját hardveredre. Ehhez a megfelelő adatlapokat kell sűrűn forgatni és az alapján módosítani a kódot. Én így tanultam a 18F-eket anno.
És miért nem tudom lefordítani? Azt írja nagy piros betűkkel hogy: BUILD FAILED
Idézet: RA2 áldozatul esett a VUSB oltárán...„És hova lett akkor az RA2, RB0, RB1, RB2, RB3?” B0, B1, B2, B3 technikai okokból nincsen: a 20 lábból nem telik rá. Ez így van a PIC16F690-nél is. Így marad a C port, meg a fél B port.
Azt a Build Failed előtti sorokban írja, hogy mi a baja...
Gondolom, még nincsenek beállítva az elérési útvonalak. Ha nem akarsz feltétlenül debug-olni, akkor állítsd át Release-re az MPLAB menüjében fordítás előtt. Ha egy mód van rá, akkor kerüld az ékezetes betűket és a szóközöket a fájlnevekben, valamint a hosszú elérési útvonalakat! Az oszcillátormód inkább HS legyen, ne XT. Konfigurációs bitek a bootloaderben így vannak beállítva (én így használom):
A forrásfájlod nincs felvéve a projektbe!
Project --> Add files to Project menüpontban add hozzá az asm állományt!
odatetted a program végére a végtelen ciklust?
Igen! A korábban belinkelt képen látszik is: Bővebben: Link
Elírtad a címkenevet. CILKUS-t írtál címkének és CIKLUS-t a goto után.
![]()
Azóta átírtam, de akkor is csak egy pillanatra villannak fel a LED-ek.
Csak a két középső LED felvillan aztán kész.
A regiszter1, regiszter2, delay1..3 nem változónak vannak definiálva, hanem címkéknek, amikre tudsz ugorni programkódból. Namost a fordító nem jelez hibát, mert a címke is csak egy szám a fordítónak, meg a változó is csak egy szám, tehát a movwf delay3 kódhoz bizony befordítja, hogy a munkaregiszter tartalmát arra a memóriacímre másolja, ami a delay3 értéke (jelen esetben 18F kontroller esetén azthiszem 8). De ez így nem jó. Most nem világos, hogy 16F vagy 18F tipussal próbálkozol, mert 18F-nél nincs banksel makró, legalábbis nem a TRISC-re kell használni. Ha viszont 16F, akkor ott meg a speciális célú regiszterek vannak a memóriaterület elején, és szépen belerondítasz azokba azzal, hogy a delay1..3 "változókba" írkálsz, illetve akkor a BANKSEL PORTC-t is használni kell, mielőtt a PORTC-be akarsz írni.
Mindig a teljes kódot tedd fel, hogy lássuk, hogy milyen kontrollerrel van dolgunk, hogy állnak a konfigurációs bitek, stb. Hosszabb kódot csatolásként rakd fel. A hosszabb meghatározásához mondjuk úgy, hogy az előző kódod határeset, ami attól hosszabb, azt inkább csatold. Vannak az MPLAB mappájában template fájlok, azokból nézd ki, hogy kellene felépülnie egy forráskódnak, hova kerülnek a változók. Nálam ezek a c:\Program Files\Microchip\MPASM Suite\Template\Code\ mappában vannak.
Így próbáld:
Az első fájl amit feltöltök a HE-re.
Még egy megjegyzés: a direktívák (pl. cblock, endc) ne kezdődjenek a sor legelején. Az a címkéknek van fenntartva.
Én is töltök fel néhányat.
Az utolsó programodat is hiába futtatom, csak egy pillanatra kapcsolja be a PORTC legalsó bitjét.
![]()
SIKERÜLT!
![]() Azt gondoltam hogy a programozás után azonnal elkezd futni a program, de nem. Rányomtam a "Bring target MCLR to VDD gombra és most már villog szépen... ![]() |
Bejelentkezés
Hirdetés |