Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Köszönöm mindegyikőtöknek a segítséget, de meglett a hiba oka!
A fentebb beillesztett kódban voltak ilyenek: Idézet: „movlw 0b11101100” Ezt úgy néz ki az MPLAB nem tudja értelmezni mert a W-be nullát rak. Persze hogy utána a konfigurációs regiszterekbe sem rakta be az értéket! Átírtam ilyenekre és jó lett: Idézet: „movlw b'11101100'” Most már megvan a 38kHz, bár igazából csak 37,74kHz de majd belövöm mindjárt pontosabbra. Nem értem hogy ez miért lehet baj és ha már az akkor viszont miért nem szól érte az MPLAB?! A hozzászólás módosítva: Jan 26, 2014
Szia!
Azért nullát rakott be a WREG-be, mert a "0b" szócska azt jelzi a fordítónak, hogy hexa számot adsz meg, és csak az utolsó 2 számjegyet nézi a megadott számban. Tehát pl.: MOVLW 0b6512 Ha ezt írod be, akkor a WREG-be 0x12 fog kerülni (decimálisan 18). Nálad "11101100" szerepelt, annak az utolsó 2 számjegye pedig 0x00. Szerk.: az, hogy miért nem szól az MPLAB, hogy nem csak két számjegy van, az gondolom azért van, mert szimplán kihagyták a fordítóból. A hozzászólás módosítva: Jan 26, 2014
Érdekes, mert ezt a kódot (a CCP modul beállítását) egy netes programmal generáltam és az írta így.
A 0b-t hol olvastad, hogy hexa-t jelent ?! Én ahol használtam valaha, mindenhol a binárist jelölte, szerintem itt is, csak legfeljebb ilyen formátumban nem fogadja el és címkének, szimbólumnak, akárminek nézi... !
Ez megtévesztő és egyben érdekes egybeesés, amin én is elgondolkodtam egy darabig. A fordító alapértelmezésben hexát fordít. Tehát a 0b azaz 0B az D'11' azaz B'00001011'
A fordító nem nézi azt, hogy mekkora számot írunk, az assebler buta, nekünk kell okosabbnak lenni. A 0b11101100 = D'47530905856' a fordítónak és valóban a W-be 00-t a két utolsó tagot teszi. A hozzászólás módosítva: Jan 26, 2014
Aha, értem már, hol a bibi ! Én mindig átállítom az alapértelmezett számrendszert tízesnek ( asm-ben) és úgy a 0B az bináris, nem fogadja el hexának !
A hozzászólás módosítva: Jan 26, 2014
A 0B nem bináris akkor sem, mert B'xxxxxxxx' formátum az elfogadott. Azért nem szerencsés átállítani, mert ha kapsz egy példa kódot, amit be szeretnél illeszteni, mint ez esetben Attila, akkor ütközni fog, és nem győzöd keresni a hibát. Nekem egyáltalán nem okozott problémát, hogy a hex az alapértelmezett.
A hozzászólás módosítva: Jan 26, 2014
Igen, meg a xxxxxxxxB is jó és itt, ha a B után írsz valamit, akkor "fütyül" emlékeim szerint !
A hozzászólás módosítva: Jan 26, 2014
Szól érte a fordító, ha nincs kikapcsolva.
Idézet: „Warning[202] <forrás állomány neve> <sor száma> : Argument out of range. Least significant bits used.”
Ja, holmi "warning"-okkal én nem szoktam foglalkozni. Csak az error-ok zavarnak mert attól nem fordítja le és az már bosszantó tud lenni.
Más téma:
Régóta gondolkodom hogy hogyan lehet véletlen-számot generálni mikrovezérlővel. Utánaolvasgattam és arra jutottam hogy a legjobb megoldás ha mintát veszek az A/D-val egy lábról ami a levegőben van és az eredmény legalsó bitjét tekintem véletlennek. Nos ma végre ezt kipróbáltam. Direkt nem konfiguráltam fel rendesen az A/D-t (PIC belső A/D-je) hogy tuti hülyeségeket mérjen és a lábat a levegőben hagytam lógni. Beállítottam hogy másodpercenként generáljon így "véletlent" és azt egy másik lábán adja ki L és H szintek formájában. Ezt pedig rákötöttem a digitális szkópomra és ott néztem mit csinál. Még egyszer leírom: másodpercenként generált elvileg "véletlent". A gyakorlatban azonban a szkópon vagy tökéletesen hibátlan 50% kitöltési tényezőjű négyszögjelet láttam percekig folyamatosan, megszakítás nélkül, vagy percekig stabil L szintet. Ez így nem valami jó véletlenszám-generátor, ha több száz egymást követő alkalommal ugyan azt az eredményt adja. Esetleg van jobb ötletetek? És egy megint másik téma: Pontosan kellene időt mérnem PIC-kel, ezért kvarcot tettem rá. De a PIC-nek el is kellene mennie aludni mert nem akarom hogy fogyassza a kis gombelemet. Csak nagyon ritkán ébredne fel idő göngyölése miatt meg pár kisebb apróságért. De most nézem a PIC adatlapját (PIC18F25K80) hogy kvarc esetén nem tud elmenni aludni! Illetve el tud csak a kvarc le fog állni. Azért ez elég komoly probléma és biztos hogy van rá megoldás. De micsoda? Vannak ezek az RTCC IC-k, erre felé keresgéljek?
RTC ic, vagy kötsz a timer1 oszcillátorra órakvarcot, az tud futni sleepben is emlékeim szerint.
Pedig nem árt ám a warningokkal foglalkozni, mert nem csak úgy szórakozásból tették azokat oda!
Végül is minek is, miután csak azt írta pontosan, hogy mi a baj...
Attól függ milyen véletlenszámra van szükség. Fényjátékoknál szoktam táblázatokat használni. A megfigyelőnek nem tűnik fel, hogy 100 alkalmanként ugyanaz a sorrend, de még nekem se aki tudja hogy így működik...
Erről van szó: Bővebben: Link
Mondjuk tíz esetből legalább egynek illene másnak lennie.
Tegyél rá egy mikrofont! Minden pl. 50-ik hang indítja a csatornaváltást ! Ez eléggé véletlenszerű tud lenni ( FIR szűrővel csak az ő hangjára hangolva ! )!
Erre is jó a megoldásom. Találj ki "véletlenszerű" időpontokat és oszd el a soron következő műszakokra. Az alkalmakat is meghatározhatod előre. Ilyet csinálsz 10-20-at és kész.
Ezt nem értem.
Találjak ki sok időpontot hasraütés-szerűen és egyszerűen csak lépkedjen egymás után az egyikről a másikra? A hozzászólás módosítva: Jan 26, 2014
Azt írtad, előre tudja mikor lesz műszakban a tag. Előre ki lehet találni mikor váltson csatornát, csak arra kell figyelni, hogy véletlenszerű időpontoknak tűnjön, hogy ne lehessen benne rendszert találni. A végén egyébként úgy is azt fogja hinni, hogy elromlott a TV...
szerk: Igen. A hozzászólás módosítva: Jan 26, 2014
Egy pseudo random generátor.
A hozzászólás módosítva: Jan 26, 2014
Sok esetben nem tesztik a véletlenszám generátorok által adott eredmény. Erre lehet mondani, hogy akkor nem véletlenszámokra van szükségem. Ez pedig pontosan így van. Sok esetben az álvéletlen sorozat sokkal szórakoztatóbb, célravezetőbb és sokkal egyszerűbb megvalósítani is.
Idézet: „Vannak ezek az RTCC IC-k, erre felé keresgéljek?” Én annó vettem egy marék R2025S-t, azóta azt rakom mindenbe. Nem a legolcsóbb (most kb 650.- Ft), de 3V-nál <1uA a fogyasztása, és a kvarc beépített, i2c-n kommunikál.
Üdv! Segítséget szeretnék kérni egy mc68s711-el kapcsolatban. Amatőr vagyok a témában. Ezzel a chippel meg lehet oldani hogy a készülék master vagy slave módban induljon el, ha igen ezt hogy tudom állítani, illetve milyen eszköz szükséges hozzá? Válaszokat előre is köszönöm.
Watt fórumtárs arra célzott, hogy ez PIC-es topic, nem freescale.
Próbáld itt.
A Freescale honlapján keresgélj (a 711 utáni jelzések is kellenek). Ez egy 8-bites, és elavult mikrovezérlő. Ha át tudod írni a programját (ha csak egyszer írható ROM-ja van, az pech), akkor azt csinálsz vele, amit akarsz - meg amire a memóriája futja.
pl. MC68HC711E9 12 kB EPROM, 512 bájt RAM Ebben a topikban mással foglalkozunk, itt ne várj ennél több segítséget!
Szia!
A PIC felébreszthető interrupt lábról? Ha igen akkor pl.: DS1307 RTC IC, annak van egy SQW/OUT lába ezt lehet be lehet állítani 1Hz frekvenciára. Másodpercenként felébreszti a PIC-et az kiolvassa az időt és újra alszik. Talán még a kvarcot is elhagyhatod így. Ezzel kapsz egy teljes naptárat és a DS egy szuperCapról elmegy hónapokig külső táp nélkül.
Szia!
Köszönöm az ötletet, majd kitalálok valami ilyesmit. |
Bejelentkezés
Hirdetés |