Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Szoktak csinálni valamilyen elektronikus eszközből zajgenerátort (általában valamilyen P-N átmenet zaját erősítik fel), amit A/D-zve a véletlenszámsorozat kezdőértékét is "véletlenre" lehet állítani. A véletlenszámgenerátor által adott sorozat értékeibe is bele lehet valahogy kombinálni (pl. xor-ral biteket forgatni) ennek a zajgenerátornak a zaját, akkor már nagyon jó "véletlen" számsorozatod lesz.
Szerk.: vagy a másik, hogy a mikrokontroller figyeli a tápfeszültséget és ha az elkezd összeomlani (kikapcsolják a készüléket), akkor a véletlenszámgenerátor aktuális állapotát elmenti az EEPROM-ba. Bekapcsoláskor pedig az EEPROM-ból elővett értékkel indítja a véletlenszám-generálást. A véletlenszám-sorozat így minden bekapcsolásnál folytatódik, nem újraindul.
Azt hiszem, itt már mind a két megoldás az ágyúval verébre lőni kategória. Ha jól belegondolunk ez igazán csak egy játék, valódi véletlen számokra nincs szükség, elég ha sok variáció van. Ezek megvalósítása több problémát vetne fel, nagyobb processzor kellene hozzá, mivel itt már minden láb foglalt ergo többe fájna a pénztárcának. Mivel többet tervezek építeni belőle, ezért ez is fontos érv.
A jelenlegi keretek között az az ötleted megvalósítható, hogy a véletlen szám generátor kezdőértékét is megadni, mondjuk egy másik véletlenszám generátorral. Vagy mondjuk amíg az illető nyomja a gombot, forgatni a biteket és ha elengedni, azt megadni a véletlenszám generátor kezdőértékének.
Igazad van, egy ilyen alkalmazásnál lehet, hogy felesleges ennyire megbonyolítani. Abban is igazad van, hogy ha van felhasználói közbeavatkozás, akkor abból biztosan lehet valamilyen "véletlen" patramétert kombinálni a generált számba, és ezt érdemes is megtenni valahogyan. Pl. azt, hogy milyen hosszan nyomta a gombot a felhasználó.
Tulajdonképpen volt régen olyan elektronikus dobókocka, ami annyit csinált, hogy amíg nyomta a játékos a gombot, addig nagyon gyorsan számolt 0-5 között, körbe-körbe. Amikor elengedte a gombot, akkor meg megállt ott, ahol éppen tartott. Természetesen a kijelzésnél a 0-5 bináris értékek helyett 1-6 számú LED mutatta a dobás értékét, ahogy a hagyományos kockán is vannak a pöttyök.
Egy másik javaslat: Power On Reset-től az első gombnyomásig pörgetni egy számlálót. Az utolsó néhány bit biztosan véletlenszerű lesz...
Sziasztok!
PIC18F252 CCP modul beállítási gondjaim vannak.... A feladat az lenne, hogy a CCP1 modult capture módba állítom. A TIMER1-hez rendelem, s az RC2 (CCP1)-es lábon érkező minden lefutó(!) élre a uC átírja a TIMER1 értékét a CCPR regiszterbe. A progi részlet: ; CAPTURE (CCP1) mód beállítása clrf CCP1CON, ACCESS movlw B'10000000' movwf T3CON, ACCESS movlw B'00000001' movwf T1CON, ACCESS movlw B'00000100' movwf CCP1CON, ACCESS Ez így nem működik, mert a hibás megszakítások generálodnak (szimulátorban is). PIC16F877-en működik. Ha a lefutó élt felfutóra állítom (csak ezt módosítom), akkor nagyon szépen működik a progi. Csak hát nekem lefutó élre lenne szükségem.... movlw B'00000101' movwf CCP1CON, ACCESS Tudnátok segíteni? Mi a probléma? Mit állítottam be rosszul?
Hello
Nincs valami nagyobb több száz µF-os kondenzátor a piced táprészénél? Építettem egy pices áramkört, ahol a tápnál volt egy 1000µF-os kondenzátor. A PICKit2 -m addig Vdd error-t jelzett az icsp programozásnál, amíg ki nem vettem azt a kondit. Azóta jumperrel le lehet választani a kondit, ha programot szeretnék módosítani a picben. Valószínűleg rövidzárnak hitte a PICKit2. Üdv.
Sziasztok!
Egy 18f258-as pic-et programozok asembly-ben. Olyan gondom lenne, hogy az AN4-es (RA5) lábat szeretném használni feszültség mérésre, de az adatlapban nem találtam olyan konfigurációt amiben csak ez a láb lenne analóg bemenet. A többi analóg láb már fel lett használva digitális kimenetnek. Tudom, hogy lehetne új panelt készíteni, de szeretném ezt elkerülni. Működne úgy a dolog, hogy beállítom az összes lábat ADCON1-ben A/D-re és én az első 3at kimenetként használom? Vagy létezik rá megoldás? Előre is köszönöm a segítséget!
Van amikor működik, de láttam már olyat, hogy nem működött, és úgy rémlik, hogy pont egy 18F458 volt az, aminél nem működött. Hiába állítottam a TRISA-t kimenetté, amíg az ADCON1-ben nem volt digitálisra állítva a láb, addig bemenet maradt. De nem nagy valami kipróbálni, kiraksz rá egy logikai szintet, 270ohmmal kívülről a másik irányba húzod és megméred, hogy mi a helyzet a lábon.
Úgy emlékszem, hogy ilyen esetben a kimenet becsapósan működik. Hol jó szintek vannak rajta, hol nem...
Ezért szeretem én az ilyen dolgokat... A véletlen a kedvencem...
Majd este nekiesek és le is tesztelem a dolgot. A probléma az, hogy az egyik lábon folyamatosan kellene a kimeneten a jel. Legalábbis A/D konverzió alatt is. A többi lábnál megoldható az, hogy addig analóg bemenet még konvertálok utána meg digitális kimenet. (egy termosztáton dolgozok amúgy) Idézet: Akkor itt a véletlenszám-generátor a dobókocka projekthez! „Hol jó szintek vannak rajta, hol nem...”
Szia
megpróbáltam ezt a megoldást amit küldtél és sajnos mégsem a Brown Out okozza a reseteléseket. Csak bánatomra már egyre többször jelentkezik. Esetleg ez lehet melegedés probléma is, vagy esetleg mivel reléket kapcsolgat az zavarhatja meg a Pic-et?
Mutass egy fényképet a kész áramkörről. LVP bittel mi a helyzet? MCLR lábbal mi a helyzet?
Ha csak 1 A/D-zendő jeled van, akkor szerintem két átkötés utólagos beépítésével meg lehet esztétikusan is patch-elni a panelt, hogy az analóg jel az AN0-ra kerüljön, ami meg eddig azon a lábon volt, az kerüljön arra a lábra, ahová most van az analóg bekötve. Természetesen a rogramot is ehhez kell igazítani. Prototípusnál nem szokott az ilyen patchelés olyan borzalmasan nagy gond lenni, ha meg már minden jól működik, akkor a paneltervet átrajzolod a letesztelt valóságnak megfelelően, hogy az esetleges utángyártásnál már minden a helyén legyen. Csak emiatt biztosan nem érdemes új panelt készíteni.
Egyébiránt én inkább tartózkodnék az olyan megoldásoktól, amik az adatlap szerint nem támogatottak. A baj az ilyesmikkel az szokott lenni, hogy lehetséges, hogy a mostani chippel kiteszteled és jól működik, de egy későbbi, más revíziójú chippel meg már nem fog. Vagy ha egy másik, hasonló lábszámú chipet teszel bele a fejlesztések során (mert pl. több memória kell, vagy valami olyan periféria, ami ebben nincs), és abban a nem dokumentált portkezelés nem úgy működik, mint ebben, akkor az megintcsak fejtörést fog okozni.
Sajnos már teljesen be van dobozolva, így belsejéröl képet nem tudok küldeni pont ezért tartok attol hogy talán a belső hőmérséklettől resetel.
Ez a kapcsolás a Topi féle időkapcsolós hosszabító, majdnem teljesen úgy lett bedobozolva mind ahogy ő is csinálta! LVP ki van kapcsolva, MCLR pedig 10K tápra van húzva már BROWN OUT -ot is kikapcsoltam de még így is resetel.
pic12f683-as kontrollert programozok ICD2-vel assemblyben. Namost ha jól tudom ill. értem a dolgot, akkor debug-ra nincs mód.
namármost akkor hogyan tudom ellenőrizni az A/D konverzióm eredményét? Mert hiszen nincs breakpoint ahol a watch-ban látnám az értéket. kimenetem semmi más mint egy PWM jel. Ez egy búvárlámpa vezerlője lesz, ahol 2 analóg láb van. 1 akkufeszültéség mérés, 2 LED hőmérséklet NTC-vel. Főleg a hővédéelem miatt fontos lenne, hogy jól tudjam belőni a paramétereket. Túlmelegedés esetén elkedni csökkenteni a PWM duty értéket.
Miért nem dugod össze próbapanelon és akasztasz rá egy 232-t? Ezen keresztül egy putty-val már tudod olvasni. Lehet, hogy macerás, de én sokszor így szoktam fejleszteni. Olyan hardver hibák is elő jönnek amire nem gondoltam programíráskor.
Azért 2 szál drótot (RX és TX) rá tudsz akasztani?
Teszel egyik lábára egy ledet, másikra potmétert, és beleírod, hogy a konverzió eredménye ha mondjuk 3V felett van, akkor bekapcsolja a ledet. Utána potmétert végigtekered nullától maximumig, ha 3V-nál bekapcsol a led, akkor jó az eredmény.
Sziasztok!
Egy dsPIC33FJ64MC204-el kapcsolatban kérném tanácsotokat. Helyzet a következő: Van egy 5V-os kimenetű jelforrásom, ami az egyik 5V toleráns lábra csatlakozik. Átnézve az adatlap Electrical Characteristic részét, feltűnt, hogy az 5V toleráns lábak csak akkor viselik el az 5 voltot, ha a tápfeszültség legalább 3V, az alatt Vdd+0.3 voltot szabad ráadni legfeljebb. Normális esetben ez nem is gond, mivel 3.6V-ról járatom. Aggódom viszont az miatt, hogy ha a bekapcsolás pillanatában már jelen van az 5V-os bemenő jel, de a tápfesz még nem érte el a 3V-ot, akkor károsodhat a bemenet. Sajnos szkóppal nem tudom lemérni, mennyi ideig tart a táp felfutási ideje. (Elszált a függőleges eltérítésem.) Saccra nem tarthat tovább 0.2 másodpercnél. Nektek mi a véleményetek?
Szerintem valamit elnéztél az adatlapban. Az szokott lenni, hogy az 5V toleráns lábakon nincs felsőoldali védődióda, és ezesetben nem számít, hogy mekkora a kontroller tápja, lehet akár 2V is, akkor is nyugodtan mehet az 5V a bemenetre.
Üdv
Lehet úgy feszültséget mérni egy 16F628A-val, hogy PWM jelet állítok elő majd azt átlagolom és a belső komparátorral összehasonlítom a mérendő feszültséggel?
Lehet. Egy picit lassú lesz, de végülis működik.
És tényleg Megint egy olyan lépés a microchiptől, amit nem értek
Milyen sebességű az a bejövő jeled? Én tennék vele sorba egy 10k ellenállást és ennyi.
Legfeljebb 2MHz-es. Ez miatt nem szeretnék szintet illeszteni / diódázni. (Ráadásul összesen 6 ilyen bemenetem van, csak a kérdésben 1-et emeltem ki.)
A jelalak sem torzulhat sokat, egy quadrature kimenetű enkóderről van szó.
Szia!
Így egyszerűbb: ADC 16f628-cal Ha mindenáron feszültséget akarsz mérni a 16f628-cal. A lap alján ott a kód is.
Nemtudom, nekem furcsa, eddig még nem láttam ilyen megoldást 5V toleráns lábra sehol sem. Szerintem elég lenne oda szimplán egy-egy soros ellenállás, ha nem 10k, akkor 1k.
A pwm-en tökéletesen vissza lehet ellenőrizni. Kötsz rá egy soros 1k-s ellenállást, annak a végére meg egy 100µF kondit. A beolvasott analog értéket a pwm-re kiküldöd és század pontosan ugyanazt a feszt fogod rajta mérni, amit az a/d beolvasott.
|
Bejelentkezés
Hirdetés |