Fórum témák
» Több friss téma |
__config _INTRC_OSC_NOCLKOUT & _LVP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_ON & _CP_OFF
ezt használtam belső oszcillátornál, 9600 Baudnál működik is, de amint 57600 Baudot állitottam be, mintha a szinchronizáció meghalna és nem értem. külső oszcillátornál ami 20 MHz 22 pf kondenzátorokat használtam. Mondjuk ott azthiszem HS helyett XT - t raktam az baj lehet?
Hogyan kezeled az UART -ot? 57600 Baud -nál kb. 173us áll rendelkezésre egy adat elvételére. 20 MHz-n 865 utasítás, 4 MHz -n 173. Megszakításos, bufferelt uart kezelés kellene, a ráfutási hiba veszéley miatt.
Szia!
MCLR felhúzó ellenállat 10k, a helyén van. A ledet lehúzó ellenállás, ahogy a rajzon is szerepel, 470ohm, szintén a helyén van. Tápellátás választható, vagy USB, vagy pedig külső táp, ilyenkor egy feszstabon keresztül kap 5V-ot. A PICen kívüli hibakeresésre jutottunk mi is, ezért próbáltuk ki ugyan azzal a PICkel dugdosósban is, hogy megbizonyosodhassunk róla máshol lesz a hiba (na meg 1400Ft-ot elpukkasztani nem vicces dolog). Paneltervet megkérdezem a kollégám, akivel terveztük, hogy felrakhatom-e (nem pénzes dolog, szigorúan hobbi, csak először az ő honlapján szeretnénk publikálni). Tudom, hogy így "vaktában lövöldözés" a segítséged, de sajnos nincs mit tenni, amíg nem bólint rá. Éppen emiatt kérdeztem általánosságban (a lehetőségekhez mérten körbeírva), hogy mi okozhatja ezt a jelenséget, hátha valaki azonnal rávágja, hogy te pajti nézd meg össze van-e kötve az xy láb a táppal...
Külső oszcinál is ugyanezeket a konfigbiteket használtad?
Szerk.: csak biztos ami biztos alapon kérdezem.
Nos aszinkron módon, nem vagyok benne profi így ha hülyeséget írok, csak szóljatok. Hallottam valamit az autobaudról, de ahhoz már végkép nem értek.
Csatolom az asm fájlt
nem, ott természetesen másikat:
__config _HS_OSC & _LVP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_ON & _CP_OFF
4MHz:
Ha BRGH=0, akkor belső 4MHz órajelle a BGR = INT((Fosc / 64 / Baud) -1) 0 -t ad. - Nem használható. Ha BRGH=1, akkor BGR = ((Fosc / 16 / Baud) -1) 3.34 - Túl nagy a kerekítésből származó hiba. 20MHz: Ha BRGH=0, akkor belső 4MHz órajelle a BGR = ((Fosc / 64 / Baud) -1) 4.42 -t ad. - Túl nagy a kerekítésből származó hiba. Ha BRGH=1, akkor BGR = INT((Fosc / 16 / Baud) -1) 20 -at ad. - Ez lenne a jó beállítás. 20MHz külső quartz -hoz HS oszcillátor és 2*22pF kerámia kondenzátor kell és a pic táp és föld lába közé, amilyen közel csak lehet, 100nF .. 1µF kerámia kondezátor.
Nos értelek és milyen számot tegyek a SPBRG regiszterbe, az adatlapján decimálisan 21 - et ír és így is kiprobáltam és nem ment az baj lehet, ha a configban HS helyett XT oszcillátort raktam?
Az lehetett a baj... Ezt olvastad? Ha a küldés arra vár, hogy üres legyen az adó, akkor nagy valószínűséggel lekésed a vételt és egymásra futás keletkezik (az meg csak a vevő kikapcsolásával törölhető).
Ezzel a konfiggal (_HS_OSC) rakj egy 8MHz-es kvarcot a PIC-re 22pF-os kondikkal, és a SPBRG értékét állítsd 0x0C (dec.: 12)-re. És a BRGH legyen 0. Vagyis, helyette:
legyen ez:
Aha értelek előre is nagyon köszönöm és ha valamit rosszul irtam ne haragudjatok holnap ki is próbálom akkor és majd jelentkezem
Aha ezt is kipróbálom, bár bevallom őszintén ezt nem értem, mert az adatlap szerint ha 9600 Baud az átvitel akkor a BRGH=1, de kiprobalom és köszi
Aha és nem tudnál tanácsot adni, hogy módositsam a programot vagy ha megkérlek irnál valamit amiből megérteném.
Ez a formula van BRGH = 0 esetén:
Idézet: „Asynchronous) Baud Rate = FOSC/(64(X+1))” Vagyis 8MHz-nél: 8MHz/(64(12+1)) = 9615,38 lesz, ami 0,16%-os hiba, ami nem olyan vészes.
Na közbe nem fogadta el a hozzászólásomat a HE, így írhatom újból.
Szóval, még mielőtt összezavarodsz: 8MHz-es kvarcot használsz 22pF-os kondikkal, a konfigbitnél "_HS_OSC"-osat írod be, És ezt a részt átírod:
erre:
Szerk.: az RCSTA regisztert NEM kell módosítani!
Csak egy kicsit keresni kellett... Már leírtam itt.
hy
mi lehet az oka, hogy az ADRESH regiszerből kiolvasott érték sose az amit beleteszek?? Először azthittem az ad rossz. De aztán mindent ki kommentelve csak az ADRESH reg-gel foglalkoztam. Ha törlöm ha értéket adok abban sose az van. Gyakorlatilag kb amikor bekapcsol és ami belekerül. pic 16f616. az ADRESH a bank 0-ban van.
Bár még nem próbáltam, de szerintem az ADRESH (meg az ADRESL) regiszterek csak olvashatóak. (Analog Digital Result), ami logikus is, hiszen ebben lesz az A/D átalakítás eredménye, amit az A/D periféria állít be.
Bár az MPLAB szimulátora szerint lehet módosítani a tartalmát. :gumicsirke:
Köszi!
Nagyon belekockultam már megint. Nagyon rajta vagyok, ahogy lassan minden a helyére kerül, a kis sikerélményektől nemtudom itthagyni, már 4 napja lapul a seggem. Az a/d nem is volt bekapcsolva....
Pedig a szimulátor pampog, ha be van kapcsolva és nincs stimulus hozzárendelve. Akkor is szól, ha nem tartod be a 2Tad kivárást...
Idézet: Ebben nem kételkedtem. A kérdés arra vonatkozott, hogy tényleg annyi-e az értékük, és nem szakadtak pl. Az MCLR lábon levő feszültség vizsgálata is jó volna (nincs-e zaj rajta?).„MCLR felhúzó ellenállat 10k, a helyén van. A ledet lehúzó ellenállás, ahogy a rajzon is szerepel, 470ohm, szintén a helyén van.” Lehet, hogy meg kellene nézni a kvarcot is (a próbapanelon milyen kvarccal ment? Kihúzott PIC mellett a panelt ellenállásmérővel is meg kellene nézni: eljut-e a tápfeszültség és a föld minden lábra (és a VUSB kondenzátorának alsó lábához)? Nincs-e zárlat valahol? Valami nagyon triviális hiba lesz, de innen nem deríthető ki.
Holnap megint nekiugok méregetni, bent van a cégnél a cumó, "ráérős" szabadidőmben csinálom odabent.
A kvarc a panelon SMD kivitelű 20Mhz-es, a dugdosóson normál lábas (egy hálókártyából kibontva). Az MCLR zaját jövő héten tudjuk nézni, akkor jön vissza a kollégám szabiról, neki van oszcilloszkópja, amin talán látni is lehet valamit. A tápfesz és földvezetékeket mind végig fogom mérni, zárlatot eddig nem találtam (ez volt az első gondolatom, hogy a 1210-es smd ellánállások lábai alatt átvezetett vezeték valahol rövidzárat okozhat, de ilyet eddig csak egy helyen találtam és újraforrasztás után ez megoldódott). Köszönöm a tippeket, holnap még jelentkezem!
Köszi megoldódttak a dolgok. Leszámítva az ir problémát ami végül csak megállt. Fogja 8-10 méterről is, de odadnám a fél távolságot ha nemcsak a szemébe világítva menne. De nemértem miért van ez így mert a pl a dvd az bárhova irányítom klappol,és kínomba megnéztem azzal a fotodiódáva ami a dvd-be van, hogy mit szól az én áramköröm, de ugyanaz. Rádió lesz belőle. Chipcad RT14-433 amit nézegettem. nagyon remélem egy 15-20 méterig halálbiztos kapcsolatot biztosít, és nem zavar be a szervóknak, -gyorsan kell reagálniuk. Valaki rosszat jót róla?
Sziasztok!
A minap elkezdtem kísérletezni egy pic16f628a vs ds1820 párossal. Sikerült megírjam a lekérdező rutint NightPicben némi utánajárás és egy-két adag szentségelés árán! ![]() A fejlesztőpanelom az az Urbán féle verzióBővebben: Link. Beégetem a PICbe a progit, ami miután megtalálta a ds1820-at, és le is kérdezte, és el is mentette egy változóba a hőmérsékletet, és a mért értéktől függően a "B" porton lévő ledeket villogtatja. Minden pöpecül megy, működik. Amint kiveszem a fejlesztőpanelből a PIC-et, és belerakom az általam tervezett és legyártott panelba, megáll az élet. Az MCLR lábon 5k-s ellenállás a plusz fele, 100 nF-os kondi a PIC 5ös és 14es lába közt, külső 4 MHz-es kristály 2 db 33pF-os kondival, és stabil 5 V-ot kap a PIC. A kristály berezeg (megnéztem szkóppal, szép szinusz). A lábak, amiknek 0 és 5 V közt kéne ugrálnia azokon ~1,8 V van. Kiveszem a panelből, és visszarakom a fejlesztőbe, és tökéletesen működik. Próbáltam a Vörös Tamás által írt PIC - Kezdőknek könyvben található másik 3 (összesen 4) üzemeltetési módot is. Azt is, amikor csak 5V-ot meg GND-t kell neki adni (intosc_noclkout). Akkor is ~1,8 V van a vizsgált lábakon. Amint visszarakom a fejlesztőpanelba, azonnal működik. Valami ötlet/tanács? :ijedt: ![]()
hy
Ha ugyanaz az áramkör, akkor a hiba banális. Biztosan az áramkör a ludas. Vagy nem szűrt a táp megfelelően. Nézd meg jó irányba mennek a ledek gnd vagy vdd! A kristály ha 4Mhz inkább 22pf-os kondik. A szkópon meg ekkor szinusz nem lehet mert az inkább négyszög. A komparátor gondolom ki van kapcsolva a Pic-ben. Gondolom tudod ha gyorsan változik a kimenet állapota átlag feszültséget mérsz, ekkor 5V nem is lehet. Szerintem rosszul vannak kötve a ledek.
Ötletek:
- LVP letiltása vagy a PGM alacsony szintre húzása. - 4MHz pont a HS és XT mód határán van, mind a két mód kipróbálása. - Debug mód letiltása a konfigurációs szóban. - Gondolom, az A porton az analóg funkciók le vannak tiltva.
Próbálok mind a kettőtöknek egyszerre válaszolni.
![]() A fejlesztőpanelhoz tartozik egy külön megvásárolható modul, amin van 8 db led meg ellenállás meg egy meghajtó IC. Ezt csatlakoztatva a fejlesztőpanelra tudom vizsgálni a PIC lábait (egyszerre vagy csak az "A" vagy csak a "B" portot). Az új panelon nincsenek még (bekötve) ledek, csupán a PIC lábaira mérek rá(megj: ehhez az általam készített panelhoz nem tudom csatlakoztatni ezt a led modult). A kristály igen, 4 MHz-es. Próbáltam már 22 pF-os kondival is. A fejlesztőpanelen is 33 pF van, ezért kipróbáltam azzal is. A teljes "A" port használaton kívül van (leszámítva a két lábat a külső oszcillátornak) . A "ledvillogtatás " és a hőmérés a "B" porton zajlik. A komparátort nem is kapcsoltam be (az azt hiszem difúltból ki is van kapcsolva), de amúgy is: digitális áramkör lévén az összes nem használt lábát vagy GND-re vagy Ut-re kötöttem. Az átlagfeszültség méréses ötleted kedves n_yálastrubadúr, jó lehet, természetesen meg/kipróbálom, de nem hiszem, hogy olyan gyorsan villognának a ledek, hogy a DMM egyenfesz módban " ne tudná követni", ifyouknowwhatimean. De egy próbát megér. Beprogramozok neki egy olyat, hogy 3 mp-ként high majd delayms 3000 low portb.5 mondjuk. Az LVP le van tiltva, azt mindig le is tiltom, mert érthető ok miatt félek tőle. A HS és XT is jó lehet, de a fejlesztőn is 4 MHz-es a kristály emlékeim szerint (de azért mindjárt meg is nézem), és ott "XT"-vel remekül megy már x éve. Mivel az egész A port valahova kötve van, ezért akár le van tiltva akár nem, az szerintem nem játszik (mármint az analóg funkciók). A debug mód letiltása a konf. szóban alatt pontosan mire gondolsz? Ja igen, és még a nem elég szűrt a táp. A panelom (egyrészt direkt ezért csináltam úgy, ahogy) a fejlesztőpanelról kapja a naftát, ami ugyebár egy 7805-el kezdődik, és az 5,00 V-ot ad ki magából.
Most nyugodtan kiröhöghetsz érte, mert azóta futom a köröket a ram kérdéssel, és végül úgy alakult, hogy ha abból az ötletből egyáltalán lesz valami (az ára miatt lehet, hogy semmi sem lesz belőle), akkor fram-ok fognak kelleni hozzá. A tsop44-es tokosból 25khuf+ értékű ramot (2 megabyte) kell majd felzsúfolni a nyákra. Mellesleg az áramkör összes többi része fele ennyit sem fog érni. Azért írom ezt fel, mert úgy éreztem, ezzel még jövök neked: köszönöm.
|
Bejelentkezés
Hirdetés |