Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
A 16F57 adatlapja alapján nekem ez nem tűnik megoldhatónak.
Megoldható, mert meg volt oldva. Azt kéne reprodukálni.
én valahogy így csináltam: prescaler: 265, tmr0- timer, MAIN 7. bit lefutó -> tmr1 regiszter nőljön 1-gyel ... CALL TEMPO, amikor kell nézni -> TEMPO tmr1-et lementem kimenet a láb 1-es a kimenet várok, míg feltöltödik a kondi a 270-esen keresztül (számláló csökken míg 0 nem lesz, akkor továbbmegy, egyébként vissza a csökkentéshez) bemenet a láb beolvasom a lábat minden cél nélkül(ha nem olvasod be nem működik, nem tudom miért...) RETLW 0x00 folytatódik ... GOTO MAIN END ha a lábon lefutó él van lementem a tmr1 állapotát start idő - stop idő = időállandó a probléma az, hogy a lefutó élet nem lehet érzékelni valamiért ( a feltétel nem teljesül, kicsit nagyon pereg a bemenet) gondolkoztam azon, hogy integrálom a bemenetet (ha 1 -> +1 a szamlalo2- höz, ha 0 akkor -1 feltéve hogy nem nulla) ha kisebb mint 2 -> 0-nak veszem a bemenetet, ha nagyobb mint 1 akkor pedig 1-nek az adott pillanatban és erre lefutó élezek van egy jelző led, ami jelzi, hogyha a bementet olvasása 1-es (világít) vagy nulla (nem világít) viszont ez nem villog, de világít, amikor kell (mondjuk nem tudom megmondani ezt biztosra, mert a "műszerem" valami 32 Hz-ig látja a villogást..., a pic meg ugye gyorsabb)
A korábbi programhibáidból kiindulva szerintem valamit nem jól csinálsz, de ne kérd, hogy mi találjuk ki, minden infó nélkül, hogy mit.
Kész megoldásokat kérsz, amik nincsenek. Ha jól értem a rajzon az az áramkör van, ami eddig is volt a C-s PIC-en? Nem változtattál semmit? Biztosan úgy működött régen ahogy most Te gondolod? Jó lenne, ha mi is tudnánk mit kéne mérned!
Igen, ez volt rajta. ez egy állítási lehetőség volt, hogy az állapototk milyen gyorsan váltogassák egymást.
Hogy hogyan működött? azt nem tudom, nincs meg a régi program. ezért kéne valamit kitalálni. És mint ahogy írtam, nem kész programot kérek, mert tudom hogy nincs. egyébként csak ötleteket kértem, hogy egy ilyen kapcsolás esetén a potméter állásával arányos regiszter értéket hogyan lehetne csinálni, a kitétel meg szért volt, hogy ne ilyen választ kapjak rá: írj programot...
Nos a korábbi leírásod szerint nem értem pontosan amit próbáltál, ezért ha ugyanazt írom(csak érthetőbben
![]() ![]() Naszóval. Első körben fel kell tölteni a kondit, ahhoz pedig a lábat kimenetnek kell konfigolni. Ez a 270ohm-on keresztül gyorsan megvan, de időt kell hagyni, hogy megtörténjen rendesen(most nincs kedvem számolgatni, ezt rád bízom). Ha ez megvan, akkor a lábat bemenetnek kell konfigolni, és várni, míg a kondi az 1megás poti állásától függően kisül. Ha a láb L szintű, akkor ez megtörtént. Nem lehet prell, mert csak egyszer billenhet át a bemenet, utána újból tölteni kell a kondit a következő periódushoz. Ezt a ciklust be kell építeni a fő ciklusba és folyamatosan figyelni, kezelni a lábat. Egy jelzőbit kell az állapot jelzésére a főprogramban. Ezt a bitet a feltöltéskor törlöd, a kisütés érzékelésekor beállítod, jelezve, hogy itt az idő a ténykedésre... Nem látom, hogy ez miért ne működne, tehát rajta!
úgy néz ki megvan a baj.
Ilyet ne csináljatok (legalábbis 16F57-tel: movf regiszter, 0 ;regiszter ->w :violent:rlf w ,0 :violent: ; w-t w-ben shifterli, eredmény w-ben
Mintha már említve lett volna, hogy ne használjunk számokat, ha lehet betűket is!
![]() 0=W, 1=F ........................
Eszünkbe sem jutott, ugyanis az RLF utasításnál az adatlapban ott van, hogy csak fájlregisztert lehet balra forgatni vele. Amit az RLF w, 0 csinál, az a következő: balra forgatja a nullás regiszter tartalmát, mivel a w konstans, értéke 0. A nullás regiszter pedig az INDF regiszter, ami az indirekt címzés adatregisztere. Hogy valójában mit forgat balra, az attól függ, mi van az FSR regiszterben. Ez pedig bekapcsolás után véletlenszerű értéket vesz fel. Tehát előre nem látható, hogy mi lesz a W-ben a fenti utasítás hatására.
hogy a work regiszter nullás-e, azt én nem tudhatom, minden esetre ez volt a baj. Amúgy remélem, hogy amit leírtál, azt legalább te érted, minden esetre nem fgom használni a forgatást a W- ben
Idézet: De tudhatod, mert amikor a kódban te valahová írsz egy w-t egyedül, akkor az nem a work regisztert jelenti, hanem az MPLAB kicseréli a w-t 0-ra, mivel a w konstansként nullának van definiálva. Ha pedig ez vessző előtt (fájlregiszter helyén) áll, akkor a parancs a 0. fájlregiszterrel fog csinálni valamit, ha vessző után áll, akkor pedig azt jelenti, hogy a work regiszterbe fog kerülni a művelet eredménye.„hogy a work regiszter nullás-e, azt én nem tudhatom, minden esetre ez volt a baj. Amúgy remélem, hogy amit leírtál, azt legalább te érted, minden esetre nem fgom használni a forgatást a W- ben” Tehát a work regisztert nem lehet forgatni, mert az nem létezik fizikailag a fájlregiszterek között a kisebb (10F, 12F, 16F) piceknél. Ha a work regiszter tartalmát kell forgatni, akkor muszály először beírni valahová, és utána azt a fájlregisztert forgatni, aminek az eredményét már lehet a work-be tenni. Pl. így: MOVWF TMP RLF TMP, W
Sziasztok!
Lenne egy technikai jellegű kérdésem! Van egy 16f877-es próbapanelem és beszereztem hozzá egy 2x4-es billentyű-mátrixot! Hogyan tudnám hozzá csatlakoztatni? ![]() Nem csináltam még ilyet abszolút, úgyhogy le tudnátok "részletesen" írni, hogy mit is kellene csinálnom??? (Mit és hova kell forrasztani?) Előre is köszi! :vigyor2: Zotya
Az egyszerűség kedvéért belinkelem a 16f877-es doksiját:
http://www.stud.u-szeged.hu/Toth.Peter.3/fd1.pdf
Dehiszen a demo panelen van billentyűzet, az nem jó? Vagy mi okból akarod ezt csatlakoztatni?
Egyébként ha felnézel az oldalamra, akkor a PIC infók között találsz billentyűzetes példát. Az ne zavarjon, hogy 18F-re készült, a lényeget kell megérteni belőle.
Hali!
Bocs a késő reakcióért! Nem, egy külső 2x4-es mátrixot raktam hozzá, mert az lesz a végső készüléken is és így egyszerűbb tesztelnem! Elnézést a kellemetlenségért, csak egy kis időbe telt, mire rájöttem, hogy a proci melletti lyukakat éppen nekem találták ki! ![]()
Sziasztok!
A Timer2 akarnám beüzemelni, de nem megy. csak szimulátoron keresztül próbálgatom. Nem hajlandó működni. Nem sok paramétere van így nem tudom mi lehet a baj. BSF T2CON,T2CKPS0 ;előosztás nincs BSF T2CON,T2CKPS0 BSF T2CON,TMR2ON ;Timer indítás Ezután el kéne kezdenie a TMR2-őt inkrementálni az órajel ütemében, nem?? Vagy valamit lehagytam?
Ezzel is kipróbáltam(a neten találtam). De nem megy. Valaki tudna segíteni?
;TMR2 INICIALIZÁLÁSA CLRF T2CON ;STOP TMR2, 1:1 el!osztó, 1:1 utóosztó CLRF TMR2 BSF STATUS,RP0 ;BANK1 CLRF PIE1 ;periféria IT-k tiltása BCF STATUS,RP0 ;BANK0 CLRF PIR1 ;periféria IT jelz!bitek törlése MOVLW b'1110010' ;utóosztó 1:15, el!osztó 1:16 MOVWF T2CON ;TMR2 kikapcsolva BSF T2CON,TMR2ON ;TMR2 indítása ;TMR2 figyelés pollinggal T2_TULCS_TESZT BTFSS PIR1,TMR2IF ;túlcsordult? GOTO T2_TULCS_TESZT BCF PIR1,TMR2IF ;túlcsordult, jelz!bit törlése ![]() ![]() ![]()
Milyen szimulátorral nézed? MPLAB-ban ha csak ezt az egy sort teszem a kódba, akkor is elindul a Timer2:
Melyik chip?
MPLAB-bal nézem én is (7.3).
PIC16F916 adatlapja szerint van timer2-je...
Na megvan a hiba... Olyan utasítás után próbálgattam, amelyik másik Bankban volt
![]() ![]() Pedig már jártam így... Azért köszönöm a segítséget!
Hy!
Tud valaki egy egyszerű, működő példaprogramot 16F84-es mikrokontrollerhez? Ha lehet .asm formátumban! Előre is kössz !
Sziasztok!
Elkészült az égetőm. A következő lépés beszerezni néhány PIC-et és könyvet (Kónya László könyve). Kérdéseim: -Ír-e PIC-re példákat a szerző, melyik PIC-et vegyem a tanuláshoz? -16F84-re írt programot nagy varázslat átteni 16F628-ra, illetve 16F628A-ra? Egy LC-mérőről van szó, ami még 16F84-re íródott. Előre is köszönöm!
1, Igen vannak példák a Kónya könyvében, néhol kicsit hibásak. Jól használható könyv egyébként.
2, A pénztárcádhoz illően vegyél PIC-et meg a feladattól függ hogy milyenre van szükséged. Általában kezdésnek jó a 16f628a. Legyen tartalék is belőle, bár nehéz tönkretenni őket. Egyszer egy 16f627-re 18V-os tápot kötöttem véletlenül. Ment vagy 10s-ig. 3, Át lehet írni. Semmi problem, csak kicsit figyelmes munka. A ChipCAD oldalán a letöltéseknél találsz egy magyar nyelvű leírást róla.
Sziasztok!
Nincs valami magyar nyelvű oldal ami ír valamit a pic programozásról? Pascalban lehet pic programot írni? Előre is kösz. Tamás
Ez egy elég jó leírás. Igaz, hogy 16F84-ről szól, de az alapokat tisztázza.
Persze a linket meg lehagytam: http://www.freeweb.hu/majki/elektro/pic/base/pic.zip
Én még nagzyon kezdő vok ezen a téren.De nem tudom hogy mivel kezdjem. Valaki tudna rajtam segiteni???
Szerintem itt kéne elolvasnod egy cikket:
www.pic.hobbielektronika.hu/kapcs_pic-ekrol_kezdoknek.html Aztán potyo és a korábbi linkeken található infókat megérteni, főleg egy adatlapot, pl. 16F84-esét kezdésnek, amit az oldalamon is megtalálsz.(kattints a nick-emre). Érdemes a terminal elektro fórumon is keresgélni. Érdemes Kónya László honlapjára rákeresni. |
Bejelentkezés
Hirdetés |