Fórum témák

» Több friss téma
Fórum » PIC programozás
 
Témaindító: G-Lex, idő: Okt 24, 2005
Lapozás: OK   37 / 66
(#) trudnai válasza zolee1209 hozzászólására (») Máj 5, 2011 /
 
Tulajdonkepp nincs tiltva, de ha ilyet csinalsz nagyon kell tudni hogyan mukodik a PIC es ezen belul a megszakitas vezerlo -- es persze nagyon jelentos okod kell legyen, hogy ilyet csinalj...

Amugy tul azon amit Watt mester mondott meg az is bajos, hogy a megszakitas kezelo elejen elugrasz. A baj az, hogy nem tudhatod, hogy a PAGESEL hogyan all a megszakitas pillanataban, es ez problemat okozhat (valoszinuleg kisebb projectecben nem jon elo hiba, de nem egy szerencses dolog erre raszokni!)

Ha el kell ugrani, akkor az ugras elott meg kell csinalni a kontextus mentest es utana beallitani a page-et...
(#) zenetom válasza zenetom hozzászólására (») Máj 5, 2011 /
 
Mondjuk gondolom a RETFIE előtt.
Egyébként próbáltam már, csak mondom minek elmenteni a Workot.. Aztán koppant hogy de h*lye vagyok hát bárhol megtörténhet a megszakítás...
Viszont most meg működési hiba lépett fel, viszont a a PC úgy tűnik nem ugrál összevissza.
Köszi hogy figyelmeztettél!
szerk.: trudnai: már találkoztam ilyesmi problémával, 18F-nél az RCALL utasítás, meg a BRA játszott velem, nem sejtettem hogy olyan messzi van a címke hogy az RCALL meg a BRA "ne érjen" el odáig, ugyanis azthiszem azok csak 8 bites cím-különbséget tudnak átugrani (remélem jól írtam).
(#) vilmosd válasza zolee1209 hozzászólására (») Máj 5, 2011 /
 
Ezt nezd meg, es probald meg igy megirni az IT rutint. Mint a kollega is emlitette, a W es a Status regisztert illik elmenteni, es visszaallitani a megszakitasban. Melle meg esetleg a keslelteto rutin helyett inkabb egy szamlalot, es flaget kellene hasznalni a gomb prellmentesitesre. Ugy is megy a TMR0 IT, tehat nem gond egy plusz szamlaloval megcsinalni.
(#) zenetom hozzászólása Máj 5, 2011 /
 
Egyébként ne zolee-nak írjátok a kommenteket hanem nekem.
(#) zenetom válasza zenetom hozzászólására (») Máj 5, 2011 /
 
vilmosd: majd ha hibátlanul megy a progi, akkor megcsinálom timerrel a prellegést.
Egyébként köszönöm hogy írtatok! :yes:
(#) nemgyuri válasza zenetom hozzászólására (») Máj 5, 2011 /
 
Lásd az előző .asm-et! Én is erre utaltam.
(#) zenetom válasza nemgyuri hozzászólására (») Máj 5, 2011 /
 
Igen, tudom mit akartál mondani, már akkor rögtön meg is csináltam. :yes:
(#) watt válasza zenetom hozzászólására (») Máj 5, 2011 /
 
Elnézést, elnéztem a topicot, valóban a PIC Miértekben volt tárgyalva, de nem kimondottan abban a hsz-ben amit én írtam. Hp41C egyik alkalommal nagyon jól elmagyarázta, milyen zűröket okoz a dolog...
(#) zenetom válasza watt hozzászólására (») Máj 5, 2011 /
 
Erre gondolsz?
(#) watt válasza zenetom hozzászólására (») Máj 5, 2011 /
 
Igen. A cikket érdemes elolvasni! Köszi, hogy előkotortad!

Idézet a cikkből:
Idézet:
„A GIE 1-re állítása azonnal érvényre jutna, még a visszatérés előtt. A retfie végrehajtása előtt újra a stack -re mentené az aktuális címet és a megszakítási rutinra ugrana, a kontroller belső stack -je csak 8 szintű... Az pedig végkép rossz működéshez vezet, ha a regiszeterek visszaállítása előtt, vagy közben engedélyeznénk a megszakításokat - a mentett értékeket felülírná a megszakítási rutinban beállított értékekkel.”
(#) zenetom válasza watt hozzászólására (») Máj 5, 2011 /
 
Én köszönöm a segítséget!
(#) zenetom válasza zenetom hozzászólására (») Máj 5, 2011 /
 
Na aki ezt kitalálja.
Olyan problémám van, hogy nem azt csinálja a program amit akarok. De már utasítás szinten.
Szépen beállítom a GPIO0,1,4,5-öt 1-re, de csak a GPIO4-5 állítódik be.
A Logic Analyzer szerint is....
Ilyennel abszolút nem találkoztam még.
(#) El_Pinyo válasza zenetom hozzászólására (») Máj 5, 2011 /
 
ANSEL regisztert törölted? (Bank1-ben van)

szerk: Le kell tiltani a komparátort is. CMCON = 0x07;
(#) zenetom válasza El_Pinyo hozzászólására (») Máj 5, 2011 /
 
A poén az, hogy ha maszkolom VAGY művelettel (kivan kommentezve fölötte), akkor meg megy. Igen, az ADC kivan kapcsolva (törölve van az ANSEL is...).
(#) El_Pinyo válasza zenetom hozzászólására (») Máj 5, 2011 /
 
Talán a proteus modellezi az RMW problémát. A PIC miértek topikban találhatsz bővebben információt róla.
(#) icserny válasza zenetom hozzászólására (») Máj 5, 2011 /
 
Read-Modify-Write probléma. Ne bitenként állítsd, vagy pedig várj a billegetések között.
(#) zenetom válasza icserny hozzászólására (») Máj 5, 2011 /
 
Hogy ez nem jutott eszembe. Most szégyellem magam Akkor azért működött a maszkolás...
El_Pinyo: a proteusban is az volt a helyzet mint a Logic Analyzer-ben.
(#) El_Pinyo válasza zenetom hozzászólására (») Máj 5, 2011 /
 
Jah nem figyeltem, hirtelen megkeveredtem a fejlesztői eszközökben, mert a képen MPLAB SIM van, a korábbi hozzászólásodban meg a proteust emlegetted.
(#) ipijani hozzászólása Máj 18, 2011 /
 
Üdvözlök mindenkit.
Segítséget szeretnék kérni PIC programmódosítással kapcsolatban.
Digitális vasútmodell váltókapcsolóját vezérlő PIC programját kellene módosítani. Jelenleg úgy működik, hogy négy váltót vezérel (négy cím, nyolc kimenet). Úgy szeretném módosítani, hogy ne négy címre reagáljon, hanem pl. 16-ra és a kimenetek ne egyesével kapcsolódjanak, hanem binárisan kódolt számok jelenjenek meg a kimeneteken. Aki tud és kedve van hozzá, kérem segítsen. Előre is köszönöm.

Üdv:ipijani
(#) ipijani hozzászólása Máj 19, 2011 /
 
Üdvözlök mindenkit.
Segítséget szeretnék kérni PIC programmódosítással kapcsolatban.
Digitális vasútmodell váltókapcsolóját vezérlő PIC programját kellene módosítani. Jelenleg úgy működik, hogy négy váltót vezérel (négy cím, nyolc kimenet). Úgy szeretném módosítani, hogy ne négy címre reagáljon, hanem pl. 16-ra és a kimenetek ne egyesével kapcsolódjanak, hanem binárisan kódolt számok jelenjenek meg a kimeneteken. Aki tud és kedve van hozzá, kérem segítsen. Előre is köszönöm.
Üdv:ipijani
(#) trudnai válasza ipijani hozzászólására (») Máj 19, 2011 /
 
Hol akadtal el? Mi a hibajelenseg?
(#) watt válasza ipijani hozzászólására (») Máj 19, 2011 /
 
Igen, tulajdonképpen mi a kérdés?
(#) ipijani válasza trudnai hozzászólására (») Máj 19, 2011 /
 
Köszönöm az érdeklődést.
Nincs hiba, a funkciójának megfelelően működik a kapcsolás, én szeretném az igényeimnek megfelelően átalakítani, aminek az elsődleges feltétele, hogy a PIC programja a kívántak szerint működjön.
A lényeg, hogy egy dekóder 4db vasúti váltót tud kezelni (4 váltó= 8 kapcsolt tekercs), mivel nekem az asztalon 25db váltóm van, ehhez 7 áramkört kellene építenem, ami sok idő és pénz.
Ezért arra gondoltam, hogy ha a PIC kimeneteit nem egyesével kapcsolgatnám, hanem binárisan kódolva, és összeépíteném pl. 2db 74154-es dekódolóval, rögtön 16 váltót tudnék egy áramkörrel vezérelni. Ott akadtam el, hogy nem tudom, hogy a PIC programját hogyan kell átírni ahhoz, hogy egyszerre több kimenet is bekapcsolódjon.
Nem tudom, hogy mennyire kell magyarázni, de a PIC a kapcsolásban DCC jeleket dolgoz fel. Minden váltónak van egy címe és a vezérlőn két gomb a váltó két helyzetének állításához. Az eredeti verzióban a kapcsolás 4 címre reagál (alapból 5től 8-ig), az újban, ha 16 váltóról beszélünk, akkor 16 címre kellene reagálnia pl. 5-től 20-ig. Ezt a két módosítást kellene a programon végrehajtani.
Annyit tudok, hogy a Count1-count8 program részletek alatt a 73. sorban kapcsolódnak a kimenetek, de hiába próbálkoztam átírni ezt a részletet nem hozott eredményt.

Elég bonyolultan magyaráztam, de remélem azért érthető.
Csatoltam az eredet kapcsolást is, így biztosan könnyebb.
Előre is köszönöm.

count3 btfss action,7 ;62 new action
goto t3a ;63 no
movf action,w ;64
andlw B'00000111' ;65 mask
xorlw B'00000010' ;66 is it output 2a?
btfss STATUS,Zbit ;67 yes
goto t3b ;68
btfss CV514a,2 ;69 is this bit enabled?
goto t3c ;70 no
btfss action,3 ;71 on or off
goto off3 ;72
bsf PORTA,2 ;73 F2a on
bcf PORTA,3 ; *********
clrf tick1 ;74
clrf time3 ;75 start timer
bcf action,7 ;76 action done
goto ret4 ;77 *********
off3 bcf PORTA,2 ;74 F2a off
bcf action,7 ;75
goto ret6 ;76
t3a nop ;65
nop ;66
nop ;67
nop ;68
nop ;69
t3b nop ;70
nop ;71
t3c movlw 3 ;72 get CV516 time on
movwf EEARD ;73
bsf f0,rd ;74
movf EEDATA,w ;75
btfsc STATUS,Zbit ;76 if zero then always on
goto ret5 ;77
subwf time3,w ;78 compare time
btfsc STATUS,Carry ;79
bcf PORTA,2 ;80 time out so put off
goto ret2
(#) watt válasza ipijani hozzászólására (») Máj 19, 2011 /
 
A 74154 egyik kimenete folyamatosan 1, azaz az egyik vátó tekercse folyamatosan meg lenne húzva! Ez szerintem nem lenne jó.

Én párhuzamos bővítő portokkal próbálkoznék(egy PIC lenne az áramkörben és annyi bővítő, amennyire szükség van. Később könnyen lehetne tovább is bővíteni), igaz azokat fel kell tudni konfigurálni, illetve meg kell írni a programot is ami a vezérlő jeleket dekódolja.
Ehhez ismerni kellene a DCC protokolt. Gondolom nem túl bonyolult, de ezt nekem is meg kéne tanulnom(és neked is), hogy segíteni tudjak. Ismert az, hogy mennyi címet tud kezelni a master? Mi a master, PC soros porttal, vagy mi vezérli ezt a váltóvezérlőt?
(#) trudnai válasza ipijani hozzászólására (») Máj 19, 2011 /
 
Gyakorlatilag ezt a tablat kell kibovitened:

  1. ;Counter jumps to alternating output update routines. It is called from the
  2. ;Update routine.
  3.  
  4. Counter incf    count,f         ;55
  5.         movlw   B'00000111'     ;56
  6.         andwf   count,w         ;57
  7.         addwf   pc,f            ;58
  8.         goto    count1          ;60
  9.         goto    count2  
  10.         goto    count3
  11.         goto    count4
  12.         goto    count5
  13.         goto    count6
  14.         goto    count7
  15.         goto    count8


Termeszetesen a maszkot ugy megvaltoztatni, hogy 0-7 helyett 0-15 -ig legyen jo, utana a rutinokat atirni ill lemasolni es modositani, hogy az uj csatornakat is kezelje.

Nade! Nem ertek hozza, nem tudom a vasut modellezes hogy mukodik, de feltunt, hogy ez csatornankent ket portot kezel, raadasul a polaritasat valtogatja! Tehat azzal a modszerrel amit felvazoltl nem tudom hogy fog ez mukodni?

Amugy meg egy fontos dolog! Ez a program tele van RMW hibalehetoseggel! Az

  1. bsf     PORTA,3         ;73     F2b on
  2.         bcf     PORTA,2         ;       ********


koze illene minumum 1 db NOP-ot beszurni! Ja, es meg valami, nem tudom az jo-e ennek a vasutmodell aramkornek, ha 1-1 pillanatra mindket vezetek aktiv magasan van? Mert ha nem, akkor teljesen maskepp kell kapcsolgatni!
(#) Hp41C válasza ipijani hozzászólására (») Máj 22, 2011 /
 
Mielőtt árírnád gondold meg... A program 16F84 (16C84) -re íródott, amiben csak a timer0 periféria van (meg az EEProm), de azt sem használja ki. Ebben a programban minden funkció úgy van megoldva, hogy egyben az időzítést is végzi. Ha valamit módosítasz, biztosítani kell, hogy a végrehajtási ideje minden esetben pontosan annyi legyen, mit a módosítás előtt volt, különben a többi funkció romlik el. Erre utal a forrásban a timing oszlop...
(#) Balagemann2031 hozzászólása Máj 27, 2011 /
 
Sziasztok!

Találtam egy rövid programot, az lenne a kérdésem, hogy ha más tipusra akarom írni, akkor elég ha csak az include-részeket írom át? (pl: 16f627a) Egyébként szerintetek ez elírás vagy én vagyok amatőr?
(#) potyo válasza Balagemann2031 hozzászólására (») Máj 27, 2011 /
 
1. Nem elég. Nem véletlenül más a típusjelzése, nem csak az includet kell átírni. Volt már itt az oldalon sokszor arról szó, hogy mit kell 16F84-ről 16F627(A)-ra áttérésnél átírni, hadd ne írjuk már le újra.

2. Végülis elírás, mert BANKSEL PORTB kellene, viszont a program működését nem befolyásolja, mivel a PORTA és a PORTB is ugyanabban a bankban van.
(#) MPi-c válasza Balagemann2031 hozzászólására (») Máj 27, 2011 / 1
 
Tényleg annyira régi ez a '84-ről áttérés', hogy már a ChipCad oldalán sincs fenn a leírása, itt azonban megtalálod!
(#) Balagemann2031 válasza MPi-c hozzászólására (») Máj 27, 2011 /
 
Hali!

MPi-c köszi a linket! Potyo, tudom hogy unjátok már mindig ugyan azokat a kérdéseket, de egy kezdőnek mindig végig kell járnia ezt az utat, hogy megtanuljon picelni, és nagyon sokat olvasom a korábbi bejegyzéseket is és tisztul a kép, de van amire nem lelek rá egyből... azért köszi
Következő: »»   37 / 66
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