Szerző |
Üzenet |
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
tubybb írta: Ez azonban nagyon gáz, mert akkor minden picem programját úgy kell kezdenem, hogy minden gen. purpose regisztert nulláznom kell. Drága bájtokat vesztek. Nem kell mindet, csak amit muszáj. Nem olyan sok bájt az, csak néhány CLRF xxx. Vagy ha több regiszter van, akkor egy kis ciklus, és indirekt címzéssel törölni.
|
pén. feb. 09, 2007 23:35 |
|
|
tubybb
gyémánt tag
Csatlakozott: vas. feb. 05, 2006 19:53 Hozzászólások: 1170 Tartózkodási hely: Győr
|
MEGVAN!!!!
Az volt a gond, hogy az általam definiált regisztereket (general purpose reg.) a reset nem nulláza le!
Emiatt nem a megfelelő műveletet, hanem olyant végzett el ami kinullázta a munkregiszteremet. Onnan kezdve pedig hiába, hisz ha nullákkal dolgozunk akkor nullákat kapunk.
Ez azonban nagyon gáz, mert akkor minden picem programját úgy kell kezdenem, hogy minden gen. purpose regisztert nulláznom kell. Drága bájtokat vesztek.
|
pén. feb. 09, 2007 23:29 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Akkor rajta, hidd el megéri, még ha lesznek számodra érdektelen dolgok is!
|
pén. feb. 09, 2007 18:18 |
|
|
prometheusz
platina tag
Csatlakozott: csüt. feb. 08, 2007 11:58 Hozzászólások: 605 Tartózkodási hely: csajárda ricse-köcsöge
|
valóban még csak beleolvastam...
még nem olvastam végig
|
pén. feb. 09, 2007 13:52 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
prometheusz
Már ne haragudj meg a kérdésért, de tényleg elolvastad ezt a topicot? Én magam többször leírtam kezdőknek mit javaslok, és többször belementünk igen kezdő kérdésekbe is, és ezért furcsálom a feltett kérdéseidet!
|
pén. feb. 09, 2007 13:40 |
|
|
prometheusz
platina tag
Csatlakozott: csüt. feb. 08, 2007 11:58 Hozzászólások: 605 Tartózkodási hely: csajárda ricse-köcsöge
|
Köszönöm a választ.
Sajnos angolul nem tudok, gondolom a chipcad linkjein is sok angol leirás lenne...
Most tanuljak meg? De lusta vagyok...
Amit irtál át fogom nézzni.
Ha valaki tud még magyar leirásokat mikrokontrollerekről megköszönném.
Rég foglalkoztam áramkörökkel, most ujra belekezdtem, vettem is kezdésnek egy ISD1620
-ast a ChipCadtól, de minden kérdésemre az a válaszuk hogy alkalmazzak mikrokontrollert.
Én meg legszivesebben visszakérdeznék, hogy milyen rollert?
Itt meg mindenféle égetést meg hasonlokat olvasok s probalom összerakni hogy egyáltalán mi az.
Jol tudom h egy lebutitott mikroprocesszorrol van szó?
És a Basic Bélyeg ako rmost mikroprocesszor vagy mikrokontroller?
Ugyhogy jöhetnek a magyar nyelvu leirások linkjei az alapoktól... ))
|
pén. feb. 09, 2007 13:07 |
|
|
NickE
platina tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 754
|
Klavi
Jó mélyre nyúltál a fórumon, igaz már néhány éve írkálok ide.
Néhány hónapja kitaláltam, hogy pörögni akarok, mint a ringlispiel, tehát az nem frankó, hogy néha elvagyok hónapokig egy bonyolultabb projectel, ezért egyre jobban "forszírozom" a C nyelv használatát és az összetett egy időben több feladat végrehajtását igénylő feladatoknál az OS használatot.
C -t már rég tanultam suliban, tehát az alapok megvoltak már évekkel korábban is, de valahogy PIC -et mindig asmben kódoltam. De most már bevetettem élesben is és hát lényegesen pörgösebben lehet C-ben kódolni. Sajnos az OS -t még nem használtam, mindig van fontosabb dolog, így csúszik a dolog, de mindenképp elő kellesz venni. Mondjuk az alapok itt is megvannak, mert Delphiben szoktam szálakat programozni igen gyakran, szóval az elvek megvannak, csak kéne egy szabad hét...
|
pén. feb. 09, 2007 10:02 |
|
|
tubybb
gyémánt tag
Csatlakozott: vas. feb. 05, 2006 19:53 Hozzászólások: 1170 Tartózkodási hely: Győr
|
mióta a multkor mondtad azóta az LVP mindig offon van.
Poweron timerrel próbáltam ígyis, úgyis. de mindig ugynaz volt a helyzet.
Milyen kódra gondoltál? Programkódra? Elküldöm emilben.
|
csüt. feb. 08, 2007 23:55 |
|
|
klavi
ezüst tag
Csatlakozott: szomb. máj. 27, 2006 21:39 Hozzászólások: 36
|
NickE írta: vki használt már oprendszert PICen?
A NickE által korábban felvetett témához szeretnék hozzászólni, bár én nem PIC-ben utazok.
Mivel a uCOS-t már kipróbáltam (egy hobbiprojektben), ill. egy céges projektnél kezdek belebonyolódni a "hagyományos" programszervezésbe, erősen gondolkodok OS-re váltani.
Eddig munkáim során kialakítottam egy "szegény ember op.rendszere" nevű módszert, ahol szintén taszkokban gondolkodok. A probléma ezzel mindössze az, hogy a taszkoknak kell az állapotukat megjegyezni és átengedni a futást a többinek.
Bizonyos feladatoknál ez egyszerűbb, míg másoknál bonyolultabb megvalósítani.
Pl.
1. A soros port kezelése elég egyszerű: megszakítás vezérelt, amely pufferbe dolgozik. A főciklusban mindig megnézzük van-e bejött adat. Ha van feldolgozzuk, ha nincs, mehetünk tovább.
2. Időzített alapú feladatok, pl. LED villogtatás. A kezelő taszkot adott időnként, mondjuk 10ms-ként futtatjuk le (amit a timer indít), és a beállított be/kikapcsolási idő szerint villog. Ehhez kell még néhány üzemmódbeállító függvény, és csak ki kell adni a parancsot, hogy 100ms ideig be-, 900ms ideig legyen kikapcsolva, és ettől kezdve a LED kezelő taszk feladata a villogtatás.
Hasonlóan lehet az egyszerű zümmeres dallamlejátszást megcsinálni, ott egy adattömböt (hangmagasság-időtartam) adunk át a taszknak lejátszásra, és amíg le nem jár a dallam, vagy új parancsot nem kap, játssza a dallamot.
stb.
A jelenlegi futó projekt egy adatgyűjtő készülék, amely folyamatosan lekérdezi az RS-485 buszra kötött slave egységeket (akár 200-at is), a kapott adatokat egy SD kártyára menti, amelyből a második soros portra kötött GPRS modemen keresztül internetről lekérdezhetővé kell tenni az adatokat. A probléma a modem használatakor kezdődött, ahol jónéhány modemparancsot kell kiadni, amelyekre a válaszidő a pár msec-től kezdve akár 10-20 sec-ig terjed. A hibaválaszokat szintén tudni kell kezelni, és a korrekt működéshez elég részletesen ki kell fejteni minden ágat. Állapotdiagrammal ez még le is írható (jó nagy ábra lesz...), de ennek implementálása OS nélkül nagyon nehéz, mert állandóan meg kell szakítani a működést és valahogyan megjegyezni, hogy hol tartunk. (Hiszen a kontrollernek sok más feladata is van). OS alatt ez egyszerű szekvenciális programot jelent, ha a modem válaszolt, akkor egszerűen jön a következő utasítás, stb.
A másik problémás eset pedig a memóriakártya, amelyben tudni kell keresni, és több hónapi begyűjtött adatmennyiség esetén több másodperc ideig is eltart a keresés (ez gyakorlati tapasztalat). Ezidő alatt a kontroller a többi feladatával mi lesz? (Persze megszakítás alapú feladatok ezalatt még működnek, de nem lehet sokmindent a megszakításokra rápakolni...)
OS alatt: a szabadidőben megy a keresés a flashben, a szükséges pillanatokban pedig az egyéb bejött eseményeket feldolgozzuk, aztán folytatódhat tovább a flash-művelet.
Mint ahogy kezdtem, a uC-OS-t már kipróbáltam Atmel ATmega128 kontrolleren (128k flash, 4k RAM, 16MIPS). Elsőnek nem használtam külső RAM-ot és éppen hogy elég volt a RAM igény. Az alkalmazás egy MIDI vezérlő berendezés volt, amely egy elektromos orgonabillentyűzetet és egy hangmodult kötött össze. A program 7 taszkot tartalmazott:
- főtaszk (statisztika kiírás VT102 terminálra)
- MIDI input 1. (sorosport) kezelő, feldolgozó
- MIDI input 2.
- 6x4 billentyűmátrix kezelő
- user i/o interfész (menükezelés: nyomógomb-LCD, sorosporti VT102 debugterminál a PC-hez)
- OS statisztika (rendszer)taszk
- idle (üresjárati) (rendszer)taszk
Mivel minden taszk saját stack-et igényel és az OS is lefoglal magának kb. 2kB ramot, nagyon gyorsan elfogyott a 4kB belső RAM. Ha spóroltam a stack mérettel, előfordult hogy virtuóz muzsikálás esetén túlcsordult a stack és szétfagyott a rendszer. Miután felpakoltam 64k külső ramot, bőven lehetett méretezni a puffereket és stack területeket...
A VT-102 debugterminál-ról tudok mutatni egy képet, az alsó sorban a stack-használatot lehet látni bájtban.
VT102 kép link itt
Összességében meg vagyok elégedve a uC-OS-sel, a baj mindössze az, hogy csak belső RAM használatával nem túl sok taszkot lehet létrehozni, a másik pedig, hogy nem ingyenes. Ezért gondolkodok a FreeRTOS használatán, ez ugyanis nagyon kicsi erőforrásigényű és teljesen ingyenes. Ezzel már a 4kB belső ramból kényelmesen lehet megoldani a feladatokat. Vagy szükség esetén át lehet váltani a lábkompatibilis ATmega1281 kontrollerre (8KB belső RAM), ami már megjelent a piacon.
Kissé hosszúra sikeredtem, remélem tudtam támpontot adni...
Klavi
|
csüt. feb. 08, 2007 23:41 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
Kód LVP Ha a watchdogot bekapcsolod, akkor annak a számlálóját törölni kell rendszeresen, mert ha nem törlöd, és túlcsordul, akkor indul újra a pic Power On Timer-t próbáltad bekapcsolni
|
csüt. feb. 08, 2007 23:10 |
|
|
tubybb
gyémánt tag
Csatlakozott: vas. feb. 05, 2006 19:53 Hozzászólások: 1170 Tartózkodási hely: Győr
|
Megin van gondom.
Már működik rendesen a PIC-em. Úgy használom, hogy induláskor beállítja a amiket be kell hogy állítson, és üres utasításokat hajt végre, és akkor változtatja a 3 kiválasztott kimenetet, ha az RB0-lábra megszakítás érkezik.
Olyankor biteket léptet. Aztán kiküldi az A kimenetre. Aztán ha elintézte a dolgát, akkor visszatér az üres utasítások végrehajtására.
A problémám az, hogy bekapcsoláskor kialszik az indikátor ledem, és semmi sem történik. (pedig villognbia kellene) Egymás után többször be-ki kapcsolom, aztán egyszercsak elindul. Akkor szokott leginkább, amikor a levétel pillanatában egyből vissza is kapcsolom.
Ha a watchdogot bekapcsolom, akkor ilyen határozatlan állapotban újraindíja, és jó is, de aztán ez a restart időközönként ismétlődik. Próbáltam, a MCLR-t használni ehhez az észheztérítéshez, de nem mindig akarja a frankót.
Az előző picem (16F872) nem volt ennyire érzékeny. Egyszerűen nem értem. Tekercseket vezérelek, komplementer tranzisztorpáron keresztül, az a fura hogy csak induláskor jön rá a hoppáré (tehát ha már elindult akkor már minden ok), és amikor csak ledek vannak rajta, akkor is így viselkedik.
Raktam be pedig puffer és hidegítőkondit. Mi a csudáért csinálja mégis ezt?
|
csüt. feb. 08, 2007 23:00 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Ha olvastad a topicot, akkor többször találkozhattál az arany kezdő szabályjal, mely szerint a legjobb könyv az adatlap, főleg ha jól tudsz angolul(nem úgy mint én, még is eltalálok az adatlapban). Nézz át a http://www.hobbielektronika.hu -ra ott találhatsz némi PIC-es cikkeket. Egyébként www.microchip.com - on minden infó megtalálható, természetesen nem magyarul.
|
csüt. feb. 08, 2007 20:44 |
|
|
prometheusz
platina tag
Csatlakozott: csüt. feb. 08, 2007 11:58 Hozzászólások: 605 Tartózkodási hely: csajárda ricse-köcsöge
|
Sziasztok, olvasgattam ezt az évek óta élő forumot. Nagyon jók vagytok...
Én csak most kezdtem felfigyelni a PIC-ekre, eddig igyekeztemmeguszni nélkülük.
Tudtok adni net cimeket ahol ezekről információt kaphatok az alapoktol kezdve?
Első körben ISD17xx sorozatot kivánok valamelyikkel vezérelni...
Köszi
|
csüt. feb. 08, 2007 12:07 |
|
|
AZoli
arany tag
Csatlakozott: kedd nov. 30, 2004 20:13 Hozzászólások: 269
|
Köszi Potyo a gyors választ!
|
csüt. feb. 08, 2007 11:45 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
AZoli írta: Bocs hogy közbevágok, MPLab tud olyat hogy megszámolja pl. két breakboint között hogy mennyi órajelciklus telt el? Igen. A legegyszerűbb, hogy amikor ki van választva az MPLAB SIM Debuggerként, akkor ott van egy Stopwatch nevű dolog. Ha azt is akarod tudni, hogy ez időben mennyi, akkor állítsd be a debugger-->Settings-nél az oszcillátor frekvenciáját.
|
csüt. feb. 08, 2007 10:56 |
|
|
AZoli
arany tag
Csatlakozott: kedd nov. 30, 2004 20:13 Hozzászólások: 269
|
Sziasztok!
Bocs hogy közbevágok, MPLab tud olyat hogy megszámolja pl. két breakboint között hogy mennyi órajelciklus telt el?
|
csüt. feb. 08, 2007 10:53 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Idézet: Mit jelent az hogy csak a test felé folyhat az áram?
Gondolom ha az előbbi diódás megoldást alkalmazva az RA4-re egyet viszek ki akkor a led nem fog világítani.
Igen, és ha megfordítod a LED-et, és a testre teszed a katódját, és a RA4-re az anódját, akkor soha nem fog világítani, és ez jelenti azt, hogy csak a test felé folyhat az áram az RA4 lábán keresztül, mivel ott van egy N-es FET, felül meg nincs. De most már tényleg nézd meg az adatlapot, mert le van rajzolva!!!!!
|
csüt. feb. 08, 2007 10:25 |
|
|
tubybb
gyémánt tag
Csatlakozott: vas. feb. 05, 2006 19:53 Hozzászólások: 1170 Tartózkodási hely: Győr
|
Potyo, kiegészítettem a korábbi hozzászólásomat, sasold meg!
Mit jelent az hogy csak a test felé folyhat az áram?
Gondolom ha az előbbi diódás megoldást alkalmazva az RA4-re egyet viszek ki akkor a led nem fog világítani.
Az a kérdésem, hogy ez az open kollektoros (vagy drain-es) kimenet mennyiben tér el a többi (mondjuk RB) lábaktól?
Talán hogy ott fordítva is folyhat az áram?
|
csüt. feb. 08, 2007 10:11 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Idézet: hogy lehet RA4-et kimenetté varázsolni?
A dolognak két összetevője van.
1. OPC Az RA4 opencollektoros kimenetű, azaz csak a test felé folyhat az áram. Ha a LED anódját pozitívra teszed 470ohmon keresztül és a katódját az RA4-re, akkor a LED világítani fog, ha az RA4-re 0-t viszel ki.
2. Az RA port analog bemenetű port is. Ha nem konfigolod be, hogy ne az legyen, akkor reset után reset állapotba kerül, ami az analog és a digitális felhasználás közötti semmis állapot. (adatlap 10-1 figure a 62. oldalon).
Nézd meg a CMCON regiszter bitjei mire valók!
szerk: potyo-nak igaza van, OPD a FET-ek miatt!
|
csüt. feb. 08, 2007 9:54 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
tubybb írta: Az rendben van hogy RA4 nem működik, de a többi RA (0-3) miért nem villog és miért csak világít? Komparátort letiltottad Idézet: hogy lehet RA4-et kimenetté varázsolni? Ugyanúgy, mint a többit, csak az RA4 láb Open Drain-es.
|
csüt. feb. 08, 2007 9:51 |
|
|
tubybb
gyémánt tag
Csatlakozott: vas. feb. 05, 2006 19:53 Hozzászólások: 1170 Tartózkodási hely: Győr
|
Az rendben van hogy RA4 nem működik, de a többi RA (0-3) miért nem villog és miért csak világít?
Watt, hogy lehet RA4-et kimenetté varázsolni?
szerk:Látom az adatlapon mindent információt megtalálok. Csak olyan hosszú volt, nem akartam végigolvasni. Így céltudatosan jobb olvasni.
Potyo! Azért válsztottam az OR műveletet a óra-regiszerhez, mert a rutinjaimat szeretném univerzálissá tenni, hiszen ha átviszem egy másik progiba, akkor ne kelljen átírkálni a biteket. Hisz ha az adott helyen már a regi tartalmazott egy értéket, akkor ne írja felül azt.
A hozzászólást 1 alkalommal szerkesztették, utoljára tubybb csüt. feb. 08, 2007 9:54-kor.
|
csüt. feb. 08, 2007 9:40 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Annyit segítek, hogy OPC és komparátor!
|
szer. feb. 07, 2007 19:46 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
Kód: movlw b'01100101' IORWF T1CON,1 ;TMR elindítása Ezt így nem jó csinálni, mert a maradék bitek resetkor ugyan elvileg nullába állnak, de nem jó bízni bennük. Jobb lenne így: Kód: MOVLW b'01100101' MOVWF T1CON A vessző után a nulla helyett W-t írj, sokkal olvashatóbb a kód Kód: movlw b'00011111' ; az első 3 bit nulla, mert azokat nem használhatom Nem muszáj az első három bitet nullára tenni, mert azok lábak nem digitális kimenetként működnek, így az nem jelent semmit, hogy mit írunk rájuk Kód: XORwf PORTA,w ; xor-ral váltogatom a nullákat és egyeseket movwf PORTA Ez viszont felesleges így, mert XORWF PORTA, F rögtön kiírja a portra az eredményt. Kód: xorwf PORTB,w movwf PORTB ; B port dettó Szintén Kód: movlw 0 andwf TMR1H,1 ;felső bájt törlése Itt viszont a CLRF utasítást kellene használni.
Azt, hogy miért nem működik a led az RA4 lábon, megtalálod az adatlapban az I/O PORTS részben.
|
szer. feb. 07, 2007 18:40 |
|
|
tubybb
gyémánt tag
Csatlakozott: vas. feb. 05, 2006 19:53 Hozzászólások: 1170 Tartózkodási hely: Győr
|
Írtam rá egy másik progit. Egy egyszerű villogtatás az összes lábat egyszerre.
Na most az a bajom ezzel a 16F627-tel, hogy az A jelzésű lábak _(0-tól 4-ig) nem akarnak villogni. (ezekre nincs semmi extra funkció bízva, úgyértem a OSC1-2 a A6-7-en a MCLR pedig az A5-ön van)
RA0-tól RA3-ig a led egyfolytában világít, RA4 nem megy. Pedig programban ugyanazt kapja mint a B-sor. Az érdekes módon rendesen megy.
Kipróbáltam egy másik piccel is az dettó ezt csinálta.
Mi van ezzel?
Tessék potyó!
#include P16F627.INC
aa equ 0x20
org 0
clrf INTCON
begin
bsf STATUS,RP0
movlw b'11100000'
andwf TRISA,1
clrf TRISB
bcf STATUS,RP0
movlw b'11111111'
movwf PORTA
movwf PORTB
movlw b'01100101'
IORWF T1CON,1 ;TMR elindítása
jee
movf TMR1H,0
movwf aa
btfsc aa,7 ;TMR felső bájtjának legnagyobb bitje ha egy akkor call rutin
call rutin
nop
nop
goto jee
rutin
movlw b'00011111' ; az első 3 bit nulla, mert azokat nem használhatom
XORwf PORTA,w ; xor-ral váltogatom a nullákat és egyeseket
movwf PORTA
movlw b'11111111'
xorwf PORTB,w
movwf PORTB ; B port dettó
movlw 0
andwf TMR1H,1 ;felső bájt törlése
return
end
|
szer. feb. 07, 2007 18:17 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
tubybb írta: t az aa-cimkét esetében 16-os számrendszerbeli számnak értelmezte, és.... Neméppen. Az "A" regisztert a 20h címre tette az MPLAB, és a W tartalmát az A regiszter címével (20h-val) XORoltad, és annak az eredménye lett a b'00111111'.
|
szer. feb. 07, 2007 18:13 |
|
|
tubybb
gyémánt tag
Csatlakozott: vas. feb. 05, 2006 19:53 Hozzászólások: 1170 Tartózkodási hely: Győr
|
Jujjj!
Tényleg!
Nem mindegy hogy XORLW vagy XORWF
Itt az aa-cimkét esetében 16-os számrendszerbeli számnak értelmezte, és....
|
szer. feb. 07, 2007 17:53 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
tubybb írta: Hülye ez az MPLAB.
Hát már ne is haragudjanak, de:
W=b'00011111' és egy tetszőleges regiszter: A=b'00011111'
akkor hogy a ménydörgős mégykűbe lehet a XORLW A utasítás után a W-ben b'00111111' ??????
Mi a rák van itt? 7.2-est használok mert ez fekszik nekem a legjobban. De miért csinálja ezt??? Mi a gond vele Jó az eredmény.
|
szer. feb. 07, 2007 17:50 |
|
|
tubybb
gyémánt tag
Csatlakozott: vas. feb. 05, 2006 19:53 Hozzászólások: 1170 Tartózkodási hely: Győr
|
Hülye ez az MPLAB.
Hát már ne is haragudjanak, de:
W=b'00011111' és egy tetszőleges regiszter: A=b'00011111'
akkor hogy a ménydörgős mégykűbe lehet a
XORLW A
utasítás után a W-ben
b'00111111' ??????
Mi a rák van itt?
7.2-est használok mert ez fekszik nekem a legjobban.
De miért csinálja ezt???
|
szer. feb. 07, 2007 17:44 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
Még az is lehet, hogy engedélyezve van az alacsony feszültségű programozás. A PGM lábat húzd le a GND-re egy néhány kilós ellenállásal.
|
szer. feb. 07, 2007 13:27 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Idézet: De ha az égetéskor azt választottam hogy 'HS' akkor nem I/O ként konfiguráltam, ugye? Igen, HS (FOSC2:FOSC0 : 010) esetén az OSC1 bemenet lesz. Ha csak a program működését akarod megnézni, állítsd INTOSC-ra (FOSC2:FOSC0 : 100), azzal tutira mennie kéne. Idézet: akkor nyílván nem ez volt a baj. De akkor vajon mi?
Kevés az input! Kicsit többet kéne erről tudnunk!
|
szer. feb. 07, 2007 13:23 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
Tedd be ide a programodat, ha nem hosszú.
|
szer. feb. 07, 2007 12:56 |
|
|
NickE
platina tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 754
|
mit kéne csinálni a PICnek?
|
szer. feb. 07, 2007 11:42 |
|
|
tubybb
gyémánt tag
Csatlakozott: vas. feb. 05, 2006 19:53 Hozzászólások: 1170 Tartózkodási hely: Győr
|
De ha az égetéskor azt választottam hogy 'HS' akkor nem I/O ként konfiguráltam, ugye?
Én is úgy csináltam hogy az MCRL-t a +5-re kötöttem, akkor nyílván nem ez volt a baj. De akkor vajon mi?
|
szer. feb. 07, 2007 11:38 |
|
|
NickE
platina tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 754
|
Az MCLR -t tápra kell kötni, ha MCLR-ként használod. (azaz nem RA5-ként) Ha nincs odakötve, akkor tutti, hogy nem fog elindulni. Az órajelbemetekkel pedig vigyázni kell, mert ha I/O -nak van konfigolva, akkor nem fog örülni a PIC, hogy órajel megy neki oda. Szóval ezzel tönkre lehet tenni.
|
szer. feb. 07, 2007 11:18 |
|
|
tubybb
gyémánt tag
Csatlakozott: vas. feb. 05, 2006 19:53 Hozzászólások: 1170 Tartózkodási hely: Győr
|
Nem akar működni a PIC-em .
Csúnya dolgot csinált. Beleégetem a gondosan megírt programot, verify minden rendben.
Adok neki VSS-t VDD-t, megkapja a 12Mhz-es kvarcot, meg a két 15pF-os kondenzátorát, és nem hajlandó egy tapottat sem mozdulni.
(16F627) Aztán felmérgeltam magam, és beállítottam hogy külső forrából akarom táplálni az órajelet, és az OSC1-re rákapcsoltam az 555-ös négyszögjelét. Nos így sem volt hajlandó semmire.
Már nem emlékszem az MCRL-t mire kell kötni?
Vajon miért nem hajlandó működni ez a rosszcsont?
|
szer. feb. 07, 2007 11:04 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
Re: picc usb
kszabi írta: 1. Egy kisseb picc-es áramkör kaphatja-e a tápot usb kábelről? 2. Lehet-e HEX filet letölteni a picc usb portján át ,valamilyen boot progi beégetése után fleses tipusokba?
1. Kaphatja. Nem csak kisebb, nagyobb is, amennyiben a fogyasztása nem haladja meg alaphelyzetben a szabvány szerinti 100mA-t. 500mA a maximum, de ezt kérnie kell az eszköznek a usb kontrollertől. Viszont nem szoktak a 100mA-os áramkorláttal szórakozni a kontrollert gyártók, így általában alapból megy az 500mA.
2. Lehet, pl.: http://pic18fusb.online.fr/wiki/wikka.php?wakka=WikiHome
3. A pic az egy c-vel írandó.
|
kedd feb. 06, 2007 18:18 |
|
|
kszabi
vas-tag
Csatlakozott: kedd feb. 06, 2007 16:07 Hozzászólások: 4
|
picc usb
Üdv mindenkinek!
Lenne két kérdésem.Ha valaki csinált már ilyet légyszi irjon.
Egy kisseb picc-es áramkör kaphatja-e a tápot usb kábelről?
Lehet-e HEX filet letölteni a picc usb portján át ,valamilyen boot progi
beégetése után fleses tipusokba?
Elöre is köszi a segitséget.
|
kedd feb. 06, 2007 17:49 |
|
|
gozi
arany tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 382
|
siraly12 írta: Használ valaki közületek mikrobasic-et. A progi lefordítja a beírt basic-et, de a picen nem indul el. Nem értem miért, ugyanazokat a beállításokat használom mint az oshonos basic fordítóban.
Szia!
A config beállítások milyenek? Ha az Edit project menüben a defaultra nyomsz, akkor külső oszcival működő alapkonfigot kapsz. (legalábbis mikropascal alatt így van, az igen halovány emlékeim szerint...)
Üdv!
|
hétf. feb. 05, 2007 14:53 |
|
|
siraly12
arany tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 363
|
Használ valaki közületek mikrobasic-et.
http://www.mikroe.com/en/compilers/mikrobasic/pic/index.htm
Egyszerűen nem tudom működésre bírni. Régebben már próbálkoztam vele, de feladtam, most szükségem lenne rá, vagyos a tudására.
A ledvillogtatás sem működok nekem.
A progi lefordítja a beírt basic-et, de a picen nem indul el. Nem értem miért, ugyanazokat a beállításokat használom mint az oshonos basic fordítóban.
Valaki tudna egy működőképes konfigot mondani nekem?
Előre is köszönöm.
|
hétf. feb. 05, 2007 13:46 |
|
|
NickE
platina tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 754
|
Nem kell figyelni. Rosszul emlékeztem. Ahogy Zoli írta, az MPLAB automatikusan tudja, hogy melyik címzést kell használni.
Én általában a gyakran használt változókat az access ramba teszem és el is szoktak ott férni, a többit pedig szinte mindig indirekt címzéssel érem el, szóval nem sűrűn használom az előző módszert, ezért nem emlékeztem már.
Egyébként ha egymás utáni változókat szekvenciálisan akaruk elérni, akkor a POSTINC, POSTDEC, PREINC -en keresztül a legkényelmesebb. Mindig ezt használom.
|
hétf. feb. 05, 2007 8:52 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Idézet: ha a BSR -ben mindig 1 van, akkor végülis bankolgatás nélkül max 384 byte érhető el bankolás nélkül direktben. Igen, én is így szoktam használni... Idézet: 0x100-0x1ff -ig bankos címzést kell használni az utasításoknál. Erre viszont oda kell figyelni!
Ezt nem igazán értem, ha Bank1-ben vagyunk mindig, akkor mire kellene még figyelni?
|
hétf. feb. 05, 2007 5:44 |
|
|
AZoli
arany tag
Csatlakozott: kedd nov. 30, 2004 20:13 Hozzászólások: 269
|
NickE írta: ha a BSR -ben mindig 1 van, akkor végülis bankolgatás nélkül max 384 byte érhető el bankolás nélkül direktben. Annyi, hogy 0-127 -ig lévő címen access access ramként, 0x100-0x1ff -ig bankos címzést kell használni az utasításoknál. Erre viszont oda kell figyelni!
Megvan a megoldás.
Nem figyeltem, és mégis megy. Az MPlab úgy fordítja, hogy kezeli az "a" RAM access bitet.
|
vas. feb. 04, 2007 20:50 |
|
|
AZoli
arany tag
Csatlakozott: kedd nov. 30, 2004 20:13 Hozzászólások: 269
|
potyo írta: Ha BSR-be 1-et töltesz, akkor pl. egy MOVF név1,W utasítás valójában a név96 regiszter tartalmát fogja W-be tölteni. Az olyan utasítások, amik operandusként egy regisztert használnak, nem tudják majd mind a 330 memóriahelyet elérni.
Akkor fog helyesen működni, ha a MOVFF utasítást használod a memória elérésére. Tehát ha be akarod név1 tartalmát tölteni a W-be, akkor a MOVFF név1,WREG utasítást kell használnod. De a MOVFF-hez felesleges a BSR-t bárhová is állítani. Viszont a MOVFF kétszavas utasítás, ami egyrészt két végrehajtási ciklust jelent, másrészt az Errata-t megtekinve számos veszélyt is hordoz magában.
Köszi a gyors választ.
Kód: PROBA equ 0x0010 ; CON_FIG equ 0x0170 ;
De így miért működik? Valamit tud az MPLAB... vagy én nem?
|
vas. feb. 04, 2007 20:46 |
|
|
NickE
platina tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 754
|
ha a BSR -ben mindig 1 van, akkor végülis bankolgatás nélkül max 384 byte érhető el bankolás nélkül direktben. Annyi, hogy 0-127 -ig lévő címen access access ramként, 0x100-0x1ff -ig bankos címzést kell használni az utasításoknál. Erre viszont oda kell figyelni!
|
vas. feb. 04, 2007 20:29 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
Ha BSR-be 1-et töltesz, akkor pl. egy MOVF név1,W utasítás valójában a név96 regiszter tartalmát fogja W-be tölteni. Az olyan utasítások, amik operandusként egy regisztert használnak, nem tudják majd mind a 330 memóriahelyet elérni.
Akkor fog helyesen működni, ha a MOVFF utasítást használod a memória elérésére. Tehát ha be akarod név1 tartalmát tölteni a W-be, akkor a MOVFF név1,WREG utasítást kell használnod. De a MOVFF-hez felesleges a BSR-t bárhová is állítani. Viszont a MOVFF kétszavas utasítás, ami egyrészt két végrehajtási ciklust jelent, másrészt az Errata-t megtekinve számos veszélyt is hordoz magában.
|
vas. feb. 04, 2007 20:00 |
|
|
AZoli
arany tag
Csatlakozott: kedd nov. 30, 2004 20:13 Hozzászólások: 269
|
Sziasztok!
18Fxxxx sotozatnál asm -ben szükségem volna kb.: 330 bájt direkt címezhető (tehát elnevezett) RAM területre. A programból nem szeretném BSR-t kezelni, mert bonyolult.
Működhet a dolog úgy, hogy inic -ben BSR-be 1 -et töltök, és:
Kód: CBLOCK 000h ; név1 ; név2 ; . . . név9 ; név10 ; . . . név95 ;Eddig ok. Ez kerül a 05Fh címre ENDC ;
CBLOCK 100h ; név96 ; név97 ; . . . név330 ; ENDC ;
...és a programban minden regiszterre csak "névx" -ként hivatkozom?
|
vas. feb. 04, 2007 18:13 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Igen. Szerintem az. Nem látom semmi előnyét. Nem szabad az assembelrre ráerőltetni a magasabb szintű nyelvek formuláit, főleg, hogy nem is lehet. Nekem pont fordított a bajom most, hogy C-vel küzdök assemler után....
|
szer. jan. 31, 2007 10:33 |
|
|
Jozs
vas-tag
Csatlakozott: szer. dec. 27, 2006 8:33 Hozzászólások: 6
|
watt írta: Idézet: Akkor fogadd meg a korábbi tanácsot, és gyorsan felejtsd el ezt a kifacsart dolgot.
Mármint az én verzióm a kifacsart ?
Jozs
|
kedd jan. 30, 2007 22:09 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Idézet: Még biztos jövök kérdésekkel, mert csak most vetettem bele magam a PICvilágba
Akkor fogadd meg a korábbi tanácsot, és gyorsan felejtsd el ezt a kifacsart dolgot.
|
kedd jan. 30, 2007 16:10 |
|
|
Jozs
vas-tag
Csatlakozott: szer. dec. 27, 2006 8:33 Hozzászólások: 6
|
Értem. Köszi.
Még biztos jövök kérdésekkel, mert csak most vetettem bele magam a PICvilágba
Jozs
|
kedd jan. 30, 2007 14:49 |
|
|