Fórum témák
» Több friss téma |
Helo
Az LCD szimulátor valóban nagy segítség volt, kösz! Annak segítségével legalább már sikerült lelket vernem a kijelzőbe. Az xlcd-vel még van valami config bajom, mert nem sikerült szóra bírni, pláne, hogy éjszakás voltam a héten. Ha nem megy, lehet, hogy segítséget kérek. Üdv. ![]()
Helo
Látszólag hiába írom át az mcc18\h\xlcd.h -ban a portokat az általam használtra, úgy tűnik, mintha mégis az eredeti portokat macerálná. Ez miért van?
Sziasztok!
A T1SYNC jelző bitet, hogy lehet 1-re állitani? Mert aszinkronba akarom rakni a timer1-et. Elöre is köszönöm a segitséget
Valószínűleg azért, mert az előrefordított XLCD könyvtárat ezzel már nem tudod befolyásolni, annak forrásfájljait újra kellene fordítani.
Első körben azt is megpróbálhatod, hogy az XLCD könyvtár forrásfájljait becsatolod a projektedbe, s akkor egy Build All után a projekttel frissen fordított object állományokat előnyben részesíti az előrefordított függvényekkel szemben.
Ilyen kérdéseknél illene közölni, hogy milyen PIC típusra és milyen programnyelvre vonatkozik a kérdés.
PIC18 és C18 esetén:
PIC18 és MPASM esetén:
Arra még felhívnám a figyelmet, hogy aszinkron módban bizonyos dolgok nem működnek helyesen (pl. a 16 bites kiolvasási mód). Érdemes megnézni, hogy mit ír az ERRATA!
Bocsi elfelejtettem.
16F676 és boost C. Vagy asm be is jó.
PIC16F676 és MPASM esetén így:
(ilyen bugyuta nevet adtak a 2. bitnek, hogy NOT_T1SYNC, a P16F676.INC állományból lehet kilesni.)
Hát ez igy nem megy. A boost C-nek van egy 16F676.h mappája, amibe van egy t1con bits "#define NOT_T1SYNC 0x0002". Nem tudom, hogy kell neki értéket megadni vagy maga ez az 1-es érték?
Ez a definíció a bit sorszáma a T1CON regiszteren belül (nullával kezdődik a számozás a legkisebb helyiértékű biten. Az '1'-es érték ezen a helyiértéken egyébként 4-et ér...
Ez a manusz is hasonló problémával küzdött, ha jól értem, de nagyon alap szinten vagyok angolból.
http://www.microchip.com/forums/tm.aspx?m=470180
Sziasztok,
most kerültem oda hogy mélyebben neküljek. (instabil volt a kimenet) Köszönöm a segítséget, az LPV volt a ludas. Kipróbáltam, ha engedélyezve volt a LPV, és hozzáértem a PGM lábhoz, egyből kiszámíthatatlanul működött. (LPV kikapcsolt állapotban működött normálisan) A mihez tartás végett beszeparáltam azt a 100nF-os kondit a VSS-VDD közé ![]() Sikerült a PIC18-ast is beüzemelni, annak meg az volt a baja, hogy a PK2 /MCLR lábát hiába állítottam 5V-ra, üresjárásban mikor kimértem a PK2-t kiadta az 5V(4.6)-ot ha a PIC MCLR lábára kötöttem akkor meg nem tudtam az 5V-ot kimérni. Így csak nagysokára jöttem rá a hibára. (a 12V-ot programozáshoz előállítja, és ha PIC16-ost kötök rá akkor meg működik az MCLR is helyesen) És így van! PK2-vel használtam=> az MCLR, VDD-t a PK2-vel kezeltem. THX a segítségeket.
Hali!
Írok már ide is, időközben sikerült megcsinálni a PICkit2-t Bővebben: Link (a 12F675-nél se ír ki hibát) képek is vannak a másik topicban ![]() Flowcode-ban (Simpi kitartó segítségével) egy óraféleséget sikerült összedobni, bár a 4MHz-es kristály nem felel meg nagyon a célnak, bár lehet trükközni vele, de nekem nem akar pontos lenni, majd kipróbálom egy 3,2768MHz-es kristállyal, annak a leosztási értékei "kerekebbek" ![]() Viszont ez így túl könnyű. Kicsit assemblyzni is akarok, megtanulni a PIC belső felépítését. Rá is térek a lényegre. Olvasgatom Topi példaprogramját a cikkében, hallottam is már róla, de még mindig nem értem teljesen mi is az a BANK és a TRISA (az "A" gondolom a PortA...) Ebben kellene segítség ![]()
Szia!
A pic16 felépítésénél egy utasításban 7 bitet hagytak a regiszterek címzésére. A 128 lehetőség nagyon kevés (ráadásul a speciális célú regisztereket is ebben a tartományban érjük el), ezért ki kellett valamit találni. A megoldás az lett, hogy a regisztereket Bank -okba szervezték és egy másik regiszterben (a minden lapról elérhető STATUS regiszter 6..5 bitjeivel, RP1 ill. RP0) a bankot ki lehet választani. Itt 4 Bank-ot hoztak létre (16F1xxx -ben már több van), a kiválasztáshoz elég 2 bit. Ha egy regisztert el akarunk érni két módszert alkalmazhatunk: - Direkt címzés - az utasítás említett 7 bites részében van a cím: Előbb be kell állítani a Bank -ot (Banksel makro segít az RP1 és az RP0 bitek beállításában: pl.: banksel TRISA), utána következő utasítások mind a kiválasztott bankot fogják használni, mindaddig amíg másikat nem választunk ki. - Indirekt címzés - a cím az FSR regiszterbe van, de az csak 8 bites - a címzéshez kell a 9. bit is, ez pedig a STATUS 7. bitje - IRP. Ha indirekten szeretnénk elérni regiszter a címének alsó nyolc bitjét az FSR regiszterbe, a legfelső bitjét a STATUS IRP bitjébe kell tennünk, a műveleteket az INDF (látszólagos) regiszterrel kell végeznünk. Ha megszakítás is van a rendszerben, a STATUS regiszter mentése visszaállítása nagyon fontos, hiszen a megszakítás érvényre jutását előre nem tudjuk megjósolni. Arra kell számítani, hogy bármely két utasítás között lefuthat a megszakítási rutin (ha nincs előre megfontolt szándékkel eltiltva - de ez már más fejezet). Ha a bank kiválasztása és a következő utasítás között fut le a megszakítási rutin, a következő probléma jön elő: A megszakítási rutin a feladata elvégzéséhez be kell állítsa a bankot - azaz elrontja a STATUS RP1, RP0, IRP bitjeit. A feladata elvégzése után visszatérve az utasítások nem azt a bankot használnák, amit szeretnénk. Tehát a megszakítási rutinnak a W és a STATUS regiszterek értékét változatlanul el kell mentenie a RAM -ba. A feladat elvégzéséhez be kell állítania a bankot, a feladata végén vissza kell állítania a STATUS és a W regiszeter mentett értékét. Szia
Így már nagyjából érthető.
Köszönöm a részletes leírást!
Sziaszto!
Segitsen nekem valaki. Van nekem egy 16F676 pic sleepbe rakom és timer1-el szeretném ébreszteni. Külső óra nélkül. Ha jól tudom akkor ha a OSC1 és OSC2 lábakra rakok egy 32,678 kHz kristályt "LP módba" akkor sleep közbe is megy a timer1 ha aszinkron modba van. Jól tudom? A T1CON regiszterbe ha jól olvastam a TMR1CS és T1SYNC biteket 1-re kel állitani, hogy aszinkronba legyen. Az INTCON regiszterbe meg a GIE,T0IE biteket kel 1-re állitani.Ha minden igaz. Mit kel még és mi az ami nem kel? Sehogy se tudom ébreszteni a picet. Boost C-be irodik a progi. De igazábol az érdekel, hogy miket kel bekapcsolni. Elöre is köszönök minden segitséget Hali
Le tudnál szokni arról, hogy a -ban, -ben ragok helyett -ba, -be ragokat használsz?
Ha Timer1-el akarod ébreszteni, ahhoz a TMR1IE bitet kell 1-be tenni, nem a T0IE-t.
Úgy látom, hogy:
st_bit(regiszter, bitsorszám); a bit 1-be állítása cr_bit(regiszter, bitsorszám); a bit 0-ba állítása ts_bit(regiszter, bitsorszám); a bit vizsgálata De biztosan van a fordítónak egy leírása, ahonnan ezek kiolvashatók.
Oké látom. A timer1 ezt mind beállitja magátol ami ott van. De azt olvastam itt timer1 ,hogy a T1SYNC-nek is 1-ben kel lennie. Ha lefutattom ezt egy szimulátoron akkor látom, hogy nincs abba. És persze élöbe se müködik. Nem ébred fel. Vagy valamit nagyon rosszul csinálok vagy béna vagyok.
![]()
Na, most került a kezembe adatlap. Konfigurációs bitek hogy állnak? Belső oszcillátort kell kiválasztani órajelkimenet nélkül, tehát az FOSC2..FOSC0 bitek értéke 100 legyen. A kód többi része jónak tűnik, kellene az RA0 lábat billegtetnie.
Szia.
Az oszcilátornál az Internal RC no Clock? Ez a WinPicben INTOSC, no CLKOUT [100]. Ezzen kell, hogy álljon? A Timer1 is Internal clock (Fosc/4) legyen vagy Transition on T1CKI? Ebbe a C-ben Internal RC no Clock és Internal clock (Fosc/4) van. Annyit csinál hogy villan egyet és sleepbe megy.De fel nem ébreszti. Valami nem kerek nekem ![]() A 32kHz kristály az kell?
T1CON-t 00001111-re kell állítani, tehát a T1CKI-ről menjen. Internal RC no Clock a konfig biteknél.
Kár volna feladni, a PIC18 sem lesz egyszerűbb! Próbálj inkább pontosabb, célirányosabb kérdéseket föltenni! Az is fontos, hogy ne akarj toronyórát lánccal - az alapokat átugorva, hanem türelmesen és következetesen először azokon rágd át magad.
MÜKÖDIK
![]() ![]() Még egy kérdés ![]()
-ban, -ben ragokra megint nem figyelsz!!!
4MHz-ről megy. Alvás közben áll, attól alvás. Alváskor csak a Timer1 működik a kvarc sebességével.
Lenne megint egy kis kérdésem assembly téren
![]() Szintén Topi cikkéből kiindulva. Idézet: „ CBLOCK 0x20 ;A 0x20 egy szabad memória rész kezdő címe T1 T2 T3 ENDC ” A kérdésem: a "CBLOCK" rész az a deklaráció kezdetét jelenti? És a 0x20 memóriarészen lesznek a változók letárolva? Ez a memóriacím minden PIC-en ugyanaz? Tehát ezt beleírhatom egy 18F1320-as PIC-be is?
CBLOCK az konstans blokk kezdetét jelenti, ami kiválóan használható a memóriacímek elnevezésére is. Nem a 0x20 memóriarészen, hanam a 0x20 memóriacímtől kezdődően lesznek a változók.
Nem ugyanaz, van néhányféle (3-4), mindegyik kontroller adatlapjában benne van, hogy abban hol kezdődik. De a 16F és a 18F memóriaszervezése több ponton eltér, nem mindig lehet csak simán átvinni egyik helyről a másikra a kódot.
Így már minden világos, az adatlapban majd megkeresem hogy hol kezdődik. Köszi az infót!
Sziasztok!
PIC 16F690-re kellene 100Hz-es sinus jelet megvalósítanom. Tud ebben valaki segíteni? A választ előre köszönöm! Üdv.: Brezoli |
Bejelentkezés
Hirdetés |