Fórum témák
» Több friss téma |
Igen a szimulátor nullát mér, kivéve ha stimulálom.. (ez nem mindig megy, valamiért)
Mire gondolsz mikor ezt írod? Idézet: „Valósan lehet nem így van, de az időzítés számításánál átvered magad.” HP41C: Igen, ez igaz, de nem lesz 0% kitöltés. Ettől független, ez még lehet hiba. Esetleg valami javaslat, hogy tudnám ezt megfelelőképpen átírni? Minden javaslatot megköszönöm, mert tudom, hogy ez nem a legjobb, de nem volt jobb ötletem.
Valahogy így csinálnám:
Az inicializálásnál figyelni kell legyen előző mérés (kell néhányat mérni falból, mielőtt élesben indítod). Ha jól számoltam így a két mérés belefér a 100us-ba (1MHz).
Sokat vitatkoztam itt a fórumon, hogy miért így állítjuk össze a 16 bites (vagy hosszabb) számokat (sok művelettel), amikor egy C beépített lehetőséggel (u n i o n) néhány utasítással megoldható a feladat. C18 (beállítható, hogy int -é konvertáljon) az első operandus (ADRESH) típusával kezdi a számolást, xc8 pedig mindent int -re konvertál a számolás előtt.
A hozzászólás módosítva: Okt 18, 2018
Ezzel te akkor kihagyod a 10-es utóosztást? Vagy az ettől független még kell bele?
Illetve így minden bebillenéskor mérni fog (nyilván az előzőt+aktuálisat), de így miképpen lesz ebből nekem érvényes mérésem? Mert gondolom ez a két mérés még nem mérés. Írod, hogy a számlálót és az eredményt, illetve a nullázást nem a megszakításban raknád. Főprogramból figyeljem Count tartamát és ha elér egy bizonyos számot osszak, értékeljem az eredményt és nullázzak? Nem kellene megállítani a megszakítást, ameddig az eredményeket megkapom? Így tulajdon képen mindig az első 2 mérés kerül bele az ADC-be. Ezt azért, hogy mindig magasat mérjek? A hozzászólás módosítva: Okt 18, 2018
Azért az XC8 sem teljesen hülye:
A temp a 0x75-re került.
Igen, így ki lehet hagyni az utóosztást, vagy lehet csökkenteni, mivel gondolom nem csak mérésből állna a programod. A két mérés belefér a 100us-ba, tehát mindig magasat mér. Hátrány lehet, hogy csak két mintát vesz, ha vannak tranziensek, azt kit tudja hogy méri bele. A számolásokkal lehet tologatni a mérés időpontját, akár több temp változót is lehet használni, és utólag számolni. A lényeg, hogy maradjon idő a főprogramra is, ne csak az IT-ben fusson mindig. Mivel amíg az AD dolgozik számítások történnek, ha állítod az órajelet ellenőrizni kell végez-e az AD mire a számítások befejeződnek.
Még egy dolog: én itt az ADC-t sima int-re állítottam, így van kiszámolva az időzítés.
Most nézem, hogy rossz a számításom, mivel 48us-ot eljátszik valahol, míg belép a megszakításba (valószínűleg regisztereket ment). Így sokkal kevesebb idő marad. Ha magasabb órajelet választasz, ez gyorsabban lezajlana.
Nem is olyan régen még ennyire az volt:
16F1847: XC8 V1.33 optimalizált kód (még a 60 napos periódusból):
A leginkább az tetszik, hogy az alsó byte -ot kinullázza, majd hozzáadja a ADRESL -t, majd még az átvitellel is foglalkozik. 2014 -ben készült ez a verzió.... Éljen
Próbálgatom, lehet magasabb órajel lesz a nyerő.
Kettő hatványaival való osztás egyszerű léptetés.
Ez biztosan gyorsabb, mint egy akármilyen osztás.
Tisztelt szakértők! Egy 16f628-as pic törlésénél ezt a hibát kaptam. Mit lehet ilyenkor tenni?a pic eredetileg másolásvédelemmel volt ellátva. Másik ugyanilyen picet simán tudtam törölni.
A hozzászólás módosítva: Okt 25, 2018
Nem a törlés (Erase) gombra, hanem az üresség ellenőrzésére* (Blank Check) kattintottál.
*Mi ennek a magyar megfelelője?
A másik picnél is először a törlés gombra nyomtam aztán a Blank Checkre és utána újra tudtam írni. ennél a picnél ugyanezt végrehajtom, és ezt adja ki.
Próbáld a Use Vpp First Program Entry opciót.
Kipróbáltam erre ezt írja ki.
Szerintem megy a kukába nem kínlódok vele.
Ha LVP módban (mclr jelszint TTL) próbálsz programozni (törölni) olyan PIC-et ami nem LVP módban volt programozva (mclr jelszint 13V környéke), akkor ilyen hibaüzenetet kapsz. Persze a PIC is tönkremehetett.
A másik ugyanilyen picet simán tudtam törölni. Két egyforma panelböl lettek kivéve. A másikat sikeresen fel tudtam programozni.
Üdv!
Szeretnék megkérni valakit, akinél van telepített MPLAB 5.05, nézze meg - ha lehet, hogy van-e már MPLAB Snap programozói támogatás az ATMEGA3209/4809 vezérlőkhöz (UPDI). Nem akarok ekkora programot feleslegesen telepíteni. Köszönöm!
Mekkora a tápfeszültsége a programozás alatt?
Idézet: „All bulk erase operations must take place with VDD between 4.5-5.5V.”
Sziasztok!
Mid-range 16F sorozatnál tudnátok tapasztalatot mondani a belső felhúzó ellenállásról? I2C és nyomógombhoz kellene, lehet rá építeni ilyen célra, vagy megbízhatóbb a külső felhúzás? Leírnátok a tapasztalataitokat ? Köszönöm!
A belső felhúzó kb. a 30 kΩ-os tartományba esik, mindenképpen gyengébb, mint a külső, pl. 1 kΩ-os.
Nyomógombokhoz minden gond nélkül használhatod. Hardveres I2C/SPI-nél nincs jelentősége, mert tiltva van, amikor az SSP aktív.
Az I2C busz nyitott kollektoros / drain -es vonalakkal működik, így a felhúzó ellenállás és a vonal kapacitása fogja meghatározni az alkalmazható maximális átviteli sebességet. 100 kHz -es átvitelhez 2k7 felhúzó ellenállás körüli kell, de a pontos értéket a busz hosszából, a rá kapcsolt egységek számából és bemeneti kapacitásukból kell kiszámítani.
DS1307 és a PIC adatlapja 100kHz-hez max 400pF-ot és maximum 1000ns -ot ír. (RPU = tr/Cb) Így cirka 2,5KR jön ki, de tényleg függ a panel kialakításától. Akkor csak a nyomógombnál hagyom el az ellenállást.
Köszönöm mindenkinek a felvilágosítást!
Sziasztok, van egy 16F18323 kontrollerem. Nincs rajta se kvarc, se semmi, csak a natúr kapcsolás. 100nF 5V.
A C2 lábat szeretném kapcsolgatni (sok mást szeretnék még, de ennyire visszabutítottam, mert nem találom a hibám), de a lábon 1,7V környéke van. A lábra semmi nincs rákötve. Mit rontok el? Egyszerűen nem jövök rá, van még valami periféria ami használná a lábat és tiltanom kell? Köszönöm!
A hozzászólás módosítva: Okt 28, 2018
|
Bejelentkezés
Hirdetés |