Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1020 / 1319
(#) n_yálastrubadúr válasza trudnai hozzászólására (») Szept 1, 2011 /
 
  1. ;                       ---RED---
  2.  
  3.         btfsc           sw,0
  4.         bsf             red                     ;on    
  5. do1
  6.         decfsz  redhslave,f
  7.         goto            do1
  8.  
  9.         bcf             red
  10. do0
  11.         decfsz  redlslave,f
  12.         goto            do0
  13.  
  14.         movfw   redh                                            ;kezdő értéke 1                      ;tmr0 megszakításban a magas regiszter         növekszik
  15.         movwf   redhslave               ;high                                                                   ;ugyanakkor:
  16.                                                                                                                         ;a megszakításban     az alacsony regiszter csökken
  17.         movfw   redl                    ;low                    ;kezdő érték 255                    
  18.         movwf   redlslave      
  19.                                                                                                                         ;a bsf azaz magas állapot növekszik a bcf azaz az alacsony csökken
  20.                                                                                                                         ;redh = d'128' és redl = d'128' esetében kb 50%-os a kitöltés      
  21. ;REMÉLEM ELÉG SZÁJBARÁGÓS VOLT :)
(#) szepesg hozzászólása Szept 1, 2011 /
 
Hello!

Miért lehet az, hogy nem megy az interrupt a PIC32-ben, ami megy PIC24-ben. Sőt, megnéztem a PIC32MX....h-t, és abban egyáltalán nem találtam interrupttal kapcsolatos dolgot.
Hogyan lehet mégis használni az interruptokat PIC32-ben?
Köszönettel:

szepesg
(#) trudnai válasza n_yálastrubadúr hozzászólására (») Szept 1, 2011 /
 
Akkor megiscsak PWM-et csinalsz, csak szoftveresen -- erre voltam kivancsi. En amugy valahogy igy csinalnam meg:

  1. redDriver
  2.         bsf     redLED
  3.         movf    redDuty,w
  4.         call    delayDriver
  5.  
  6.         bcf     redLED
  7.         compf   redDuty,w
  8.         call    delayDriver
  9. ...
  10.  
  11. delayDriver
  12.         movwf   tmp
  13. delayLoop
  14.         decfsz  tmp,f
  15.         goto    delayLoop
  16.  
  17.         return


...es igy akkor eleg a redDuty valtozot bizeralni, az ures varakozas a duty cycle-bol szamitja ki a COMPF utasitassal...
(#) icserny válasza szepesg hozzászólására (») Szept 1, 2011 /
 
A "Programming 32-bit Microcontrollers in C Exploring the PIC32" c. könyvben van interruptra mintapélda (lásd: Day 5.). Bővebben: Link
(#) Poostmaster hozzászólása Szept 1, 2011 /
 
Az mit jelent, ha a program futásakor az LCD-n csak a második soron vannak teli téglalapok?
Elméletileg szövegnek kellene lenni mind a két sorban.
Ne tudom, jól kötöttem-e be. A kontrasztot egy fix 2k-s ellenállással kötöttem be a Vss lábra. A Vcc közvetlenül kapja a +5V-ot a LED is közvetlen +5V és GND A többi láb is egyenesen a PIC portjaira megy.
Sajnos nem tudok képet tenni róla, csak az LCD bekötéséről.

1602LCD_4.jpg
    
(#) n_yálastrubadúr válasza trudnai hozzászólására (») Szept 1, 2011 /
 
OK. Mester

"Problémák jöhetnek, jönnek..de megoldom". Az a szép hogy újoncként elkápráztat a problémák véges végtelensége, és ehhez társuló szintúgy számtalan megoldás. Igen a tiéd ésszerűbb. Dehogy ne a "könyvem" írjam, kérdezném: A Capture módot szeretném megtanulni. Így már lehet hogy a kérdés is hülye lesz. Hogyan lehetne a Capture módban mondjuk egy akármilyen távirányító kódját értelmezni? Gondolom nem annyi hogy bekapcsolom, az infrajel indítja és aztán micsinál? Egy számot ment egy meghatározott idő után?
(#) potyo válasza n_yálastrubadúr hozzászólására (») Szept 1, 2011 /
 
Pl. lefutó éleknél elmenti a TMR2 regiszter tartalmát valamelyik CCP regiszterbe (adatlapot nézd meg, hogy pontosan hová), és megszakítást is generál. A TMR2 folyamatosan fut, és így a pillanatértékekből utólag ki tudod számolni, hogy mennyi idő telt el két le vagy felfutó él között.
(#) watt válasza n_yálastrubadúr hozzászólására (») Szept 1, 2011 /
 
A Capture módban a bemenetre adott él(aminek érzékenysége beállítható akár menet közben is fel, vagy lefutóra) hatására beleteszi a CCPR1H és L regiszterbe a Timer1(vagy 3) H és L értékét. Ha ezt elmented és a következő ilyen eseménynél kapott értéket kivonod, akkor egy a két esemény közötti idővel arányos számot kapsz. A Timer1-et úgy kell beállítani, hogy megfelelő sebességgel és felbontással számláljon a jelek között. Ha nagy felbontás kell, akkor gyorsan kell számlálni. Ekkor előfordulhat, hogy a Timer1 túlcsordul. Ezt a túlcsordulást a Timer1 jelzi, és ezzel is számolni kell a végén annyiszor, ahányszor megtörtént. Kb. ennyi.
(#) szepesg hozzászólása Szept 2, 2011 /
 
Hello!

Ha PWM-mel akarok hangot előállítani, akkor én egy tömb segítségével intézem el, hogy a duty cycle szinusz szerint változzon.
Ha a program futása alatt én azt akarom, hogy a pl: frekvencia változzon, akkor a tömbben lévő szinusz értékeket újra kellene számolni.
És itt a kérdés: ezt lehet úgy csinálni, hogy egy interrupt kiszámítja az új értékeket, majd utána már ezt adom be a PWM-nek?
Kösz:

szepesg
(#) n_yálastrubadúr válasza watt hozzászólására (») Szept 2, 2011 /
 
Szia! Igen ezeket szépen elolvasgattam, ergo azért szépen matekozni kell. Nem mintha probléma lenne, de jobb szeretném, ha menet közben olvasni tudnék bármit, belelátnék a pic lelkébe tüzetesen. Tudom már egyszer kérdeztem,de azóta se sikerült működés közben semmiről se élőben,azonnal tudomást szereznem. Régebben írogattam binárisan ledekkel. De ez sem nem elegáns, és kevés. Tehát érthetőn, azt szeretném, ha a megírt programom futás közben láthatnám hogy valósidőben eszeveszettül pörög a TMR0, az általam kreált regiszterek csökkenek, növekednek, portok aktuális szintje, ésatöbbi. Ha persze ez lehetséges.


Mondjuk a valós idő annyiban erős hogy semmit se látnék tulajdonképpen, de akkor hogyan lehetne valósan működtetni lassabban és úgy kontrollálni?
(#) watt válasza n_yálastrubadúr hozzászólására (») Szept 2, 2011 /
 
PICKit2-vel lehet debuggolni, megszakításokkal operálni amikor láthatod a regiszterek értékeit.
Másik megoldás, hogy soros porton átküldesz adatokat a program bizonyos pontjainál a PC-re(én ezt szoktam), de valós időben nem lehet a Timer-t átküldeni, ezt gondolom sejted.
Egyébként meg fogadd el, hogy a Timer pörög és számolj.
(#) trudnai válasza szepesg hozzászólására (») Szept 2, 2011 /
 
Inetrruptnak nem szabadna tul sok idot toltenie, azonkivul nem tudom mekkora a tombod, de ha az a program memoriaban van tarolva akkor ez termeszetesen nem lehetseges.

Velemenyem szerint egy tombot kellene felallitanod, ahol egy bizonyos felbontassal benne vannak a szinuszhoz tartozo ertekek, majd az eloallitani kivant frekvencia novekmenyenek fuggvenyeben novelgeted az indexedet. Valoszinuleg egy floating pointos szamitasra lenne ehhez szukseg. Ily modon egy megkozelitest fogsz kapni amit pl egy kulso rc vagy lc szurovel simitgathatsz.
(#) kzteam válasza n_yálastrubadúr hozzászólására (») Szept 2, 2011 /
 
Szia,

Az órajel DC is lehet, ergó kisebb külső órajellel még látható a TMR0 pörgése is.
(#) watt válasza kzteam hozzászólására (») Szept 2, 2011 /
 
Bingó! Gratulálok az éleslátáshoz!
(#) vilmosd válasza szepesg hozzászólására (») Szept 2, 2011 /
 
En csinaltam szinuszt (nem hangot) ilyen modszerrel. Van egy tombom a szinusz ertekeivel. A TMR1 szamolja a frekvenciat Minden IT beuteskor egy index szerint betoltom az epp ervenyes amplitudot, majd inkrementalom (dekrememtalom) az indexet. En 3 fazis eloallitasara hasznalom termeszetesen alacsony frekvenciara (5-70 Hz). Itt hatart szab a PWM frekije. Nalam 4 kHz a PWM freki. A PIC 40 MHz frekin porog (18F4431) Magasabb frekiju szinuszhoz meg kell novelni a PWM frekit.
(#) n_yálastrubadúr hozzászólása Szept 2, 2011 /
 


Vissza álltam picit a a 16f887-re. Nem értem miért van az hogy bármelyik porton bármelyik bitet bemenetre állítom. Nemérdekli, és mintha 0-án lenne mert csak a btfss parancsba fut bele, csinálhatok bármit minden külső reagálást lszr. Mit felejtettem el? Ez miért lehet? Ja mind 2 887-esem ezt műveli

Ja és a Pickit2 saját programja a kiexportált hexre ( 887-re van beállítva) azt írja :
Warnin: hex file loaded is larger than device.

ilyeneket nem művelt teljes a káosz.
2óra alatt egy sima btfsc-s parancsal nemtudtam megbírkózni
(#) potyo válasza n_yálastrubadúr hozzászólására (») Szept 2, 2011 /
 
Csatold a nem működő kódot.
(#) n_yálastrubadúr válasza potyo hozzászólására (») Szept 2, 2011 /
 
  1. BSF             STATUS,5
  2.         CLRF    TRISA
  3.  
  4.         MOVLW   B'00000011'
  5.         MOVWF   TRISB
  6.  
  7.         MOVLW   B'00000010'
  8.         MOVWF   TRISC
  9.        
  10.         CLRF    TRISD
  11.         CLRF    TRISE
  12.         MOVLW   B'00000000'
  13.         CLRF    OPTION_REG
  14.         BCF             STATUS,5
  15.        
  16.  
  17. ;       CLRF    PORTA
  18. ;       CLRF    PORTB
  19. ;       CLRF    PORTC
  20. ;       CLRF    PORTD
  21. ;       CLRF    PORTE
  22.  
  23. ;       CLRF    CC
  24. IN
  25.         BTFSC   PORTB,0
  26.         GOTO    IN


HA 0 VAN HA 1 -EN ÁTLÉPI A FELTÉTELT
(#) potyo válasza n_yálastrubadúr hozzászólására (») Szept 2, 2011 /
 
Az RB0 analóg bemenet, a kódodban nem tiltod le az analóg bemenetet, ezért olvas mindig nullát róla.

  1. BCF          STATUS,5

Az ilyenekről meg szokj le, van annak az ötös bitnek neve (RP0), azt használd, majd a fordító beteszi az odavaló számot. PORT és TRIS regisztereknél nem probléma a szám használata, de az olyan regisztereknél, ahol az egyedi biteknek külön funciójuk van, ott tessék kiírni a bit nevét egyrészt azért, mert jobban olvasható a kód, másrészt azért, mert hajlamosak vagyunk nem foglalkozni a problémával, ha nekünk kell az adatlapból kikeresgetni, hogy az adott sorszámú bit mire való.
(#) n_yálastrubadúr válasza potyo hozzászólására (») Szept 2, 2011 /
 
Jajj de köszi! Megkeresem hogy kell és tiltom. A tanácsod megfogadom, mármint ami a számokat illeti de tudom melyik számnak mi a neve.
(#) L2773 válasza watt hozzászólására (») Szept 2, 2011 /
 
Egy hó meg tizenegynéhány oldal után (mert időközben nagyon kevés időm volt hogy méltóképpen foglalkozzak vele), de:
megvan a 16F684 tesztje!
Köszönöm az áramkört, programot meg a segítséget, Watt!
Persze (az én szintemre való tekintettel) a leíró oldalban lehet nem jogos a "no teszt" javítása, de működik a WLPT_Vpp_mini_v4 a WPB_F18_F16_F12_v1.32b-vel!
Egy próbaáramkört állítottam ösze a 16F684-hez ledekkel ( )
Kösz!
(#) potyo válasza n_yálastrubadúr hozzászólására (») Szept 2, 2011 /
 
Idézet:
„de tudom melyik számnak mi a neve”


Az jó, ha valakinek van önbizalma, csak nem jó, ha túl sok! Kétlem, hogy tudnád az összes regiszter összes bitjét az összes kontrolleren fejből. Vagy ha így van, akkor javaslom, hogy mellőzd a regiszternevek használatát is, meg az utasításnevek használatát is, és írd helyette a címüket illetve bináris kódjukat.
(#) n_yálastrubadúr válasza potyo hozzászólására (») Szept 2, 2011 /
 
Na jó ez enyhe túlzás.. és írtam hogy fogadom tanácsod!
Csak 4-5 pic-el foglalkoztam és azokna is csak a STATUS OPTION ÉS INTCON bit számot tudom
sorry
(#) L2773 válasza L2773 hozzászólására (») Szept 2, 2011 /
 
Most ide írom, pedig lehet a VPásztoros témákhoz illene, de
Különben egy villanypásztor elektronikáját szándékszom - egyelőre - megoldani a 684-gyel. Szerintetek működne-e?
Mert a fúrás-faragások számát alaposan csökkentené, meg egy potméterrel egy A/D vonal használatával tudnám szabályozni a szikrák közti időt és az indukciós időt programban.
De vajon kibírja-e a PIC a trafó által keltett parazita feszültségeket???
Vagyis inkább a kezdőknek szóló oldalra kellett volna írjam, bocs ebben az esetben!
(#) watt válasza L2773 hozzászólására (») Szept 2, 2011 /
 
Köszi a tesztet, gondoltam, hogy jó lesz!

A áramkört látnunk kéne, hogy segíteni tudjunk(rajz). Le kéne választani a vezérlést a PIC-től egy OPTO-val és akkor nem lehet baj.
(#) L2773 válasza watt hozzászólására (») Szept 2, 2011 /
 
Kösz.
Ez az alapmegoldás linkje. Már a FET-es változat
Az Optós leválasztásra gondoltam a 47 ohmos ellenállásnál. Viszont elég-e?
Az 5V-ot egy 7805-ön kerersztül kapja de ugyanarról a 12V-os tápról mint a trafó. Így van egy plussz alkatrésszükséglet, de így is egyszerűbb és "rugalmasabb"mint 555-tel (szerintem) ha bírja.
(#) L2773 válasza watt hozzászólására (») Szept 2, 2011 /
 
Különben a gép AMD 2700 X2-es alaplapi LPT-vel, Windows 7-es.
A felismeréssel eltöltöttem 4-5 percet, lehet, hasonló okokból, mint ahogy írtad a DLPort betöltés miatt (ehhez (sem) értek eléggé, meg azt sem tudtam eldönteni, hogy a WPB info elején leírt jelenség érvényes-e a program legújabb változatára...)
Utána működik rendesen
(#) kissi válasza L2773 hozzászólására (») Szept 3, 2011 /
 
Idézet:
„De vajon kibírja-e a PIC a trafó által keltett parazita feszültségeket???”
Miért kellene neki kibírni? Meg kell oldanod, hogy ne jusson oda! --> Tápfeszültség megfelelő szűrése, NYÁK kialakítás ( van ilyen jellegű topic ! ), árnyékolás...
PIC-el működnek gyújtások és egyéb, induktív jellegű bekapcsolások, tehát a feladat megoldható, kellő körültekintéssel ! Az optocsatolós elválasztás nagyon megbízható, de nem is biztos, hogy szükséges ( persze így tuti nem megy ki a végfok hibája miatt a PIC ! ) !

A 47 ohmos ellenállásnál használhatod az optót ( de akkor szerintem kicsi a 47 ohm ! ), de az opto másik oldalán lehet kell még egy tranzisztor a FET gyors be-kikapcsolásához ! Lényeges: az opto használata nem ment meg a táp rendes szűrésétől !!

Steve
(#) L2773 válasza kissi hozzászólására (») Szept 3, 2011 /
 
OK, utána nézek.
(#) Poostmaster hozzászólása Szept 3, 2011 /
 
Hogyan lehet egy LCD panelről eldönteni, hogy működik-e?
Valaki nem tenne ide egy egyszerű programot assemblerhez? 16F887-re kéne. Már nem tudom eldönteni, hogy a panel rossz, vagy miért nem megy.
köszönöm.
Következő: »»   1020 / 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