Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
T2CON-ba rossz értéket írtál, a T2ON bit 0-ban maradt...
Üdv!
Foglalkozott valaki már behatóbban a capacitive sensing modullal a PICekben? Valami nem teljesen kerek hardware oldalról, ezért felvázolnám: Az AN1101,és AN1102 adatlapokban a szerző egy olyan megoldásnak a hardveres körülményeit említi,amikor is olyan PIC-et használ, amelyben a CSM (capacitive sensing module) nincs implementálva, így a komparátor,és timer ,ill. egy külső rezgőkör (ha jól látom) segítségével érzékeli a kapacitásváltozást. A PIC16F727-be (többek között) már implementálva van a CSM, amelynek a használatára egy példaprogram is van C ben: AN1171, amely csak a szoftveres részt tartalmazza, a hardver kiépítéséről nincs szó. A kérdésem az lenne, hogy vajon a CSM-el rendelkező PIC-ek esetén csak elegendő-e a dedikált lábakra kötni az érintkező felületeket, vagy itt is a T1CK lábat, és egyéb ellenállásokat satöbbiket szükséges-e használni? Mellékelem a 1101At (7. oldal érdekes), és a 1171-et.
T2CON = 0x02 -> 01 Prescaler is 4
T2-t 24-es sorban kapcsolom be, mielőtt belépnék a while-ba ( TMR2ON = 1; ). Amúgy szimulátoron a TMR2 érétke megfelelően változik. A gondom továbbra is az, hogy mikor megszakítás van, a jelző bit beállítódik, de a hozzá tartozó rutin nem fut le.. Idézet: OK, ezt nem vettem észre! :hide: „T2-t 24-es sorban kapcsolom be”
Nálam a szimulátorban működik az interrupt is, de ahogy elnézem, a kimenetet túl hamar visszakapcsolja a főprogram, mivel a while ciklus sokkal gyorsabb, mint ahogy Timer2 túlcsordul (PR2 alapértelmezetten FF). Idézet: Szerintem le van írva benne, hogy a CSM külső oszcillátor nélkül működik, csupán az érzékelő PAD-ekhez kell kötni a CPS0...CPS16 bemeneteket. Az A Függelék vázlatrajzából úgy tűnik, hogy minden más belül kapcsolódik össze (a frekvenciaméréshez), amit a szoftver konfigurál. „AN1171 ... csak a szoftveres részt tartalmazza, a hardver kiépítéséről nincs szó.”
az Initpic() -l a pic-et inicializálom fel. Mellékeltem a progit. Eddig az InitPic külön .h be volt, de most áttettem a "main"-be.
Megszakításkor a counter- nek 1-re kéne váltani. A watch- ablakban nézve, a counter nálam nem lesz, egy, lépésben futtatva továbbra sem jutok el a megszakítás rutinba.. Lépésenként futtatva, init t2 -nél a TMR2IF = 0; után PIR1 = 0x02. Vagyis: TMR2IF: Timer2 to PR2 Interrupt Flag bit 1 = A Timer2 to PR2 match occurred (must be cleared in software) Ezt nem értem miért... És ugye ekkor még a számláló nincs is bekapcsolva, tehát még túlcsordulni sem tud..
A mellékelt kódban (rám hallgatva?) most túl korán engedélyezed Timer2-t, még mielőtt az inicializálásokon végigmennél. Ha visszaírom T2CON=2-re, akkor később, 111 utasításciklussal jut el az interrupt kiszolgáló elárásba.
Mindesetre más verziókat használunk, így a konfigurációs beállítások nálam kiakasztják a fordítót. Az include-ok becsatolása sem stimmel, így próbáld:
Ha jól látom, akkor nálam HI-TECH C Compiler for PIC10/12/16 MCUs V9.71a van fenn.
Még nem ismertem az oldat. Most nézegetem. Sokat segít így elsőre. Köszi!
Nálam a 9.70- es PRO verzió a pwm.c fájlt lefordítja miután az include- okon változtattam, az MPLAB SIM szerint pedig jó a megszakítás. Egyébként elég megtévesztő, hogy a korábbi hozzászólásban 16f877, a forrásban pedig 16f887 van használva. Én a 887-re fordítottam le.
Idézet: Valóban megtévesztő, mert én a 16f877-re fordítottam (ez lehet a magyarázata a konfigurációs bitek körüli mizériának). Mindenesetre a szimulációhoz ez nem kellett, így nálam is működött az interrupt. „Egyébként elég megtévesztő, hogy a korábbi hozzászólásban 16f877, a forrásban pedig 16f887 van használva.”
Ha valakit érdekel: az Embedded Adventures honlapján van némi tutorial, és a letöltések oldalon egy jól összeszedett C nyelvű támogatói programkönyvtár.
A támogatott eszközök: FM Radio: AR1000 Temperature sensors: DS1631, TMP75, LM75 Real Time Clock (RTC): DS1307, M41T81S LED display (4 digit): HC4 Digital compass: HMC6352 IEEE 802.15.4 transceivers: MRF24J40 Propriatry transceivers: NRF2401A LCD display Pressure sensors: MS5540 Humidity sensors: SHT15, SHT11 Audio player: SOMO-14D Bootloader az alábbi vezérlőkhöz van (tehát feltételezhető, hogy a támogatói programkönyvtár ezeken fut - ha a hardver erőforrások elégségesek): 16f876a, 16f877a, 16f88, 18f14k50, 18f2455, 18f252, 18f25k20, 18f2620, 18f26k20, 18f452, 18f4520, 18f4550, 18f67j50, 18f87j50 Van benne saját USB CDC és USB HID támogatás is. Az egyetlen szépséghiba, hogy ez valószínűleg Boost C-hez készült, de ettől függetlenül sokat lehet belőle okosodni!
Igen, nálam is előjöttek a konfigurációs bitek helytelenségéből eredő hibák, aztán miután jobban átnéztem a kódot észrevettem, hogy 887- re van írva a program. Módosítva a kontroller típusát már lefordult.
Köszönöm a hozászolásokat!
Valóban elírtam a processzor típusát, elnézést érte. A megszakítás itt is megy, az időviszonyokba gabalyodtam bele.
Sziasztok!
Találtam egy leírást a neten, hogy hogyan lehet viszonylag egyszerűen rávenni egy PIC-ket arra, hogy valamilyen képet megjelenítsen egy tv képernyőn: Bővebben: PIC B&W video Sok minden van ezen az oldalon, de én kapásból ezzel akartam kezdeni. Van némi különbség nálam, mert nekem 16F877A-m van és 4Mhz-es órajelem és persze a c regisztert akarom használni, de szerintem ez nem lehetne probléma. Írtam egy kódot, hogy működjön a dolog, de semmi nem történik, hardver része szerintem jó, a programot megnézhetnétek, hátha valamit nem jól értek, előre is köszönöm:
Szia!
A hiba a 48., 54., 64. sorban van. Itt a movlw a megadott címet teszi a W regiszterbe, nem a címen található tartalmat. A címek 0x20 .. 0x23 közé esnek, tehát nem azokat a kimeneteket vezérlik, amin várod a jelet. Ezek helyett az utasítások helyett a movf cím,w -t kellene használni.: 48: movf COLOR_SYNC,w 54: movf COLOR_BLACK,w 64: movf COLOR_GRAY,w
Köszi szépen!
Átírtam, de még mindig nem az igazi, de már van valami villódzás a kép szélén , én arra gondolok, hogy a micro secundumot nem jól értelmezem. Köszi még egyszer!
Ez a program nem csinál függőleges szinkront a TV-nek, ezért ha a sorokat meg is fogja, a kép futni fog, nem áll meg. PAL TV esetén legalább a 312. sor után kellene képszinkronjelet előállítani, ezzel már talán álló kép is kialakulhatna, bár a teljesen korrekt szinkronimpulzus-sorozat ott van a linkelt oldalon egy ábrával.
A www.cpustick.com honlapról letölthető a StickOS, amelyet többféle mikrovezérlőre és fejlesztői hardverre implementáltak. A programcsomag egyik érdekessége, hogy beépített BASIC fordítót és értelmezőt tartalmaz (a fordító valami közbenső kódra fordít).
A vicces az, hogy olyan processzron/hardveren is fut, amire elvileg nincs is implementálva: ilyen pl. a PIC32MX795F512L (PIC32 Ethernet Starter Kit). Az pedig még viccesebb, hogy a PIC32 USB kimenete a PC oldaláról az FTDI virtuális soros port driverrel működik!!! Hyperterminállal szépen kommunikál. A kapcsolódás után egy Enter-re bejön az üdvözlés és a prompt. Egyelőre gőzöm nincs, hogy hogy működik az egész, de egy egyszerű LED villogtató programot a dokumentációt követve sikerült működésbe hozni. A PIC32 starter kite-eken RD0, RD1 és RD2 a három LED, ezek közül RD0-t fogjuk 1 Hz frekvenciával villogtatni:
A program beírása után run paranccsal indul, CTRL-C-vel pedig megállítható a futás. Help paranccsal segítség kérhető. Ha jól értem a leírást, a beírt BASIC program alapból RAM-ban fut, a save paranccsal írható flash-be. A honlapon már közzétették az újabb verziót, ebben több perifériakönyvtár van, s talán az FTDI drivert is mellőzték. Az új verziót még nem próbáltam.
Tehát a PIC azt mondja magárol a winnek, hogy ő egy ftdi ? Ugyes.
Sziasztok!
Rájöttem a fő problémára, nem a szoftverben és a hardverben volt a hiba, hanem a tv kb. 10 másodperc után kapcsolja az állandó képet és ezt nem vártam meg eddig. Egyébként nekiállok a vízszintes szinkronjel probléma megoldásához. Arra már rájöttem, hogy a 4Mhz nagyon kevés lesz, azt is növelem majd, persze a jelenlegi PIC-emnél ez nem probléma csak cserélnem kell a kristályt. Ha bárkit érdekel ez a dolog (egyszerű videojel PIC-el), akkor amit eddig megtudtam, azt már át tudom adni Nemsoká sorra veszem a színes verziót is, aztán lehet, hogy én is írok egy egyszerű játékot, hanggal képpel vezérlővel és lehet, hogy ehhez már elkészítem az első nyáklemezemet is. Kösz a választ mindenkinek! Üdv!
Sziasztok!
Megépítettem a mellékelt kapcsolást. Ki még nem próbáltam illetve a tápot még nem kötöttem a programozóhoz. A táppal viszont van egy kis gondom. Mindent jól kötöttem be, rámértem a 2 IC-re. A 13,2V helyett én 12,59V -ot méretem az 5V helyett pedig 4,76-ot. Tápnak egy AC/DC 12V os tápot használtam. Tettem fel erről is képet. Ennyi eltérés normális ?? Vagy talán gyenge a táp?? Előre is köszi!!
A tápodra az van írva, hogy 12V. Mérted mennyi jön ki belőle?
Terheletlenül, ha nem kötök rá semmit 19,10V-ot mérek.
A dugasztap 12V-ot ir magara. Neked kell 13.2V.
Ez a majdnem feloldhatatlan ellentmondas csak nekem tunik fel? A PIC programozasi resze elegge kenyes a programozofeszultsegre (aram alig kell, de a feszultseg fontos). A pic maga eljar szerintem a 4.7-bol, de magasabb frekin bizonytalankodhat. Pontos specifikacio az adatlapjaban.
És ha rákötöd a tápokat?
Műszered biztosan jól mér? (Ellenőrizd 3 új elemmel! 4,5V!))
Akkor ha bedugom a tápba 17,80V-ot mérek.
Hétvégén megszivatott a Pickit3. Télen foglalkoztam vele utoljára, akkor ment. Most telepítettem az MPLAB 8.53-at. Ez hozott magával egy "PK3FW_012617.jam" firmware-t. Ezzel minden OK, csak nem lehet debugolni. Rosszul süti be debug módban a procit.
Visszatettem a 8.4-es MPLAB-et, ez tartalmaz egy 'PK3FW_012510.jam' -et. Na ezzel már jól megy. A procik, amivel kipróbáltam: 16F818 16F819 12F627 12F509 12F877 Gondoltam szólok, hátha valaki ugyanezzel szív. Egyelőre ennyi. Még kipróbálom a többi FW-t is.
Hello Watt!
Szerinted úgy megkapnám a megfelelő feszültségeket ha mondjuk 14-24V os DC-t adnék neki?
Az elég. Mi van a műszered ellenőrzésével?
|
Bejelentkezés
Hirdetés |