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   307 / 1210
(#) röntgen válasza n_yálastrubadúr hozzászólására (») Szept 22, 2012 /
 
Ha jól tudom az RA porton nincs felhúzó ellenállás, de az RB-n van. Nem ez lehet a gond az "A" porttal?
(#) aroxol hozzászólása Szept 22, 2012 /
 
Sziasztok!

Egy elég kezdö kérdésem lenne:

Az alábbi koddal már megy az eeprom irás 55-öt tudok tárolni.
Viszont azt hogy lehetne megoldani hogy a LFSR 0,700H tárolt adatot
irjam az eepromba?

  1. movf    0X55
  2.         movwf   EEDATA
  3.         movlw   0X70
  4.         movwf   EEADR
  5.         movlw   0X02
  6.         movwf   EEADRH
  7.         rcall   EEPROM_KIIR11
  8.  
  9. EEPROM_KIIR11
  10.      bcf        EECON1,CFGS
  11.      BCF        EECON1,EEPGD
  12.      BSF        EECON1,WREN      
  13.      movf       INTCON,W
  14.      movwf      INTCON_SAVE
  15.      BCF        INTCON,GIEL
  16.      BCF        INTCON,GIEH
  17.      MOVLW      0x55
  18.      MOVWF      EECON2
  19.      MOVLW      0xAA
  20.      MOVWF      EECON2  
  21.      BSF        EECON1,WR
  22.      
  23.      BTFSC      INTCON_SAVE,GIEH
  24.      BSF        INTCON,GIEH
  25.      BTFSC      INTCON_SAVE,GIEL
  26.      BSF        INTCON,GIEL
  27. IRAS
  28.      BTFSC      EECON1,WR
  29.      BRA        IRAS
  30.      BCF        EECON1,WREN
  31.      
  32.      BTFSC      EECON1,WRERR
  33.      BRA        EEPROM_KIIR11
  34.      RETURN
(#) icserny válasza n_yálastrubadúr hozzászólására (») Szept 22, 2012 /
 
ADCON1 = 0x07; beállítással próbálkoztál már? (Analóg bemenetek tiltása)
(#) kormika hozzászólása Szept 22, 2012 /
 
Sziasztok Minap az egyik ismerőstől kaptam 8 darab jóféle Takamisawa relét, illetve hozzá egy rakás ellenállást, egyszer tervbe vette, hogy csinál belőle egy hangerőszabályzást az erősítőjébe, de nem lett a dologból semmi... Én megépítettem már a kapcsolást, a reléket egy PIC 16F818 kapcsolgatja, egyik gombra binárisan számol felfelé a PORTB-n, másik gombra pedig lefelé. Működik is a dolog, annyi a problémám, hogy ha hangerőnövelésnél elérem a 255-öt, és megint megnyomom a + gombot, akkor ugye úlcsordul, és 0 lessz, csökkentésnél pedig ugyanennek az inverze, ha 0-nál mégegyszer - nyomok, akkor meg 255. Nem rég kezdtem a PIC programozást tanulgatni, és ez most kifogott rajtam... Hogyan tudnám megoldani azt, hogyha a PORTB értéke 255, akkor nem vegye figyelembe a + gombot, illetve ha az értéke 0, akkor a - gombot hagyja figyelmen kívül? Ehhez kérném a segítségeteket... Csatolom a már működő assemblert...
(#) pjg válasza kormika hozzászólására (») Szept 22, 2012 /
 
Az jó lehet amikor a 0 hangerő után átbillen a max. hangerőre.
(#) kormika válasza pjg hozzászólására (») Szept 22, 2012 /
 
Nagyon jó volt, először erre nem is gondoltam, mivel ez a készülő szobai erősítőmben lessz majd, ezért a próbához a buliban használatos 2x300W szinuszos teljesítménnyel bíró végfok elé kötöttem... Elkezdtem növelni a hangerőt, frankó, elkezdtem csökkenteni, az is frankó, aztán sikerült a nullánál mégegyet rányomnom a -gombra, szóval a 2x 300W-ot arcba kaptam...
(#) pjg válasza kormika hozzászólására (») Szept 22, 2012 /
 
Az vitte a parókát.
(#) kormika válasza pjg hozzászólására (») Szept 22, 2012 /
 
Olyan 1,5 méter közelségből éreztem rendesen a levegőt, amit a két 38 centis mélynyomó megmozgatott, plussz muter is kijött a műhyelembe, hogy vegyek vissza a hangerőből, mert a konyhában a polcon leesni készülnek a kávéspoharak...
A hozzászólás módosítva: Szept 22, 2012
(#) Net_Boy_debr hozzászólása Szept 22, 2012 /
 
Sziasztok!

Most tanulgatom a PIC-et és az lenne a kérdésem, hogy PIC16F887-es mikrokontroller esetén mit tartotok a legideálisabb és legelegánsabb megoldásnak arra, hogy 1 másodpercenként villogtassak egy LED-et az RD0-ás porton? Parancsokra vagy szubrutinokra gondolok!
A másik kérdésem, hogy egy DM4120-2 demo panelt használok, melynek nincs beforrasztva a külső oszcillátora, ezért csak a belső oszcillátort tudom használni. Ez előnyös szerintetek? Vagy forrasszam be a külsőt?
Köszönöm a választ!
Üdv.
A hozzászólás módosítva: Szept 22, 2012
(#) n_yálastrubadúr válasza röntgen hozzászólására (») Szept 22, 2012 /
 
icserny: Köszönöm!
  1. valami baj van az oldalal
Ez volt a baj! Egyébként a fentebb már említett szerény belvilágú pic 16f716-os. Most 24 bitet fogad RB0 megszakítást okozva a vevő modul, hogy minnél több időm maradjon "kint. A Pwm-je foglalt, ami nagyszerűen hajt egy lb1839-es kettős h-hid-ból az egyiket, szépsége a motor meghajtó mérete . Azon kívül van egy u.n regiszter kontroll hosszadalmas programrészlet, ami egy opcionális LCD-t vezérel. Belső tárolók olvasására, stb. . Az lenne a kérdésem, hogy a hagyományos szervóm ami 1-2mS-os jeleket kér 20mS-os időközönként, hogyan tudnám biztosítani a feltételeit, a folyamatos elégséges meghajtásához, hogy ne remegjen. Jelenleg van TMR0 megszakítás egy nagyon rövid eljárás, ha a vétel rossz! Van az Rb0 ami gyakorlatilag a TMR0értékét olvassa. És megy a Pwm a TMR2-ről. Hogyan oldjam meg, hogy mindennek dacára remegés nélkül mehessen a szervóm, úgy mint mikor a megszakítások tiltva vannak?
(#) n_yálastrubadúr hozzászólása Szept 22, 2012 /
 
Ismét lenne egy kérdés a c-ben. Azt hogyan lehetne hogy a __delay_us(1000); sorban a konstans helyére egy változót tenni, ami mondjuk egy a/d változója lenne?
(#) vicsys válasza n_yálastrubadúr hozzászólására (») Szept 22, 2012 /
 
Talán így:
  1. int16 value;
  2. value=A/Dmeres;
  3. __delay_us(value);
A hozzászólás módosítva: Szept 22, 2012
(#) kormika válasza vicsys hozzászólására (») Szept 22, 2012 /
 
Szia Vicsys Mester
Te nagy spieler vagy PIC-es körökben, és volt már dolgod relés, R-2R ellenálláshálózatos hangerőszabályzóval is. Én is egy ilyet építek, mondjuk jóval puritánabb, mint amit Te építettél, de nekem ez is elég Viszont a hangerő túlcsordulás gondot okoz, ha visszaolvasnál az oldal elejére, ott leírtam pontosan a gondomat, és csatoltam az assemblert is, ha segítenél nagyon hálás lennék, egyelőre még nagyon láma vagyok PIC ügyben...
(#) n_yálastrubadúr válasza vicsys hozzászólására (») Szept 22, 2012 /
 
Köszönöm! Kipróbálom. Rentgeteg kérdésem lenne, de előbb olvasok. Most ezt a projektet még asm-ben fejezem be.

A csatolt kép a genius ps2-es kar új agya
A hozzászólás módosítva: Szept 22, 2012

P1080339.JPG
    
(#) vilmosd válasza Net_Boy_debr hozzászólására (») Szept 22, 2012 /
 
Idézet:
„1 másodpercenként villogtassak egy LED-et az RD0-ás porton?”
TMR0 IT a jo es egyszeru megoldas. Be kellene allitani a TMR0 osztasat, hogy bizonyos idokozonkent (pl 20 mS) lefusson, es ezeket az IT-ket meg kell szamlalni egy valtozoban. Pl 20 ms IT eseten el kell szamlalni 500-ig, es igy a szamlalo az 500 erteket minden 1 Sec alatt eri el. Utana lenullazod a szamlalot, es kezdodik elolrol. Amikor eleri az 500-at atbillented a RD0 portbitet.
A belso oszcillator hasznalata nem hatrany, mert 1 % korul van a pontossaga. Persze ha orat csinalsz, vagy mas nagy pontossagu dolgot akkor lehet hasznalni kvarcot. Az altalanos, nem precizios alkalmazasokhoz nagyon megfelel a belso oszci. Ebben a csomagban talasz egy par ASM es C peldat.
(#) Mengyán hozzászólása Szept 22, 2012 /
 
Sziasztok! C fordítót keresek, lehetőleg ingyeneset, vagy legalább olyan korlátosat, amivel meg lehet barátkozni. Elsősorban 12F, 16F, és 18F-hez. Az időkorlátosak kb mind kiestek. Rátaláltam a Hitech C-re, aminél annyi megkötés van, hogy gyengébb az optimalizáció, és nem kompatibilis a boot loaderrel. Ez tök jó is lenne. A kérdésem az, hogy változott-e a helyzet az elmúlt 2 évben (kb 2 éve jelent meg az a hozzászólás, amiben rátaláltam a Hitech C-re). A másik, hogy C és C között mennyi különbség van? Ugyanaz a forráskód teljesen haszontalanná válik másik compiler számára, vagy esetleg épp fordítva, megírom Hitech C-ben, és aztán a legdrágább-legcsilivilibb fordítóval is lefordul. A gyengébb optimalizáció azt jelenti, hogy nagyobb a végleges, .HEX kód mérete?
(#) n_yálastrubadúr hozzászólása Szept 22, 2012 /
 
Szép estét!
A problémám nem sikerül orvoslnom. A szervó remeg berreg stb, ha engedélyezett a megszakítás. Nem szeretnék másik picet használni e célra, hogyan lehetne stabilan tartani a vezérlési jelalakot? RB0 megszakításban mérem a TMR0 értékét és egyből kilépek. A Pwm modult használom.
(#) foxi63 válasza n_yálastrubadúr hozzászólására (») Szept 22, 2012 /
 
Szia!
A TMR0-nak nem feltétlen kell megszakítást generálnia... amikor túlcsordul, akkor bebillen a TMR0IF jelzőbit. ezt figyelve a normális programból törölhető, tehát érzékeled a hibát,de nincs megszakítás. Csak legalább 256 programciklusonként figyelni kell, illetve az előosztónak megfelelően ,ha van olyan beállítva.
A hozzászólás módosítva: Szept 22, 2012
(#) n_yálastrubadúr válasza foxi63 hozzászólására (») Szept 22, 2012 /
 
Ezt nem értem. Nekem írtad?
(#) foxi63 válasza n_yálastrubadúr hozzászólására (») Szept 22, 2012 /
 
igen
(#) n_yálastrubadúr válasza foxi63 hozzászólására (») Szept 22, 2012 /
 
Van Tmr0 megszakításom, de az helyes működlés esetén sosem csordul túl, mert az RB0 megszakításban, ahol az rf modul adatait mérem csak olvasom és törlöm a Tmr0-át. Törölnöm is kell különben nem tudom azonosítani a biteket. Akkor csordul túl ha legalább 1 két csomag közötti időnél több telik el. Ami "szaggatja a megszakításon kívüli programot az az Rb0 megszakítás.
(#) foxi63 válasza n_yálastrubadúr hozzászólására (») Szept 22, 2012 /
 
Timer1 használt?
(#) n_yálastrubadúr válasza foxi63 hozzászólására (») Szept 22, 2012 /
 
Nem. És ezen gondolkodom, hogy hogyan legyen operáljam össze a táviról jövő 8 bit kormány adatot 1-2ms-os stabil formában, ahol a Tmr1 nem zavarja a vételt. Megnéztem a szervóval annyit játszhatok, hogy a két jel között 4ms-ig tudom levinni az időt, de jó lenne ha 10- nél több amúgy sem lenne. Mert az általános 20ms- nál azt vettem észre lomhább, ami nekem nem jó.
(#) foxi63 válasza n_yálastrubadúr hozzászólására (») Szept 22, 2012 /
 
Tehát be kéne a szervo időt és szünetet tenni a tmr1-be 2 -es előosztóval elérhető a szünet akár 20mSec és a jel pedig annyi amennyi 0-2500 ig 20MHz kristálynál.
szünet után beteszi a szervo idejét, és kiadja a portlábon, következő megszaknál beírja a szünetet. pár utasítás szerintem nem sok idő.A megszakítást lehet nagyon rövidre is szervezni...
(#) n_yálastrubadúr válasza foxi63 hozzászólására (») Szept 22, 2012 /
 
Köszönöm! Ezt szimulálom 4Mhz-es a kristály.
(#) foxi63 válasza n_yálastrubadúr hozzászólására (») Szept 22, 2012 /
 
össze is dobtam:
  1.  
CBLOCK
IDOL,IDOH
SZUNETL,SZUNETH
JELZO
ENDC

BTFSC PIR1,TMR1IF
GOTO VEGE
BCF PIR1,TMR1IF
MOVF JELZO,F
BNZ $+7
BSF JELZO,0
MOVF IDOH,W
MOVWF TMR1H
MOVF IDOL,W
MOVWF TMR1L
GOTO VEGE
CLRF JELZO
MOVF SZUNETH,W
MOVWF TMR1H
MOVF SZUNETL,W
MOVWF TMR1L
VEGE NOP
  1.  

Mivel megszakításban van a tmr1l az irás alatt nem csordulhet ujból túl.
A hozzászólás módosítva: Szept 22, 2012
(#) n_yálastrubadúr válasza foxi63 hozzászólására (») Szept 22, 2012 /
 
Nagyon hülye kérdésem van. A Tmr1 is az org 4 -re jön. Mert mindent bekapcsoltam kint megy minden, de be nem lépne a megszakításba. Megnézem a kódod. Köszi.
Jobb lenne ha néznék.. megvan a periférás bit nincsen engedélyezve...
A hozzászólás módosítva: Szept 22, 2012
(#) foxi63 válasza n_yálastrubadúr hozzászólására (») Szept 22, 2012 /
 
Azért én is kifelejtettem az adott portlábat be és kikapcsolni...
Ne felejts el, hogy a tmr1- regisztereibe 0x10000- idő értéket kell beírni.
(#) matheattila válasza kormika hozzászólására (») Szept 22, 2012 /
 
Szia. Szerintem csak annyit kellene csinálj, hogy gombnyomáskor figyeled azt a hangerő változót (vagy a B portot) és ha már elérte a 255-öt akkor nem adsz hozzá mégegyet, ha pedig elérte a 0-át akkor nem vonsz ki belőle.
(#) n_yálastrubadúr válasza foxi63 hozzászólására (») Szept 22, 2012 /
 
Na sajnos az van, hogy ha megy az adó be sem lép sosem a Tmr1 megszakításba ..
Következő: »»   307 / 1210
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