Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   83 / 1319
(#) Moderátor hozzászólása Koncsar hozzászólására (») Okt 22, 2007
 
Biztos, hogy ez ebbe a topikba illik?

Én úgy olvastam, hogy ennek a témának PIC-ekről kéne szólnia...
(#) Prinner hozzászólása Okt 22, 2007 /
 
Üdv.
3,3V-ról próbálok működtetni, egy 16f877a-t, ami Nokia 3510 LCD-t hajtana meg, de sehogy sem indul el az oszcillátor. Próbáltam minden itthon előforduló értékű kvarcot xt és hs módban, de semmi. RC-vel is próbáltam, ugyanaz a helyzet... 5V-ról mindegyik elindul persze.
Ez normális dolog lehet? Az adatlapon azt írták, hogy 2-5,5V tartományban működőképes.
(#) Norberto válasza Prinner hozzászólására (») Okt 22, 2007 /
 
Az F-es széria nem képes 2,5V-ról elindulni.

Erre kizárólag az LF széria tagjai képesek...
(#) Prinner válasza Norberto hozzászólására (») Okt 22, 2007 /
 
16f877a adatlap 176 oldal , itt azt ábrázolja a grafikon, hogy 2V-ról 4MHz-ig műxik, 3V-ról meg 10M-ig az LF, az F nem is megy 4V alatt...

Köszi a választ, jól elnéztem (csak a táblázat adatait futottam át kiválasztáskor...)
(#) gulasoft válasza Prinner hozzászólására (») Okt 23, 2007 /
 
Akkor viszont felmerül a kérdés, hogy én 4.8-at adok neki mégsem indul el. Ez mitől van. Ha rárakok egy stabil 5V-ot akkor megy.
(#) Amarton hozzászólása Okt 23, 2007 /
 
Sziasztok!

Nemrégen találtam rá az oldalra. A PIC-es fórumban már nagyon sok hozzászólás van. Már annyi, hogy több hét lenne végigolvasni, ezért kérdeznék.
Elnézést, ha már ez a probléma felmerült.

Szóval. A PIC-em egyik lábára jön egy analóg jel. Ezt 10bites A/D átalakító átalakítja nekem. Itt a felső 8 bitet használom.
Ha lenyomok egy nyomógombot, akkor az aktuális érték eltárolódik.
Azt szeretném megoldani, hogyha az eltárolt érték fölé megy az analóg jel, akkor jöjjön egy goto utasítás, egyébként fusson tovább a program.

Megpróbáltam kivonással és a STATUS,C -t vizsgáltam.
De ebben az esetben sajnos nem annál a feszültség értéknél ágazik el a program, hanem kb 1 V-al előbb.

megpróbáltam a STAUS,Z vizsgálatával. Itt viszont csak egy pillanatig van elágazás (a beállított értéknél).

Erre keresnék választ.
Az sem lenne baj, ha mind a 10 bites értéket össze tudnám hasonlítani, mert ez pontosabb mérést tenne lehetővé.

(#) MPi-c válasza Prinner hozzászólására (») Okt 23, 2007 /
 
Teljesen normális a jelenség, ha a BOREN konfigbit be van kapcsolva, ekkor ugyanis 4 V tápfesznél elindul a brown-out reset, és ha a tápfesz nem megy 4 V fölé nem is fog indulni a PIC. Újabb típusoknál már te határozhatod meg, hogy hány voltnál induljon ez a reset. Kapcsold ki és működni fog.
(#) watt válasza Amarton hozzászólására (») Okt 23, 2007 /
 
Annak pedig működnie kéne. Szimuláld le, hol rontod el!
(#) MM hozzászólása Okt 23, 2007 /
 
Sziasztok! a segítségeteket kérném.
Most kezdtem el PICet programozgatni.
Az lenne a gond hogy:
Soros vonalon küldök ki karaktereket, eddig max 10-20 karaktert kellett ezért ugy csináltam:
movlw 'K'
call kuldes

ezzel nincs is gond,
de most kikéne küldenem vagy 200 karaktert, és ennyi parancs nem férne be az F84A-ba

Hogy tudom megoldani hogy berakom egy stringbe a karaktersorozatot és lépésenként olvasva kiküldi nekem?

Köszi előre is a segítséget. Üdv: MM
(#) Amarton válasza watt hozzászólására (») Okt 23, 2007 /
 
Pedig nem működik.
0,8V al előbb kezd el a LED villogni, mint amikor a nyomógombot megnyomom.
Itt van a kódrészlet:

...
btfss PORTB,0 ;nyomógomb lenyomva?
call Tarol
movf Doles_szog,w
subwf ADRESH
btfsc STATUS,C
call LED_villog
goto MainLoop

Tarol:
movf ADRESH,w
movwf Doles_szog
return
(#) Koncsar válasza Stadi hozzászólására (») Okt 23, 2007 /
 
szia! A modbint, hogy tudom rábeszélni?
(#) watt válasza Amarton hozzászólására (») Okt 23, 2007 /
 
Idézet:
„btfss PORTB,0 ;nyomógomb lenyomva?
call Tarol
movf Doles_szog,w”

Itt mit akarsz tulajdonképpen?

Mert a movf Doles_szog,w mindenképpen végrehajtódik, azt tudod? (ha lenyomtad a gombot, ha nem.)
(#) watt válasza MM hozzászólására (») Okt 23, 2007 /
 
Nézz utána az indirekt címzésnek. (INDF, FSR, és az ezzel kapcsolatos részek), valamint a ciklusszervezést is meg kell vizsgálnod. (DECFSZ ciklusváltozó,F)
(#) Amarton válasza watt hozzászólására (») Okt 23, 2007 /
 
Tudom hogy végrehajtódik. Ez lenne a lényege.
Szóval nézek egy analóg jelet. Ha megnyomom a gombot, akkor eltárolja az értékét a Doles_szog változóba.
Aztán folyamatosan nézi az A/D átalakítót, és ha ez az érték nagyobb vagy egyenlo, mint a Doles_szog valtozo, akkor megvezérel egy ledet.
Valami miatt elérek egy dőlésszöget. A gombbal letárolom, és nem annál az értéknél villan ki a led, hanem kb 1V-al a beállított érték előtt.
Ha a Status,Z változót vizsgálom, akkor pedig csak felvillan, és nem világít folyamatosan, ha az érték felette van, mint az eltárolt érték.

Érthető, ahogy leírom?
(#) xerox66 hozzászólása Okt 23, 2007 /
 
Sziasztok!

Segítsetek legyetek szivesek a *.src filéből hogyan tudok valami pic-be égethető formátumot csinálni.
Köszi!
(#) Koncsar hozzászólása Okt 23, 2007 /
 
sziasztok ! Ategnapi kérdésem is ez volt, amit most megszeretnék kérdezni, hogy a willem égetőmmel, hogy tudnám az award bios alaplapon pl: a dátumot, vagy a nevét megváltoztatni? 24 órája töltögetek le mindenféle progit, modbin, cbrom stb és nagyon nem akarok hozzá érteni. Kaptam pár jó tanácsot tegnap, de nem tudtam előrébb jutni. Segítene VALAKI? Akinek van egy kis ideje rám? Itt leszek folyamatossan. Előre köszönöm Nektek.

eredeti.BIN
    
(#) watt válasza Koncsar hozzászólására (») Okt 23, 2007 /
 
Valaki már szólt neked, hogy ez nem a megfelelő topic!
Érdemes lenne a témának megfelelő fórumot keresned(pl. prog.hu, terminal, stb.)
(#) Koncsar hozzászólása Okt 23, 2007 /
 
Bocs! Átmegyek. Elnézést
(#) watt válasza Amarton hozzászólására (») Okt 23, 2007 /
 
Próbálom a programod működését visszafejteni.
A leírásodat részben értem, de nem teljesen. Egyelőre nézd meg, hogy ezt szeretnéd-e, ami a programodból adódik.

Idézet:
„btfss PORTB,0 ;nyomógomb lenyomva?”

A gomb lenyomása esetén milyen a szint?
Idézet:
„call Tarol”

Ez a Tarol akkor kell végrehajtódjon, ha a a gomb le van nyomva?(PORTB,0 = 0(L szint)))
Idézet:
„movf Doles_szog,w”

Ez meg akkor is, ha lenyomva, akkor is ha nincs lenyomva?
Idézet:
„subwf ADRESH”

Itt azt akarod, hogy ADRESH-W->ADRESH? (jelölni illik, hogy W, vagy F a cél)
Idézet:
„btfsc STATUS,C”

Akkor lesz C-0, ha alulcsordul, tehát Doles_szog nagyobb, mint ADRESH
Idézet:
„call LED_villog”

Ez csak akkor hajtódik végre, ha nincs alulcsordulás
Idézet:
„goto MainLoop”

Ez akkor is, ha alulcsordult, és akkor is ha nem

Tarol:
movf ADRESH,w
movwf Doles_szog
return
(#) menyus válasza watt hozzászólására (») Okt 23, 2007 /
 
Igen, biztos hogy igazad van. Próbálok kb. 3-4 programból megírni egy olyat ami nekem megfelelne. Az egyik F877 re íródott, át kell írnom F690 re (ilyenem van itthon, meg a 877 es "ágyúval verébre", ráadásul túl nagy is...) a másik 4 bites interfészt használ, én 8 ra huzaloztam a próbapanelt...stb. 3 nap alatt odáig jutottam hogy egy feszültségosztót állító poti állásától függően kiír egy karaktert az LCD re tápráadás után. De ennyi... hol van még hogy ASCII ba konvertáljam, meg az sem tiszta hogyan frissítem az LCD t. Ha tekergetem a potit üzem közben nem változik semmi. Ha elállítom, táp ki/be akkor a poti állásának pillanatnyilag megfelelő értéket kiírja az LCD re de ennyi, nem több...Lehet ha nulláról kezdtem volna már készen is volna. De ebből is lehet tanulni.
(#) menyus válasza Medve hozzászólására (») Okt 23, 2007 /
 
Köszönöm az ASM et, majd ebből is merítek 5leteket! (hátha még jobban összezavarodom...)
(#) Medve válasza menyus hozzászólására (») Okt 23, 2007 /
 
Ez a frissítés nem egy súlyos dolog...goto az elejére Kurzor ujrapozicionálás, AD rutin, kiírás... ahogy kell!! Problémát okozhat, ha az LCD-re túl gyorsan érkeznek az adatok. Várni kell egy kicsit, vagyFigyelni az LCD BUSY flagjét. De ez az LCD rutinjaidban biztos benne van...
(#) Amarton válasza watt hozzászólására (») Okt 23, 2007 /
 
"A gomb lenyomása esetén milyen a szint?"
L szint van, ha lenyomom a gombot.

"Ez a Tarol akkor kell végrehajtódjon, ha a a gomb le van nyomva?(PORTB,0 = 0(L szint)))"
Igen

"Itt azt akarod, hogy ADRESH-W->ADRESH? (jelölni illik, hogy W, vagy F a cél)"
Ezt itt nem teljesen értem. Azt szeretném ha a W-ben lévő Doles_szog értékét kivonná az ADRESH-ból.
A cél nekem mindegy. Ha nagyobb az ADRESH mint a dolesszog, akkor a STATUS,C csurduljon túl, és villogtassa a ledet.

(#) watt válasza menyus hozzászólására (») Okt 23, 2007 /
 
Nincs azzal semmi gond, ha példákat használsz fel, csak nem árt, ha meg is érted mit miért csinál az összetákolt programod.

Aztán szükséges némi kreativitás is, ami majd jönni fog magától, minnél több példát látsz, és már tudod milyen építőkövekből lehet építkezni.

A frissítést úgy lehet megoldani pl. hogy beállítasz egy Timert, ami megszakítást okoz időnként. Ekkor mindig kiviszed az LCD-re az kiviendő változód értékét. A változót pedig akkor állítod, amikor beolvasod a potid állapotát. A két dolog lehet egymás után a megszakításban.
(#) watt válasza Amarton hozzászólására (») Okt 23, 2007 /
 
Idézet:
„Azt szeretném ha a W-ben lévő Doles_szog értékét kivonná az ADRESH-ból.”


Idézet:
„Ha nagyobb az ADRESH mint a dolesszog, akkor a STATUS,C csurduljon túl, és villogtassa a ledet.”

Ez ellentmondás!

A SUBWF ADRESH az az ADRESH - W, azaz ADRESH - Dőlésszög műveletet végzi. Kivonásnál alulcsordulás esetén C=0!!!
Ha ADRESH-ból vonod ki a Dőlésszöget, akkor miért vársz alulcsordulást ha ADRESH nagyobb?

A SUBWF ADRESH,W a W-be teszi az eredményt
A SUBWF ADRESH,F az ADRESH-ba vissza.
Ha nem akarod, hogy elromoljon ADRESH tartalma, akkor W-be irányítsd az eredményt. Ha nem kell többé az értéke, akkor valóban mindegy...



(#) menyus válasza watt hozzászólására (») Okt 23, 2007 /
 
Hát...próbálom megérteni. meg volt már 1 - 2 önálló ötletem ami hol működött hol nem. Én így próbáltam megoldani, az én gondolat menetem szerint ebben a verzióban tele kellett volna írnia a kijelzőt karakterekkel ahogy forgatom a potit. De nem jött össze. Ne is kérdezd mire jó ez nekem... gyakorolok.....A végén majd egy rádióvevő térerőjelzője lenne ( ha működne) amit az LCD re írna ki S0 - S9 ig. De egyszer csak összehozom. Véleményed szerint miért nem úgy működik ahogy az nekem logikus lenne?
(#) menyus válasza menyus hozzászólására (») Okt 23, 2007 /
 
Ja, így tényleg nem működhet. A 4 Mhz es órajel frekihez túl lassú a szemem ...
Marad az a TIMER es megszakításos módszer amit javasoltál, csak kicsit félek tőle mert még nem csináltam ilyet.
(#) szabi_o válasza watt hozzászólására (») Okt 23, 2007 /
 
Tulajdonképpen a kivonás is összeadás.
A kivonandó komplementerét adja hozzá a kisebbítendőhöz.
Túlcsordulás tehát abban az esetben történik, ha egy nagyobb számból kisebbet vonunk ki.

pl.1: 3-1=3+(-1) de -1=FF
így 3+FF=2 és túlcsordulás, tehát C=1

pl.2: 1-3=1+(-3) -3=FD
1+FD=FE, nincs túlcsordulás, tehát C=0
(#) gulasoft hozzászólása Okt 24, 2007 /
 
mplab-al próbáltam debugolni.
ICD2-es égető másik végén tesztáramkör, lefordul a progi, be is égeti, make-nél beállítva a debug a release helyett, de ha debugolni akarom akkor ilyenek jönnek
Még mit kell beállítani, hogy menjen?
Egy sima PIC16f877 van rajta

Stepping Target
ICD0083: Debug: Unable to enter debug mode. Please double click this message for more information.
MPLAB ICD 2 Ready
Resetting Target
Resetting Target
MPLAB ICD 2 Ready
MPLAB ICD 2 Ready
ICDWarn0015: Program memory has changed since last program operation? Continue with Debug operation?
Stepping Target
ICD0083: Debug: Unable to enter debug mode. Please double click this message for more information.
MPLAB ICD 2 Ready
(#) watt válasza szabi_o hozzászólására (») Okt 24, 2007 /
 
Jó, de ha SUB-ot írok, akkor nem öszeadást várok. És ha logikailag gondolok a műveletre, akkor pláne nem. Ettől függetlenül amit írsz rendben van természetesen.
Következő: »»   83 / 1319
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