Fórum témák
» Több friss téma |
Fórum » PIC programozás
Szia!
1 - Debugger / Settings ablakon az Uart1 IO fülön: "Enable Uart I/O" -t és "Output to Window" -t kipipálni. 2 - Debugger / Stimulus menüpont segítségével létre kell hozni egy "Register Injection" típusú stimulust az RCREG -hez. Meg kell adni egy szöveges állomány nevét, amiben a venni kívánt adatsorozat van leírva. Melléklek egy példát 16F88 kontrollerre. A sbs állomány ugyan írja, hogy ne módosítsd, de tapasztalatom szerint a kontroller típusa átírható benne. 3 - Debugger / Stimulus ablakon Apply gomb 4 - Újrafordítás. 5 - A kíván helyeken töréspont elhelyezése 6 - Go, futtatás.
Hasznos funkció, köszönöm! én úgy tudtam ilyet nem lehet szimulálni MPlabbal, de mégiscsak lehet. Igazából ezt a problémát én úgy oldottam meg hogy összeépítettem a vasat és egy comport programmal azt küldök rá amit akarok...
![]() ![]() ![]()
Amit nem értek belőle az a 7. sor...nem láttam még ezelőtt ilyet. RxBuffer ilyen formában van megadva, ami szintén nem teljesen tiszta előttem:
Az indirekt címzéses rész az tiszta leszámítva a BANKISEL utasítást...azt sajnos nem ismerem.... ![]() Másik kérdés: Ha ilyen fomában adok meg egy konstanst:
Akkor a "." utáni érték az decimális érték? És ha az akkor minek a pont? Biztos okkal van ott, de én még ilyennel nem találkoztam. Most így hirtelen ennyi... ![]() ![]()
Szia!
Haladjunk visszafelé: Idézet: „Akkor a "." utáni érték az decimális érték?” A "." után megadott szám mindig decimális (emlékeztetőül a tizedespont angolul: decimal point). Az értelmeaz, hogy a beállított default számrendszeről függetlenül decimálisan értelmezi a fordító. Írható a D'100' fomában is a száz, de ez hosszabb, mint a .100 . Idézet: „BANKISEL” A STATUS regiszter IRP bitjét állítja be a paraméternek megadott kifelyezés 8. bitje szerint. Idézet: „RxBuffer:RX_BUF_LEN ;receive data buffer” Az RxBuffer címtől kezdődően RX_BUF_LEN darab memóriarekesz lefoglalása abszolut kódú fordításnál. Idézet: „movlw LOW RxBuffer+RX_BUF_LEN-1 ;get last address of buffer” Nincs ebben semmi szokatlan: A movlw utasítás egy kifejezést vár, annal alsó 8 bitjét betöltő utasítást fordít a kódba. Esetedben a kifejezés az RxBuffer címke, az RX_BUF_LEN konstans és a -1 összeadásával áll elő. Hogy a fordító ne jelezzen az esetlegesen a 7. bitnél magasabb helyiértékre kerülő 1 -ek miatt figyelmeztetést, a low "függvény" az alsó 8 bitet hagyja csak meg. Ajánlott az MpLab ASM leírásának, help -jének olvasgatása: upper, high, banksel, pagesel, stb. A hozzászólás módosítva: Nov 29, 2012
Sziasztok!
Szeretnék megkérni valakit, hogy segítsen nekem egy picit. Assembly-ben próbálok programozni. Azt kellene meghatározni, hogy ez a program, melléklet, mit csinál pontosan. Sajnos eléggé kezdő vagyok még. Amit én látok belőle az, hogy önmagában számol 1-től 10-ig, majd gombnyomásra kiad a kimenetre egy számot, ahol épp tart a számláló véletlenszerűen. Persze 1-től 10-ig. 5 lekérés után pedig standby üzemben áll, következő gombnyomásig. Esetleg valamit elnéztem, vagy nem így van?
gombnyomas az a PORTB,0 - ugye?
Egyebkent miert pont ezt a peldaprogit valasztottad? Szep iskolapeldaja annak, hogyan kell megutaltatni valakivel teljesen elrugaszkodott peldakkal a PIC programozast. A 16-oson mar volt SUB utasitas, szoval egyszeru kivonassal megvan az egyezes es nem kell a bitekkel bohockodni. Masreszt hasznalj 18F sorozatut, azokban ott a CPF utasitas, azzal direktben hasonlithatsz szammal. Az egesz ugy tunik, mint egy hazi feladat, amit az a tantobacsi adott fel, aki nem jutott tovabb a 16F84-nel, de ismeri a 8 bites szamokat es most szopatja a nala is ostobabb nebulokat... ![]() Egyebkent van MPLABhoz szimulator, szerintem futtasd le abban. A hozzászólás módosítva: Dec 14, 2012
Szia!
Igen a PORTB,0 a gombnyomás. Azért ez a példaprogram mert ezt kaptam ![]() Gyanítom ez egy házi feladat, vagy órai munka lehetett eredetileg. Azért a 16f887-essel próbálkozom, mert szeretnék ipari elektronika végzettséget csinálni, amiben van pic programozás, és pontosan 16f887-essel kell (errefelé) programozni. 18f-ből mindegy melyiket? Akár ugyan azt is használhatom ami az égetőmben lesz? (15f2550-es) Vagy esetleg PIC18F4550-est?
Idézet: „Akár ugyan azt is használhatom ami az égetőmben lesz? (15f2550-es)” Ehhez a feladathoz bőven elég a 16F886 - 16F887 is sőt még talán egy 16F628A is. Ugyan azokat az elveket kell megtanulni: Pl. azt ami hiányzik a programból - a pergésmentesítés. Végkép mindegy, hogy milyen utasítással vézzük azt, hogy két memória rekeszben levő szám egyenlő vagy egy memória rekesz tartalma megegyezik egy konstanssal... Lehet az subfw, xorwf, sublw, addlw, xorlw, stb. Minden variációnak van "mellékhatása", itt pl a STATUS regiszter C bitjének állítása / értékének megmaradása. Nem értek egyet azzal a megállapítással, hogy a CPFSEQ, CPFSEQ, CPFSLT stb utasítás használatáért váltsunk más típusra. Lesznek olyan műveletek, ami a 18F -en sincsenek, akkor vegyük a következő családot. A sign extend, zero extend műveletért nem kell a 24F -re váltani.... Sok mindent ki lehet hozni a 10F .. 16F -ekből is.
Termeszetesen igazad van - sot, akar logikai kapukbol is meg lehet epiteni. De miutan arban nincs lenyeges kulonbseg a ket tipus kozott, meg a 18F-es sorozat mar fejlettebb, szerintem nem art, ha azon kezdi. Pontosan ugyanugy meg lehet tanulni az alapokat.
Es a 18F sorozat legtobb tagjaban (sajnos az ujabbakra mar nem igaz) nincs benne a bankolas, ami a legtobb kezdot elkeseriti es a legtobb hibat okozza. Szerinted termeszetes dolog tizzel ugy hasonlitani, hogy a harom bitet kulon vizsgalod? Feltetlezve azt is, hogy a tobbit nem allitottuk... A hozzászólás módosítva: Dec 14, 2012
Bizony, a pergesmentesites, amirol a legtobb kezdo megfeledkezik, kimaradt.
15F2550 nincs, alautottel egy szamot a numerikus billentyuzeten ![]() 2550 vagy a 4550-es tokeletes lesz. Vagy -ha meg nem akarsz USB-t - akkor a 4525 mondjuk. Szep nagy, sok laba van. Idézet: „Szerinted termeszetes dolog tizzel ugy hasonlitani, hogy a harom bitet kulon vizsgalod? Feltetlezve azt is, hogy a tobbit nem allitottuk...” Nem kifogásoltam a megjegyzésedet a komparálásra, és a hozzászólásomban nem is említettem ezt a "módszert". Teljesen jogos. Fiamnak az egyetemen mindeféle "idétlenül" elbonyolított C programot adtak ki egyetlen kérdéssel: Mi ír ki? Nem árt a felkészülés... Lapozás: Meg kell szokni. Mindenütt elő fog jönni, ahogy előjött a 18F eken is a CAN, Ethernet illesztővel. ld. I80386 MMU. stb. Egyszerűen a kezelendő adatmeyiség olyan mérttékben nő (a kontrollerekben az integrált perifáriák számával, a programokban a kényelmi szint növelésével), hogy minden előre megtervezett hardvert kicsi lesz egy idő múlva. Messzi - messzi ettől a platformtól, nem is olyan réges - régen: Szerinted termeszetes dolog, hogy egy SST25VF064C 64 Mbit SPI eeprom programozásához egy programozó program a PC -n 1.4Gbyte -nél is több RAM -ot kér a rendszertől. Ugyanis a PICKit2 programját kibővítettem az SST serial flash családdal. Ezt a programot egy világhírű cég programozói úgy írták meg C# -ban, hogy egyből létrehoznak egy grid -et 16 oszloppal és az eszköz kapacitás / 16 sorral. Szegény rendszer létrehozott egy grid mezőt 8388608 grid elem objektummal, majdnem belehalt... Az adat csak 8Mbyte lett volna... A hozzászólás módosítva: Dec 14, 2012
Sziasztok.
Kérem valaki segitsen hiszterézist beiktatni a kapcsolások közé. Csináltam valamikor régen,de ott csak egy kimenet ki be kapcsolásáról volt szó.
Nem teljesen PIC téma, de nem találtam Pickit2 topikot.
AT24c02n EEPROM-ot szeretnék programozni Pickint2-vel (gyári). Táp lábak, clock és adat láb, WP láb be volt kötve, felhúzó ellenállás is a helyén, mégsem hajlandó semmi értékelhetőt produkálni. Beolvasni csupa nullát olvas be, ha törölni probálom akkor a program szerint minden lefut, tökéletesen feltölti FF-el, de ha írni akarom vagy ellenőrizni akkor máris az első címnél hibát ad. Ez miért lehet? Cím lábakat kéne valahova húzni? DIP tokos CAT24c16P-t simán meg tudtam írni vele, működik is a helyén, ahova kellett.
Erre nem gondoltam,igy sokkal egyszerűbb.
Köszönöm a segitséget ![]()
Közben töröltem, mert rájöttem hogy ennél bonyolultabb, ugyanis ha nagy ugrás van és több tartománnyal lép odébb egy köztes tartományba nem jól működik.
Inkább valahogy így:
Nézd meg ezt és a néhány következő hozzászólást.
Igy már jó...
![]() Ezer köszönet ![]()
Ja, és ha else ágba rakod a következő tartomány figyelését, akkor elég az egyik határértéket ellenőrizni, mert ha a másik szerint lóg ki, már el sem jut oda:
Azt meg tudnátok nekem mondani, hogyan lehet felfelé meg lefelé számoltatni a picet?
Az a cél, hogy az összes led (8db) villogjon, egészen a portb,0 megnyomásáig (mikrokapcsoló). A gomb megnyomására elkezdjen felfelé számolni 0-tól 255-ig, ledek jelezzék folyamatosan felfelé futva, majd a gomb elengedésére visszafelé 255-től 0-g szintén ledes kijelzéssel. Eddig jutottam el:
De nem tudom, hogyan lehet számoltatni a picet. Van egy rövid példám erre, de az 5-ig számol ha jól emlékszem.
De ezen én nem tudom kibogarászni, hogy mi is számoltatja és miért addig, ameddig. Tippem szerint az incf Counter, de miért 5-ig? És hogy lesz ebből 255? Bármilyen építő jellegű gondolatot szívesen fogadok. Amit leírtam kód abból szerintem aktuális tudásom is tükröződik valamilyen szinten. A hozzászólás módosítva: Dec 17, 2012
Meg par dolgot le kellene fektetni (Adriana Lima mellett
![]() pl. hogy a felfele futo ledeket hogyan kepzeled? Mert ha az erteket kiteszed siman a portD-re, akkor ugye binarisan pereg majd. A masik, hogy ha egy szer felefele szamolt 255-ig, akkor maradjon-e ott vagy forduljon at 0-ra es kezdje elolrol? A villogas egyszeru, kiadsz 0xff-et, aztan varsz, majd kiadsz 0x00-t es varsz. Utana megnezed a gombot, hogy lenyomtak-e. De a masik varakozas utan is vizsgalhatod vagy horribile dictu a varakozasi ciklusban is es mondjuk a Carry bittel jelzed, ha a rutin kozben megnyomtak a gombot. De szerintem sajatitsd el a sublw vagy a cmpseq alapu hasonlitast, mert ez a bitenkenti kinlodas elegge gaz. Hacsak nem vezeklesbol csinalod...bar minumum nepirtas kellene elkovetned ehhez... ![]()
"Hacsak nem vezeklesbol csinalod...bar minumum nepirtas kellene elkovetned ehhez"
Szimpla tantervet követek ![]() Utána nézek azoknak amiket leírták és újra gondolom azt, amit eddig alkottam ez ügyben. Egyébként eddig jutottam el eddig a percig: A kódot inkább txt-be teszem, átláthatóbb. Azt hiszem mára a pic-et le is teszem és a plc-vel folytatom, de mindenképp szeretném az általad írt humánusabb önsanyargatási módszert elsajátítani, ha esetleg van valami online anyagod róla, azt elküldhetnéd, vagy megmutathatnád. Sajnos semmilyen oktatóanyagom nincs némi jegyzeten kívül, ami mint láthatod nem túl hatékony. ![]() Ja igen! Akkor ez most ebben a z állapotban újra fogja indítani a 255 után, vagy tovább fog haladni? Igazából nekem teljesen mindegy ebben az esetben, hogy melyiket teszi, de nem ártana tudnom miért is teszi azt amit. A hozzászólás módosítva: Dec 17, 2012
Sziasztok. Bocsi hogy *
* A He nem támogatja, ezen tevékenységet. A hozzászólás módosítva: Dec 17, 2012
Nem jo a kod. A villogtatas rendben lesz, de ahogy megnyomod a gombot, meghulyul.
Ne sporolj a cimkekkel, ne hasznald azt a vacak dollarjelet (tobb okbol). Altalaban akkor szoktuk hasznalni, ha egy tablazat hosszat kell forditasi idoben meghatarozni, de cimkevel akkor is pontosabb. Hasznalj rendes cimket. A delay-nal erdemes azert kezdoerteket adni, meg ha 0 is. A kodod ket fo reszre tagolodk. A villogasig jo. Onnantol jon egy hasonlo kodreszlet, amit egyebkent jol kezdtel el, de pl. kihagytad belole a kesleltetest. Sokfelekeppen meg lehet oldani, en a helyedben a masodik fociklus elejen eldontenem, hogy le van-e nyomva a gomb vagy nincs, ennek megfeleloen fel- vagy leleptetnem a szamlalot, aztan egy kozos cimkeju pontra futtatnam, ami kiirja a portra es VARAKOZIK egy kicsit, utana a fociklusba visszaugrik. fociklus: btfsc portb,0 goto lenyomtad nemnyomtadle: incf counter goto kozospont lenyomtad: decf counter goto kozospont kozospont: movf counter,w movwf PORTD call delay goto fociklus itt pl at fog fordulni 0-rol, de a strukturaba bebeirhatod majd, hogy ne menjen 255 fole agy eppen 0 ala. Persze, ilyenkor meg a noveles/csokkentes elott meg kell vizsgalni counter erteket, hogy elerte-e a kivant erteket es ha el, akkor NEM hajtod vegre a novelest/csokkentest, viszont utana a valtozatlan szamot ugyanugy kiirhatod, semmi valtozas nem lesz, szoval az eredeti kodreszlet megmarad. A szavaidbol azt veszem ki, hogy leginkabb magyar forras erdekel. Miutan a PIC-ek 16-os osztalyanak az utasitaskeszlete nagyreszt kozos, sok haszonnal forgathatsz barmit, pl. a hires-hirhedt 16F84-re irt osszes algoritmust fel tudod hasznalni. Van is valami magyar nyelvu 16F84-es konyv. A periferiakban es a cimekben viszont kulonbozni fog, szoval ezt azert vedd figyelembe.
Sziasztok!
Szokott olyat csinálni valaki, hogy egy program megírása előtt vázlatot csináltok? Csak olyan nagyjábból féle vázlat, szóval hogy milyen részekből fog állni a program..
Úgy hívják hogy folyamat ábra , keress rá G...i
Na úgy néz ki, rosszul tettem fel a kérdést.
Persze tudom hogy folyamatábra, de szokott-e valaki ilyet csinálni, vagy valami leírás félét?
Mi a folyamatábrás mikrokontroller programozás flowcode programmal témában csak folyamatábrát készítünk. és a program fordítja át hex be ...
A hozzászólás módosítva: Jan 6, 2013
Idézet: Enélkül elég nehéz volna programot tervezni. Persze, nem a 10 soros ledvillogtató programra gondolok. „Szokott olyat csinálni valaki, hogy egy program megírása előtt vázlatot csináltok?”
sziasztok!van egy k150-es koppintásos usb-s pic programozóm.pic16f84-et (dip tokozású,18 lábú)akarok égetni vele.melyik foglalatba kell beletenni a 40-ből?24 különböző variáció van.
|
Bejelentkezés
Hirdetés |