Fórum témák
» Több friss téma |
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?
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?
ADCON1 = 0x07; beállítással próbálkoztál már? (Analóg bemenetek tiltása)
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...
Az jó lehet amikor a 0 hangerő után átbillen a max. hangerőre.
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...
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
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
icserny: Köszönöm!
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?
Talán így:
A hozzászólás módosítva: 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...
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
Idézet: 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.„1 másodpercenként villogtassak egy LED-et az RD0-ás porton?” 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.
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?
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.
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
Ezt nem értem. Nekem írtad?
igen
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.
Timer1 használt?
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ó.
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...
Köszönöm! Ezt szimulálom 4Mhz-es a kristály.
össze is dobtam:
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 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
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
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.
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.
Na sajnos az van, hogy ha megy az adó be sem lép sosem a Tmr1 megszakításba ..
|
Bejelentkezés
Hirdetés |