Fórum témák
» Több friss téma |
1-1 a meghajto lab fele mutato dioda is jo szigeteles gyanant.
Kiszedtem a feltételes eseményt, és most így is működik a program, Animate üzemmódban. Viszont Single Step-nél továbbra is reménytelenül kifagy a szimuláció a while-ciklusos TMR0IF ellenőrzésnél, és csak az MPLAB újraindítása segít rajta (legalábbis más orvosságot nem találtam).
Amúgy az normális, hogy a szimuláció folyamán a zöld nyilacska az éppen végrehajtott utasítás alatt van 2 programsorral? Ha a következő utasításon állna, azt még megérteném, de így...
Szia!
Akkor fordul elő a zöld nyilacska elcsúszása, ha a forrásban nem látható vezérlő karakterek vannak (CR, LF magában, unikódos karakter, stb).
Szia!
Változtatások után ( egy sor beírása, törlése ) lefordítottad a projektet újra vagy "csak" szimuláltál ? Steve
Köszi a segítséget. Az a További gondom hogy átbújtam az adatlapot és nem tudtam letiltani az MCLR funkciót. - & _MCLRE_OFF & - nem segített. Próbáltam a - 2007h,5 - címen is de nem jött be. Tudnátok segíteni hogy kell letíltani az MCLR t?
Probald meg a MPLAB config biteknel. Ki kell venni a pipat, es utana tudod allitani. Persze amugy ASM-bol is mukodni kellene. Probalj valami ujabb MPLAB-ot letolteni. Most valami V8.8x az utolso.
Valaki tudna segíteni abban, hogy ezek között a megnevezés szerint milyen különbség van, illetve, hogy ezeket USB-s égetővel lehet-e égetni:
PIC12F683-E/MD PIC12F683-E/MF PIC12F683-E/P PIC12F683-E/SN PIC12F683-I/MD PIC12F683-I/MF PIC12F683-I/P PIC12F683-I/SN PIC12F683T-E/SN PIC12F683T-I/MD PIC12F683T-I/MF PIC12F683T-I/SN Az a helyzet, hogy még kezdő vagyok, szóval jól jönne egy kis segítség
Itt a Microchip megmondja.
A különbség a tokozásban és a működési hőmérséklettartományban van. A PICkit programozó USB interfészű. Milyen USB programozóra gondolsz?
A kódot végig MPLAB-ban írtam, és miver angolul van kommentezve, még ékezet se lehet benne. Úgyhogy ennek fényében nem értem a dolgot, de ezek szerint nem sikerült megfelelő minőségű UI-t írni a microchipes fiúknak.
Minden esetben az F9-et püföltem, szóval igen, újra lett fordítva a kód.
Nagyon hasznos a szimulátor, én pl. mindig elszámolok bizonyos értékeket +/-1-gyel, esetleg elfelejtek invertálni egy változót. Ezek single step üzemmódban gyönyörűen kibuknak, és gyorsan lehet javítani őket. Idézet: „Nagyon hasznos a szimulátor,” Egyetértek :yes: ! Steve Idézet: Mindenféle hardveres trükközés nélkül meg lehet csinálni, hiszen ha a kimenet tri state állapotú... „Egy a gond hogy ezzel nem tudod azt megcsinálni, hogy mind a kettő ki legyen kapcsolva egyszerre.”
Na, ezt az elcsúszást már én is tapasztaltam, ráadásul akkor, amikor egy szívatós hiba okát kellett volna megtalálnom. A program így látszólag olyan helyen szállt el mindig, ahol nem szállhatott volna el. Ráadásul az MPLAB X azt sem mondta, hogy mi volt az oka, csak puff; reset. Kb. 1 nap kellett hogy rájöjjek mi a gond. Majd az összes hajamat kitéptem.
Sziasztok.
Van ez a jó kis cikk itt hobbielektronikán: Bővebben: Link
Ez ugye 1mp-enként hajtja végre a következőt:
Arra rájöttem, ha a
részben a 4-est átírom 40-re, akkor tized mp-ekben fog számolni. Viszont ha átírom 400-ra, akkor nem csinál semmit. A kérdésem az lenne, hogy hogyan tudnám úgy átírni a kódot, hogy századmásodpercben számoljon/dolgozzon? Előre is köszi a segítséget. Idézet: Még szép! 10 ms-onként akarsz kapcsolgatni egy olyan megszakítással, ami 65,535 ms-onként következik be? „Viszont ha átírom 400-ra, akkor nem csinál semmit.” Egy lehetőség: Ha gyakoribb megszakítást akarsz, akkor ne a 16 bites Timer1-et használd, hanem a 8 bites Timer0-t, vagy a Timer2-t!
Szia!
T1 -et minden átfordulás után töltsd fel 10000 -rel. A 65536 -ot cseréld le 10000 -re. Vagy Írd át T1 -ről T2 -re a megszakítást. Ha az órajel 4.00MHz, akkor a T2 1.00MHz -es bemenetet kap. Ezt nem tudod változtatni. A megszakításokat 100Hz -vel szeretnéd kérni. Ehhez az előosztót állítsd 4 -re, a PR2 -be (250-1) -re. Ez 1000 -rel való osztást jelent, azaz a T2 1ms -onként fog átfordulni. Az utóosztót állítsd 10 -re, a megszakítást 10ms -enként fogja kérni. Idézet: „Egy lehetőség: Ha gyakoribb megszakítást akarsz, akkor ne a 16 bites Timer1-et használd, hanem a 8 bites Timer0-t, vagy a Timer2-t!” Az a baj, hogy szeretném ha a Timer sleep üzemmódban is ketyegne, erre meg tudtommal csak a Timer1 alkalmas. (Igen sajnos ezt nem írtam le az előzőben.) Egyébként amiről szó van az egy PIC16F887. Ha arról van szó, tudok más kristályt is alkalmazni, nem ragaszkodom a 4Mhz-hez. Idézet: „T1 -et minden átfordulás után töltsd fel 10000 -rel. A 65536 -ot cseréld le 10000 -re.” Megtörtént, utána olyan 6-7 mp-enként lépett csak. Szóval jelentősen lassabb lett. Idézet: „Írd át T1 -ről T2 -re a megszakítást. Ha az órajel 4.00MHz, akkor a T2 1.00MHz -es bemenetet kap. Ezt nem tudod változtatni. A megszakításokat 100Hz -vel szeretnéd kérni. Ehhez az előosztót állítsd 4 -re, a PR2 -be (250-1) -re. Ez 1000 -rel való osztást jelent, azaz a T2 1ms -onként fog átfordulni. Az utóosztót állítsd 10 -re, a megszakítást 10ms -enként fogja kérni.” Erre ugyan az a válaszom, mint amit icserny-nek írtam. Sleep módban is szeretném ha ketyegne a timer, de nem ragaszkodom a 4Mhz-hez.
Ha feltennéd az egész programot, tudnánk segíteni.... De ne várd el, hogy mindenki minden fordítóról (arról is, amit nem használ) tudjon mindent... Még azt sem írtad, melyik fordítót használod...
Itt a megoldás - assembly -ben... Ennyi idő alatt arra nem jöttem rá, hogy miért nem dolgozza fel a CCS a
Idézet: A Timer1 sem alkalmas arra, hogy sleep üzemmódban a kikapcsolt oszcillátor periódusait számlálja.„Az a baj, hogy szeretném ha a Timer sleep üzemmódban is ketyegne, erre meg tudtommal csak a Timer1 alkalmas.” Az adatlap nem azt mondja, hogy Timer1 csak aszinkron módban és külső jelforrásról képes sleep módban számlálni?
Egy korábbi problémámmal jövök újra, mert még mindig nem sikerült megoldanom:
MPLAB X alatt írok programot, amit több modulba szeretnék szervezni. Az egyes modulokban hivatkozások lennének egy másik modul rutinjaira, illetve változóira. Ez valamiért nem akar összejönni. Ha .include parancsot használok egy modul beszúrásához, akkor működik minden, de duplázódik is minden a memóriában, ami nem jó. Ha meg .global meghatározást alkalmazok, akkor vagy nem talál valami, vagy egyszerűen lefagy a linker ( és bedobja a szokásos ablakot) fordítás közben. Fogalmam sincs hogy mi nem jó, pedig szerintem stimmel minden. Jelenleg az alábbi módon próbálkozok, de ennél is hibaablak lesz az eredmény: (Két modul van: Foprogram.s és Valami.s)
Nem akartam a teljes forrást bemásolni, mert 100% mindenki olyanba fog belekötni, ami teljesen lényegtelen, mert nem arra irányul a kérdésem, legalább is eddig mindig így volt, és hetek kellettek mire végre valaki a tényleges kérdésemre válaszolt, utána áttértem, hogy a lényeget másolom csak be, és úgy eddig mindig ha nem is órákon belül, de jóval hamarabb megvolt a válasz és nem voltak felesleges kötözködések, de ám legyen.
Jelenleg így tizedmásodpercben számol. A program meg CCS PIC C Compiler
Hmmm... Hát ez ahogy elnézem pofon egyszerű volt.
Ezer köszönet érte! Annyi hiba van csak, hogy 5 percenkét késik 1mp-et. Ezzel lehet kezdeni valamit? Legalább kb óránkénti 1mp késésig javítani? Viszont időközbe felmerült egy másik probléma/kérdés, mert még a válaszra vártam, próbálkoztam a SLEEP funkcióval, de sehogy sem működik. A fenti forráskód amit írtam, abban mi lehet a hiba, hogy nem működik a sleep? Gondolom a fuses-ben rontok el valamit.
A set_timer1(-10000); helyett set_timer1(-9966);
A sleep -et ne az ISR -ben használd...
próbáld a -10000-es értéket finoman változtatni!
Idézet: „A set_timer1(-10000); helyett set_timer1(-9966)” Ok, azt hittem számolgatni kell valamit, de akkor ezek szerint nem. Köszi. Idézet: „A sleep et ne az ISR -ben használd...” Hmm, így már jó is. De miért nem mind1 neki, hogy hova van rakva? Plusz felmerült még 1 utolsó kérdés. Hogy lehet azt oldani, hogy X idő (mondjuk 2 perc) után ébredjen fel? Meg azt meglehet e oldani, hogy 1 gomb megnyomására ébredjen fel? Ha igen, hogyan? Köszi! Idézet: „próbáld a -10000-es értéket finoman változtatni!” Ok. Köszi. |
Bejelentkezés
Hirdetés |