Fórum témák
» Több friss téma |
Itt egy kodrészlet ami tökéletesen müködik:
Ez meg nem müködik:
Pedig csak annyi a különbség hogy ebben van egy NOP is. A "LEPTETO1" regisztert egy TIMER0-ás megszakítás lépteti mindig egyel nagyobb értékre. Elsőnél tökéletesen működik másodiknál nem számol... mi lehet a baj? Teljesen mindegy hogy nop vagy más parancs van ott mindegyiknél ezt csinálja. Vagy ez a tipikus 104 es kondi hiánya a táplábról? Sajna nincs nálam ilyen kondi mivel épp elvagyok otthonról utazva . de ha ez lehet a hiba akkor abba is hagyom az egészet míg haza nem érek.
Az a kérdés, hogy ez a programrészlet hol helyezkedik el a programodban?! A 16-os sorozatnál oda kell figyelni a laphatárokra ( 2k ! ), mert nem fog tudni jó helyre ugrálni ( olvasd el a GOTO-val kapcsolatos részt a pdf-ben és nézd meg az ábrákat is! ) !
Ha pont laphatáron vagy, akkor ezt fogja csinálni ! Steve
Nem csak a sebesség számít, hanem az is, hogy Timer1 számlálója 8 vagy 16 bites.
Attól tartok itt nem ez a megoldás mivel a 0059 ben van a legutolsó adat.
A 100nF kondi kell oda igen. Ez a nop-os dolog egy ufo, vagy a kondi hianya vagy pedig valamit nem tudunk ami kellene ahhoz, hogy kideuljon mi van.
Még egy lehetőség: a Watchdog nincs bekapcsolva ( nem tudom előtte esetleg mennyi idő telik el ! ) ?
Steve
Hát akkor ha hazaérek berakom a kondit tesztelgetem, még hátha változik valami és közzéteszem az eredményt.
16F877-ből van 4MHz-es változat, az nem biztos, hogy menne. A 20MHz-es biztosan.
Akkor ez szerintem 20MHz-es. a tipusa: 16F877-20/L
Sziasztok, egyszer már kértem segitséget, de biztosan bennem van a hiba hogy nemkaptam. Szoval ha tudna valaki segiteni nagyon megköszönném! Mellékelem a problémám forrását, aki tud segiteni nekem ne fogja vissza magát! Köszönöm, 4Mhz röl menne a 12F508-Pic
üdv,
Először is köszönöm az eddigi segítségeket Már sikerült bemeneteket is csinálnom de van egy kis probléma. A beállítások rész szerint a GP3/MCLR/VPP is bemenetre van állítva, de mégsem működik megfelelően, míg, ha a GP2-t használom az tökéletesen működik. Miért lehet ez? Elküldtem a programomat is hátha abban van a hiba. (A Start részt nem én írtam, hanem a pic könyvéből másoltam ki - nem is értem ezt a rész igazából. Láttam, hogy ez beállít két bemenetet és négy kimenetet és beszúrtam a programomba)
A konfig biteknél be kell állítani, hogy az MCLR láb ne reset legyen, hanem digitális bemenet.
Idézet: „Sziasztok, egyszer már kértem segitséget, de biztosan bennem van a hiba hogy nemkaptam.” Valoban! Pl leirhatnad mi a problema (mert ugye azt nyilvan Te sem varod el tolunk, hogy a forras kodot elkezdjuk bogaraszni, kitalaljuk annak mit kellene csinalnia es egyaltalan milyen hardveren, es akkor ki is javitsuk ha mar ugy ott vagyunk). Tehat a hardver reszet is definialnod kellene, es, hogy mit kellene cinalnia az eszkoznek, es akkor ahhoz kepest mi nem klappol. A hiba / problema leirasan kivul meg azt is jo lenne ha megosztanad velunk, hogy eddig mivel probalkoztal es ezeknek a probalkozasoknak mi volt az eredmenye.
Természetesen nemvárom el hogy helyettem kijavitsa bárki a kódot, elnézést kérek mindenkitöl de nemvagyok túl gyakorlott fórumozó(ami azt illeti a pic-el is most kezdtem el foglalkozni), bár több hónapja olvasgatom a hsz-eket illetve egyéb forrásokat, azért vanmég mit bepótolnom ! A 12C508 ra épülö kapcsolás szerint 2 nyomógomb (osc1, osc2)testre huzásával ,lehetne szabályozni a kimenő frekvencia kitöltési tényezőjét fel-le, ami 61 hz-re van beállitva. A kapcsolás eredeti kitalálója 4Mhz belsö oscillátort használ(amit nemigazán értek, a pic adatlapján nemtaláltam meg). Mplab-al probálkozom, úgy gondolom kezdőknek is elég érthető, első nekifutásra átnéztem a mov utasitásokat a subrutinokbol visszatéréseket illetve a megszakitásokat, az ellenörzésnél talált 26 hibát a kódban de hiába nézem nemtalálom. A segitséget előreis köszönöm!
Nem tudom hogy hányas MPLAB-ot használod de én nem így csinálnám az elejét mert már ott sok hibát látok. Az első hogy ahol kommentet akarsz ott a sor elején mindenhol kell lennie pontosvesszőnek. Úgy tudom az MPLAB-ban nincsen olyan funkció hogy a két pontosvessző közti részt ha több sorból áll is kommentnek fogja venni. A másik hogy én a kódot az elején így csinálnám:
Szerintem így érdemes csinálni bár nálad nem tudom hogyan lehet az MCHIP_Tools mappában az INC fájlod. Szerintem használj újabb fordítót pl 8.73 vagy a 8.76 ami most e legújabb.
Itt nem tudom hogy milyen értéket helyezel az OSCCAL regiszterbe mivel semmilyen visszaugrást nem találtam és nem is lett volna értelme. Ezzel valójában a belső oszcillátor értékét állítod be. Itt valami ilyesminek kellene lennie:
Az adatlapban megnézed, hogy az OSSCON felső 4 bitjét mire kell állítanod hogy megkapd a 4MHz-es órajelet. Első ránézésre ennyit találtam.
Köszönöm a gyors választ, kiis probálom nemépp a legújabb Mplabot használom(6.61) megprobálom befrissiteni!
A 6.61-es verzió "kicsit" régi! A hivatalos Microchip oldalról le tudod tölteni a legújabb verziót.
Én a 8.43-ast használom, de ajánlott a legújabb verzió használata.
A 8.73 illetve 8.73a verzióknak sok problémája volt - kihagyható... Már a 8.76 -nál járnak. Az újabbak viszont mininum XP -t igényelnek.
Ez biztos? Pár napja töltöttem le, és most is ha frissítést kerestetek vele a 8.73-at hozza: MPLAB IDE v8.73.
Vagy ez nem ugyanaz?
Jo az ugy ahogy volt. A regebbi 12C, 12F PIC-ek tartalmaztak a program memoria utolso cimen egy OSCCAL erteket, es a PIC Reset-kor betoltotte a W regiszterbe ezt az erteket, es ezert van a 0 cimen a movwf OSCCAL utasitas.
Értem. Ez legalább jó megoldás mert egyből a program kezdetekor beállítódik az oszcillátor.
Mondjuk az MPLAB szoftverfrissítője nem a legjobb. Én ahányszor próbáltam (8.5-nél sem írta ki hogy van frissebb pedig volt) mindig azt írta hogy az a legújabb amim van. Tehát ezek szerint erre nem nagyon lehet támaszkodni.
Mert miert jo ha allandoan nyaggat egy program hogy "Frissits-frissits!". Az altalanos felhasznalo szempontjabol a 8.01 es a 8.76 kozott csekely kulonbseg van. Legfeljebb belekerulnek a legujabb eszkozok, meg egy-ket csicsa. Mukodeset ugyis a ASM fordito hatarozza meg. Azt pedig nem szoktak minden heten valtoztatni.
Idézet: Nem lesz az úgy jó, ahogy volt, mert kell elé egy CALL 3FFh (vagy ahol van a memória vége) utasítás, ami feltölti WREG-et a gyári beállítással. „Jo az ugy ahogy volt.” De előtte meg kell nézni a bankot is, mert pl. PIC12F629 esetén OSCCAL a BANK 1-ben van. Az adatlap ajánlása:
Igen ez igaz csak ha már van akkor működjön. Ha meg nem akarom hogy nyaggasson akkor meg kikapcsolom. De ez pl fontos lehet azok számára akiknek régebbi verzió van mint például frekko-nak. Lehet hogy ő nem is tudta hogy van frissebb és ezt a szoftver sem mutatta neki tehát nem is tudott utána járni. Mondom ez főleg olyanoknál látszik meg akik régebbi verzióval dolgoznak az iskolában vagy ezt olvassák egy régóta nem frissített weboldalon. Viszont elég sok javítás is van benne ami nem csak az assembler részére vonatkozik hanem magára a program működésére és bugokra. De ez már nem ide tartozik hanem inkább a microchip szakembereire.
Szia!
Nem tudom mennyire érinti az átlagos felhasználót, hogy egy (esetleg több) teljesen új kontroller család jelent meg, amihez a fordító makróit, definícióit (nem beszélve a "bevasalt" dolgokról -- pl. 16F memóriája nem lehet 8K -nál nagyobb, stb) javítani, átdolgozni kell. Megjelent pl. a Enhanced Mid-Range Architecture. A szimulátor programrészben is kellett módosítani, hiszen az elmített kontrollereknél máskép mennek a bankválások, a nagyobb memória méret miatt az ugrások és az indirekt memória kezelés. Elterjedtek a 16 - 32 bites mikrokontrollerek is... A 8.01 megjelenése - 2008 január - óta nagyon sok új kontroller jelent meg... |
Bejelentkezés
Hirdetés |