Fórum témák
» Több friss téma |
Nos akkor el kell felejteni a PWMx_Set_Duty() függvényt és írni kell helyette másikat vagy közvetlenül kell kezelni a CCCRxH és CCCRxL regisztereket.
Nyilván velem van a baj, de nem egészen értem a problémád. Miért kellene használni azt a 2 bitet is amikor a PR2 értéke sem nagyobb 200-nál. Ugyanakkorára állítja a CCPRxL-t is. Nekem sosem volt bajon 18F-eken ha egyforma volt a period meg a duty regiszter. Mindig kijött az egyenes vonal belőle, nem kellett magasabbra állítanom a duty-t, de mondom, nyilván félre értek valamit.
Én használtam ezt a függvényt, és nem volt vele se mi gondom.
Azt a "kanóc nélkül" dolgot nem értem. Én arra asszociálnék belőle, hogy wifiznél. Rosszul értettem?
Idézet: „Próbáld meg nagyobb számmal elérni, hogy a CCPRxL -be 199 -nél nagyobb szám kerüljön.” Ha CCPRxL = 199 és egyell nagyobb értéket attam meg akkor mindig 0 ra váltott a CCPRxL. És sajnos igy nem tudtam ezt beállítani. Ebbe a helyezetbe mit lehet még tenni??
Nekem nincs vele gondom, legfőképen azért, mert nem használom.... Csak segíteni próbálok....
Lehet, Nektek jobban menne, hoszen legalább használtátok már.
Nem tudom, C-ben hogy megy ez, de ha PR2-őt 200-ra állítod, a teljes számolás 201 lesz.
Tehát a megszakítatlan magas jelhez CCPRxL 201 kell legyen. Hacsak nem növeli meg a C fordító automatikusan 1-el, CCPRxL értékét, nem jön ki a megszakítatlan magas jel.
Nálam az a probléma akkor hogy a CCPRxL nem megy fel 200 és igy nem lesz teljes kitöltésem???
Órajel hiba nem lehet ?? Pic18f46k22 használom 16mhz 4xPLL el.
Akkor állítsd le a pwm-et, amikor max kitöltést akarsz, és egyszerűen kapcsold be a kimenetet!
Assemblyben gond nélkül feljebb írható a CCPRxL mint a PR2. Ahogy Hp41C korábban megjegyezte, nem látunk bele a C függvények belsejébe, így nem tudni, mitől van agytengely kottyanása. Amúgy űrhalyót vezérelsz, hogy ekkora órajelre van szükséged? A hozzászólás módosítva: Okt 4, 2017
Idézet: Ez a megoldás. Én basicben írogatok, de a regisztereket közvetlenül írom. Nem használom a beépített függvényeket pld.: PWM-nél, és még sok esetben sem, a proc perifériák programozásánál. Nincs is gondom ezekkel. „vagy közvetlenül kell kezelni a CCCRxH és CCCRxL regisztereket.”
Összefoglalva:
- A Micro C PWM könyvtárában levő
eljárás 8 bites értéket vesz át és 0 jelenti a 0% -ot és 255 jelenti a 100% -ot. Ez az eljárás nem kezeli a CCPRxH 5. és 4. bitjét sem. Továbbá a 255 -ös érték megadásakor a PR2 -vel megegyező értéket teszi a CCPRxL -be. Nem vagyok meggyőzve a legutóbbi állításról, de ezt támasztja alá a két példád. - Mivel az átadható legnagyobb érték a 255, így nincs lehetőség a függvénnyel a PR2 értékénél nagyobb értékre állítani a CCPRxL -et. - Miért is kellene nekem egy regiszter értékének megváltoztatásához egy paramétert átadni (FSR2 indirekten a software stack -en), eljárást hívni, a stack -ről felvenni, számolni vele, beírni a SFR -re majd visszatérni és (minden hívás után ismételten) lepucolni a paramétert a stackról? Ezenkívül jól elfedni a lényeget... ![]() A CCPRxL = 255; utasítás csak egyetlen gépi utasítás setf CCPRxL (esetleg egy bank beállítás, de az az eljárásban is benne van).
Igen.... Az lenne a cél hogy modulok ne kábelesen legyenek összekötve hanem valamilyen rádiokommunikációval, csak nem tudom milyen frekin, és milyen kommunikációs protokollal lehetne ezt megvalósitani.
Sikerült igy:
Rendesen müködik igy idömultiplexelés nélkül. Amugy ezeket a regisztereket honnan tudjátok melyik melyikés melyik mit használ?? Idézet: „Amúgy ezeket a regisztereket honnan tudjátok melyik melyik és melyik mit használ?” Az adatlapjából. A hozzászólás módosítva: Okt 5, 2017
Elnézést, nem kötekedésképpen írtam, de tényleg nem értettem miért kell a 10 bit. A 8 bites PWM is PWM. Aztán közben rájöttem, hogy akkor igazad van, ha 255-nél 255-t írt volna a MikroC a regiszterbe, akkor a 256-hoz már kellene plusz egy bit, de láttuk, hogy csak 199-et ezért nem értettem.
Az viszont még mindig relytély, miért kell egyel magasabb, az adatlap ellenére. Hozzáteszem jó ideje már főleg 32bit-ezek, és azoknál az egyenlő is elég, és nem emlékeztem, hogy a 18-asoknál ez így működött volna, de majd frissítem az emlékeim, ha lesz időm. ![]()
10 bites PWM -nél, ahol a PR2 = 255, az 1023/1024 * 100% kitöltéshez (4 * 255 + 3) = 1023 -at kell a CCPRx regiszterekbe írni. Hogy ez a CCPRxL 7,6,5,4,3,2,1,0 és CCPRxH 5,4 sorrendben történik az egy részletkérdés. Ha a CCPRxH 5,4 bitjei 0 -ák, csak a CCPRxL bitjei 1 -ek, akkor a kitöltés 4 * 255 = 1020, azaz a kitöltés 1020/1024 * 100% = 99.6 %. Így mindig lesz a kimeneten egy kis ideig alacsony szint.
Mit szólnál mondjuk ethernethez? Bővebben: Link
Kicsit off kérdés. Annak a 74hc595-nek nem tudsz véletlenül ellenpárját?
Olyasmi kellene, hogy párhuzamosan enable jellel belatchelni a 8 digitális bitet, áttölteni shift regiszterbe, és órajel vezérléssel 1 vonalon leolvasni. Belepottyantam egy olyan szituba, amikor nagyon sok párhuzamos bitet kellene beolvasnom pár lábon ![]()
Mennyi az a nagyon sok?
Mert lehet, hogy egy megfelelő lábszámú olcsóbb PIC-el jobban jönnél ki, és még áramkörileg is egyszerűbb lenne.
74166 parallel-in/ serial-out 8-bit shift register, synchronous load
74165 parallel-in/ serial-out 8-bit shift register, asynchronous load CD4014 parallel-in/ serial-out 8-bit shift register, synchronous load 74647 parallel-in/ serial-out 16-bit shift register, synchronous load Idézet: „Kicsit off kérdés. Annak a 74hc595-nek nem tudsz véletlenül ellenpárját? Olyasmi kellene, hogy párhuzamosan enable jellel belatchelni a 8 digitális bitet, áttölteni shift regiszterbe, és órajel vezérléssel 1 vonalon leolvasni. Belepottyantam egy olyan szituba, amikor nagyon sok párhuzamos bitet kellene beolvasnom pár lábon” Vannak olyan shiftregiszterek ahol a lábak állapotát belehet olvastattni???
Írtam négy egyszerű példát vagy marad a portbővítő használata, pl. MCP23S17.
A hozzászólás módosítva: Okt 8, 2017
@sonajkniz, @gyoran, @Bakman köszönöm a tippeket, megnyugtató lehetőségekkel vagyok ellátva a problémát illetően.
A hozzászólás módosítva: Okt 8, 2017
Sziasztok!
Olyan dolgot szeretnék megvalósítani egy PIC 12F683-el, hogy a kimenetén 21khz-től 24khz-ig sziréna szerűen változzon a frekvencia. Jelenleg most ismerkedem a PIC-ek programozásával. Két programom van jelenleg: Proteus_Professional_7.5_SP3 és Proton Compiller 3.5.4.7. Extraként az is szóba jöhetne, hogy az IC bemeneteire potmétert tenni és akkor lehetne állítgatni a minimum meg maximum frekvenciát. Segítsetek, hogy hogyan induljak el a program megírásában.
Szia,
Feltettél egy általános kérdést. Ha teljesen általános checklist kell: 1. Angol megy-e? Anélkül moccanni sem tudsz. 2. Analóg és digitális elektronikai alapok megvannak-e? Tranzisztor / fet, műveleti erősítő, logikai kapuk (legalább nand), d-flop / vagy legalább az NE555 - ezekkel jó lenne építési tapasztalat. Ha nem mersz megfogni egy tranzisztort sem kimeneti teljesítmény illesztőnek, vagy azt sem érted, miért kell az, vagy nem tudsz kézzel rajzolni egy kapcsolási rajzot / nem érted meg, ha rajzolnak neked, úgy megint csak moccanni sem tudsz. 3. Pic adatlapját letöltötted? Elolvastad? Amit meg kellett értened belőle, az az oszcillátor config, pin config, adc, pwm. Ha bármelyiket nem érted, az probléma. 4. Pic programozód megvan (mit használsz?) / nincs meg? (Fejlesztői környezetre jobb lenne elsőként az MC alapot használni.) Amíg a fentiek nem mind zöld pipa, addig még ne indulj el a program megírásában ![]() (És hogy nem mind zöld pipa, azt abból gondolom, hogy az adatlapban még példakódok is vannak, és ahhoz képest nem részletre kérdeztél rá, hanem egészében nem tudsz elindulni.) (Szerk.) A hozzászólás módosítva: Okt 9, 2017
Aha. Így már értem, hogy mit akartál mondani. Ezzel sosem volt problémám ugyanis midig N-FET-et használok LED meghajtásra, illetve P-csatornásat is, de nem PWM módban csak ki be kapcsra. Az 595-t sem használtam így. Viszont akkor had javítsak egy kicsit azon amit mondtál. Nem neked, mert te nyilván tisztában vagy vele, csak elírtad. Egyel többet kellene a CCPR regiszterekbe írni, vagyis csak az segít ha a PR2 regisztert egyel csökenti. De mint látom megoldotta a regiszterek közvetlen írásával, a 200 nagyobb mint a 199. Viszont PR2=255-nél nem lehet 100% kitöltést megvalósítani. Valamint, az a 2 LSB bit is lényegtelen CCPCON(4:5) . A teljes kitöltéshez úgysem számít a köztesben meg elhanyagolható és észrevehetetlen. Fölösleges használni.
Sziasztok van 5*8 RGB ledem és úgy idömultiplexelem hogy egy led kivilágitattok 250 us enként és utánna offolom aztán a következö és igy tovább mig el nem érem a 40 ik ledet.
Ha jól számolom a lefutási idöm 100ms és erősen vibrál a kép miért lehet??
Az Angol elég jól megy. Analóg áramkörök is mennek, már több nyák-ot és kapcsolást készítettem.
Na a 3. Ponttal már gondok vannak. PIC adatlapját letöltöttem, de az általad írt fogalmakat még nem értem. Ha tudsz tananyagot küldeni ezekről, azt megköszönném. PIC égetőm az van, de előre megírt programok égetésén kívül még nem csináltam vele semmit. |
Bejelentkezés
Hirdetés |