Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   803 / 1216
(#) Pali79 válasza giskard hozzászólására (») Jún 2, 2016 /
 
Megmondanád miért volna ez jó neked? A megszakításnak pont az lenne a lényege, hogy nem tudjuk mikor jön "szubrutin" hívás és ugyanonnan folytatjuk ahol abbahagytuk. Szerintem nem várt hibákhoz vezetne. Ha leírod mi a cél talán lehet arra jobb megoldást is kitalálni.
(#) giskard válasza Pali79 hozzászólására (») Jún 2, 2016 /
 
pl. detektálom bejövő impulzus sorozatok végét int0 megszakítással (3 bemenet).
Ha egy bizonyos bemeneten kevesebb impulzus van mint kellene kiértékelés eldobandó ha megfelelő számú,
kiértékelő rutin. Ezt a folyamatot kényelmesen meg lehetne oldani, ha a program oda térne vissza ahova én akarom.
(a válaszodból azt szűröm le, hogy nem tudod )
(#) Elektro.on válasza giskard hozzászólására (») Jún 2, 2016 /
 
Én sem egészen értem a dolgot. Azóta gondolkodom rajta mire kell ez neked miota írtad.
Int0 honnan tudja, hogy az utolsó bejövő impulzus volt?

T1G lábra gondoltál? Azzal egy impulzus hosszát tudod lemérni számlálón keresztül.
A hozzászólás módosítva: Jún 2, 2016
(#) Pali79 válasza giskard hozzászólására (») Jún 2, 2016 /
 
Fejből nem tudom, de ugyebár megszakításnál eltárolja valahova, hogy honnan ugrott el, így ha ezt felülírod akkor meg tudod oldani. Viszont sokkal jobb megoldás ha a megszakítás eredményét a főprogramban vizsgálod és nem a megszakításban. Tehát letárolod az impulzust, kilépsz a megszakításból, megnézed, hogy az eredmény jó-e neked vagy sem.
(#) Elektro.on válasza Pali79 hozzászólására (») Jún 2, 2016 /
 
Egy 8 színtű Stack ban tárolja a címet. Én azt nem piszkálnám. Inkább a javaslatod második fele lenne helyes a számára.
(#) Pali79 válasza Elektro.on hozzászólására (») Jún 2, 2016 /
 
Szerintem is az a korrekt megoldás, csak jelezni akartam, hogy az is megoldható, de nem véletlen van úgy kitalálva ahogy van.
(#) Zsora válasza Elektro.on hozzászólására (») Jún 2, 2016 / 1
 
PIC16-nál a verem nem elérhető szoftveresen, nincs PUSH ill. POP utasítás, mint pl. PIC18-nál. Tehát nem tudod manipulálni ilyen módon a visszatérési címet.
(#) giskard válasza Elektro.on hozzászólására (») Jún 2, 2016 /
 
Konkrétan egy 58 lábú ismeretlen lcd kijelzőt kellene áttenni ledes kijelzésre.
Az lcd-t 2 db pcf2111 ic hajtja meg, ennek 3 vezérlő bemenete van (enable,clock,data).
Gondoltam ezeket a bemeneteket bevezetem egy PIC-be és visszafejtem.
Folyamatosan jönnek az impulzusok de egy csomag vége az enable vége.
Egy enable ciklus alatt 34 óraciklusnak kellene lennie, de periodikusan van amikor kevesebb
Tehát utólag kellene kiértékelni és elég gyorsan mert az impulzusok jönnek mint a "meszes".
(a piszkáláshoz: PIC-nél aki asm-ban programoz elég sokmindenre kell figyelnie, eggyel több vagy kevesebb már se nem oszt se nem szoroz (én pl. szeretnék mindenhez hozzáférni)).
(#) Hp41C válasza giskard hozzászólására (») Jún 2, 2016 /
 
A 16F sorozatnál nem, a 16F1x és 12F1x valamint a 18F -nél megoldható.
(#) giskard válasza Hp41C hozzászólására (») Jún 2, 2016 /
 
Megoldottam. 16F sorozatnál is megszakítás végén odaugrok ahova akarok (kis trükk) és továbbra is rendesen működik a megszakítás is.
A hozzászólás módosítva: Jún 2, 2016
(#) Elektro.on válasza giskard hozzászólására (») Jún 2, 2016 /
 
Értem. Hát emberes feladat lesz visszafejteni. Én biztos nem kezdenék ilyenbe. Inkább túrnám a netet adatlap után , hogy ne legyen ismeretlen az az Lcd.
De azért sok sikert hozzá! Majd írd meg mire jutottál.
(#) sonajkniz válasza giskard hozzászólására (») Jún 2, 2016 /
 
Megérdeklődhetem, hogyan oldottad meg?
Néha nekem is jól jött volna már.
(#) giskard válasza sonajkniz hozzászólására (») Jún 2, 2016 /
 
minidemo:

ORG 04H

;TMR0
BCF INTCON,TMR0IF
INCF ACC_1,F ;csak segéd tároló idő növelés
BTFSS STATUS,Z
RETFIE
;lényeg:
BCF INTCON,GIE
goto KEZD ;RETFIE helyett

KEZD
BSF INTCON,GIE
.
.

Tehát bárhova ugorhatsz ahova akarsz. GIE manipuláció nélkül nem fogadna újabb megszakítást
A hozzászólás módosítva: Jún 2, 2016
(#) eSDi válasza giskard hozzászólására (») Jún 2, 2016 /
 
Üdv!

Ha megnézed a pcf2111 adatlapját, akkor láthatod, hogy CBUS-t használ. Ez olyan mint az I2C. Ha találsz róla olyan adatlapot amiben a protokoll és a parancsok is le van írva, máris nem kell kódfejtőst játszanod.
(#) pajti2 válasza giskard hozzászólására (») Jún 2, 2016 /
 
És mit kezdesz azzal a visszatérési címmel, ami már a veremben van? Csak azért, mert a fordító lefordítja, még nem jelenti azt, hogy nem lesz verem túlcsordulásod.

Ha valójában semmire sem kell neked az interrupt, hagyd a fenébe az interruptot. Lehet bejövő jeleket aszinkron is vizsgálni.
(#) giskard válasza pajti2 hozzászólására (») Jún 2, 2016 /
 
A felesleges veremcím egyszerűen kiesik, eltűnik (itt működik előttem egy órája)
Lehet, csak kényelmesebb az enable végét egy megszakítással detektálni (egyszerűbb lesz a program).
(#) benjami válasza giskard hozzászólására (») Jún 2, 2016 /
 
Régen 18F-re én is csináltam hasonlót, bár azon hozzáférhető a verem: preemtív multitask PIC18F-el
(#) sonajkniz válasza giskard hozzászólására (») Jún 2, 2016 /
 
Ez tetszik. Ki fogom próbálni.
(#) zenetom válasza giskard hozzászólására (») Jún 2, 2016 /
 
Idézet:
„A felesleges veremcím egyszerűen kiesik, eltűnik”

Hát, szerintem ilyen nincs.
Egyszerűen csak nem veszed észre, hogy túlcsordult a verem. Mi a PIC pontos típusa?
(#) giskard válasza zenetom hozzászólására (») Jún 2, 2016 /
 
F737. Nehéz nem észrevenni, mert látom. Egy kijelző számol 1 től 10-ig másodpercenként a fő programban.
A megszakitás 8 másodpercenként elsötítéti 8 másodpercre és mindig 1-ről kezdi ahol a főprogram indul.
(#) zenetom válasza giskard hozzászólására (») Jún 2, 2016 /
 
Ilyen PIC nincsen is.
Szerk.: na, mégis.
A hozzászólás módosítva: Jún 2, 2016
(#) Hp41C válasza giskard hozzászólására (») Jún 2, 2016 /
 
Ezt inkább ne terjesszük!
A programodban több szinten hívhatsz eljárást és bárhol bekövetkezhet a megszakítás. Így nem tudod előre milyen mélységben áll a stack a megszakítás elfogadásakor. Az valóban igaz, hogy a felesleges címeket kilépteti a stack, de köztük értékes is lehet. Egy bonyolultabb programban problémát jelethet, ha nem jó helyre kerül a vezérlés.

Ha már ilyen feladatra kerül a sor, használjunk 18F -et.

A push utasítás helyet csinál a stack -on
A TOSU, TOSH, TOS regiszterekkel módosítani lehet a stack tetején levő értéket. Ha így egy programrész kezdőcímét tettük a stackra a megszakítási rutinban (esetleg máshol), kilépéskor a retfie a módosított címre tér vissza. Persze meg kell oldanumk valamikor, hogy a feltett plusz bejegyzések lekerüljenek a stack -ról. Két megoldás lehetséges:
A pop utasítás leszed egy szintet a stackról és "elvész" az adat.
Egy return utasítással vissza lehet térni a "régen félbehagyott" munkára.

Használtam ilyen megoldást egy DDS jelgenerátorban. A jelalak előállítása 100 százalékban igénybe vette a 18F252 -t. A parancsok az UART -on keresztül érkeztek. A vételi megszakítás "félbehagyatta" a jelalak előállítását, áttért a parancs értelmezőre. Addig várt, amíg beérkezett a teljes parancs, feldolgozta, elvégezte a beállítást, válaszolt és visszatért a jelalak előállításához egy return -nel.
A hozzászólás módosítva: Jún 2, 2016
(#) Hp41C válasza zenetom hozzászólására (») Jún 2, 2016 /
 
(#) zenetom válasza Hp41C hozzászólására (») Jún 2, 2016 /
 
Igen, elgépeltem a gugliban, és nem persze nem vettem észre.
Ez alatt viszont mit értesz?
Idézet:
„Az valóban igaz, hogy a felesleges címeket kilépteti a stack”

Mármint mikor?
(#) don_peter válasza nagym6 hozzászólására (») Jún 2, 2016 /
 
Köszi, könnyebb volt az egészet táblázatba tenni.
0-150fok-ig bevittem, elvileg így jó lesz.
Elektro.on: Motorba van, de nem a motor ad neki feszültséget.
Csak a motor hője változtatja az ellenállását.
Más védelemre mi szükség lehet?
(#) giskard válasza Hp41C hozzászólására (») Jún 2, 2016 /
 
Pedig az ilyesmiket terjeszteni kell , hogy a lehető legtökéletesebben ismerjük meg a PIC-ek működését.
Hogy ki, hogy használja, az a saját döntése.
(#) Elektro.on válasza don_peter hozzászólására (») Jún 2, 2016 /
 
Én az esetleges induktív lökésekre gondoltam. Nem tudom milyen mdon van beépítve a motorba. Pálya kezdő koromba össze futottam egyszer egy ilyen motorral de annak már huszon éve. Nem emlékszem rá.
(#) Zsora válasza zenetom hozzászólására (») Jún 3, 2016 / 1
 
A stack nem léptet ki semmit. Felülíródik az új adattal.
A cím túlcsordul és már használt cellába történik írás. Mindig a legrégebbi adat (visszatérési cím) veszik el.
(#) zenetom válasza Zsora hozzászólására (») Jún 3, 2016 /
 
Jajj, igaz, valóban.
Viszont szerintem ez így akkor sem valami szép megoldás.
Bár, ha nem lesz bővítve a program, akkor hobbi célra jó lehet.
(#) Hp41C válasza giskard hozzászólására (») Jún 3, 2016 /
 
Csak át ne vidd fejlettebb típusra (PIC18 stack ellenőrzés bekapcsolva, PIC24, dsPIC30, dsPIC33, PIC32) vagy más mikrokontroller családra (AVR, I0831 - I8051) - Ugyanis stack hiba miatti kivételkezelésre futhat, resetelődhed, de ami még rosszabb, végigírhatja az adatmemóriát azokon a típusokon, ahol nincs szétválasztva.
Következő: »»   803 / 1216
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem