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 Ezer hála neked és mindenkinek
Még egy kérdés Most mekkora órajellel megy a pic? A saját 4 MHz sebességével megy akkor amikor nem alszik? Alvás közbe meg a negyede? Igy akkor LP modba nem lehet használni ébren? pl.: timer0-át vagy ezt a timer1-et
-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 |