Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Ami késik nem múlik De ezt is tudod mostmár.
sziaztok!
új vagyok és lenne néhány kérdésem (0.: ez a fórum miért nem eszi meg a freemail-es e-mail címet?,na jó, tudom hogy ez nem pices) progi: list p=16F57 #include __CONFIG _CP_OFF & _WDT_OFF & _XT_OSC #define CLEF1 PORTB, 6 ... main ... if CLEF1 == b'1' ... 1.: hogyan hivatkozhatok PORTB egy bitjére? MPLAB 7.50-es szerint a RB6 nincs definiálva, a #define CLEF1 PORTB, 6 meg nem jó szerinte, mert : Error[108] D:\PIC\RASEC\PRB1.ASM 144 : Illegal character (,) ha a compilert futtatom (if sorában akad ki) 2.: ha a config-ban benne van, hogy WDT_OFF, akkor miért sír, hogy a watchdog megszakította a futást? 3.: ha jól olvastam, akkor a pic16F57 2 szintű veremmel rendelkezik. Az mplab az if-eket callal hívja? (mert így biztosan nem fog műköni) 4.: tudtok valami jó irományt, ami leírja az mplabot (és az ott leírtak működnek is, nem úgy mint a microchip oldalán található utasítás leírás) 5.: nem tudjátok, hogy a 4-es verzió valamelyikét honnan lehet megszerezni? (egyes vélemények szerint "azok még működtek") köszi a segítséget előre is: Csirgli
Csirgli
Kicsit zavaros amit írsz. Nem tudom milyen nyelven próbálsz progizni, mert keverni látom a C-t(és abból is melyik???) és az assemlyt. Tehát Te melyiken akartál programot írni? Idézet: „Az mplab az if-eket callal hívja?” Miért ismersz olyan nyelvet, amiben ez így van(én nem!) Idézet: „tudtok valami jó irományt, ami leírja az mplabot” Volt régebben a 6.xx-ekhez egy magyar nyelvű, talán az oldalamon megtalálod, de nem sokra mész vele, mert a 7.xx-ek mások lettek. De ha felteszel kérdéseket ezzel kapcsolatban, biztosan kapsz választ dögivel. Idézet: „nem tudjátok, hogy a 4-es verzió valamelyikét honnan lehet megszerezni? (egyes vélemények szerint "azok még működtek")” Megnyugtatlak, hogy az összes verzió kivállóan működik, mindet használtam 5-től... A PORTB,6 ra elvileg jól hivatkozol, ha MPASM-al fordítod..
elméletben, az mplabnak vannak utasításai amit tud használni (nekem ezt mondták)
innen van a #define, és az if a többi proci spec assembly (azóta rájötem, hogy hiba volt ifezni, sokkal egyszerűbben is meg lehet oldani,és még a 2 szintű verem méretével nem kell foglalkoznom (3. call lépcső kiírtja az 1-t, mert felülírja)) mplab sim -mel fordítottam, ha minden igaz (monjuk a 7-5-ben nincs compile menu, csak debugger -> select tool) viszont, ha már ilyen gyorsan kaptam válszt itt KÉT új kérdés: 1:hogyan lehet egy port egy bitjét beolvastatni egy regiszter egy bitjébe? (valami egyszerűen) 2:Egy régi pices panelen kell a pic programját megírnom, a régi epromos és letíltott. Ezért kell 16f57-et használnom. 3 fázisú motor tirisztoros vezérléssel, 2 fázis vezérelhető, 2 kimenet tartozik hozzá a PIC-en, van egy 0-5V-os bemeneti szinusz jel is , egy egyszerű bemenetre kapcsolva(szinkronizáló jel, hogy a nullátmenet környékén induljon a tirisztor, az 57-eseknek nincs analóg bemenete, se kimenete) Ehhez kéne pwm modulációt csinálni. Mit javasoltok, hogyan kéne megcsinálni, hogy csak minden 2. v. 3. nullátmenetnél kapcsoljon be a tirisztor, a többinél ki? (áramkör adott, azon nincs változtatás) én azon fióztam, hogy egy regisztert körbe- körbe járatok (shiftelek, visszaírok) és ebben lesz benne a minta, hogy a tirisztor vezérlése mi legyen (pl utolsó bit) és ez csak akkor fog lépni oldalra, ha lefutó élet veszek észre a szinuszos bemeneten (regiszet 2 bitje, előző , mostani ; shift és beírás a mostaniba minden ciklus elején) Csirgli
Elég nagy fát válaszottál, a program megoldási kérdésekre így hirtelen nincs is időm válaszolni.
Az if az MPLAB-nak, azaz a fordítónak szól, nem egy PIC-es utasítás. Nem derült ki számomra, hogy ismered-e a 16F57 utasításait, de feltételezem, hogy az adatlapjában megtaláltad őket. 1. Miért kéne beolvasni? Le lehet kezelni a porton is. De beolvasni többféleképpen lehet. egy lehetőség: Megvizsgálod, hogy a bit milyen BTFSS PORTB,6 ;majd ezzel az elágazással beállítod a kívánt regisztered bitjét GOTO BitKiKapcs BSF SAJÁTREG,6 GOTO Tovább BitKiKapcs BCF SAJÁTREG,6 Tovább (remélem olvasható, mert itt a Kód gomb nem ér sokat...)
ismerem igen
valahogy így oldottam meg BCF ALLAP, 7 ; MINDEN KAPCSOLÓ BITJE NULLÁZVA, ÁLLAPOT JELZŐ BITEK MARADNAK BCF ALLAP, 6 BCF ALLAP, 5 BCF ALLAP, 4 BCF ALLAP, 3 BCF ALLAP, 2 BTFSC CLEF3 ; HA AZ ADOTT BEMENET 1ES ÍRJA BE A MEGFELELŐ HELYRE AZ ALLAPOT REGISZTERBE BSF CL3 BTFSC CLEF3 BSF CL1 BTFSC MODE2 BSF M2 BTFSC MODE1 BSF M1 BTFSC CAPT1 BSF CA1 BTFSC CAPT2 BSF CA2 a hosszabbik változat, egy -egy port nevesített bitje (még nem tudom , hogy a nevesített bitre lehet-e így direktbe hivatkozni mint fennt, de semeddig nem tart a portokat odaírni) minden esetre a WDT még mindíg idegesít (ld eredeti topic)
Kérdésem lenne!
Leforditana nekem valaki egy hitec picc ver.7.85- ben irt programot? 16F877 pichez? Ez egy gyári program, nem akarodzik átirni picbasic pro ra nekem ez van . Nem is célszerű. Túlzottan hoszú. Idézet: „valahogy így oldottam meg” Ezek szerint működik? És a belinkelt programmal? :eek2:
Nekem 8.valamennyis picc van, ha elküldöd a programot az emailcímemre, holnap este teszek egy próbát.
szia működött, megírtam ezt a részt jól
viszont felmerült egy kérdés: van egy belső timer TMR0 regiszter, ami vagy időzítő, vagy watchdog timer honnan lehet azt megtudni, hogy timer üzemmódban a tmr0 túlcsordult? (kellene egy ~ 2hz-es jel, ami egy újjabb 8 bites regisztert tesz szükségessé, és azt kéne vezérelje valahogy a túlcsordulás) esetleg, ha a TMR0-ból kivonok 0x00-t és Z az eredmény, akkor billenjen a TMR1? Csirgli
Igazán választhattál volna egy normális PIC-et a célra, mert ez igencsak buta jószág! Egy 16F627A 400Ft körül van és abban van megszakítás kezelés, analog comparátor, belső oszci, stb. Akkor most azt írhattam volna, hogy van egy T0IF Flag bit, ami megszakítást okozhat, ha engedélyezve van neki.
Most csak annyit mondanék, hogy szoftveresen kell lekezelni az időzítést, mert a Timer0 figyelgetése sokkal macerásabb. Én vennék egy másik PIC-et.... miért? : Idézet: mert, szerintem sehonnan. „honnan lehet azt megtudni, hogy timer üzemmódban a tmr0 túlcsordult?”
ahogy írtam, egy pic16c55-öst kellett kiváltanom, nem tudom, hogy a 16f627-nek mi a lábkiosztása és hány lábú, de a 16f57 megfelel ennek a kívánalomnak
egyébként köszi, és nekiállok keresni megolsáat (szoftvereset)
Ja értem. A helyzet az, hogy pont ilyen lábkiosztás tényleg csak ez az IC tudja, mert gyakorlatilag a 16C55 az azonos a 16C57-el és innen már csak egy F választ el a megoldástól.
Sajnos a 16F57-ben nincs interrupt kezelés, és mint írtam igen butácska, ezért csak a szoftveres megoldás marad. Esetleg egy átalakító nyákocska, és egy 18F2320 megkönnyítené az életed egy "kicsit": ) Idézet: „van egy T0IF Flag bit, ami megszakítást okozhat, ha engedélyezve van neki.” Csak egy kis javítás A T0IF Flag bit az nem véletlenül flag bit. A flag zászlót jelent (ha vki még nem tudná), azaz ezzel jelez valami eseményt a PIC egy különleges regiszterben. Tehát a flag bit az nem kapcsolja be a megszakítást, csak jelzi egy esemény bekövetkezését. Bizonyos funkciók bekapcsolásáért az engedélyező bitek felelnek. Jelen esetben (ha pl. egy F627A jelű PIC-ünk lenne) a Timer0 modul túlcsorduláskor való megszakítás-okozásának bekapcsolását a T0IE (azaz Timer 0 Interrupt Enable) bittel kapcsolhatjuk be. Csak azért írtam, hogy mindenki tudja a teljes "igazságot" Illetve watt is sokszor szokott másokat kiigazítani... :yes: Idézet: Nem hát, szándékosan az! :yes: „A T0IF Flag bit az nem véletlenül flag bit.” Idézet: Én mást írtam volna? A "HA engedélyezve van neki" nem azt jelenti, hogy "Ő" engedélyezi, de ha engedélyezve van, akkor "Ő" okozza!(nézd meg a kapcsolási rajzot az adatlapban) Pont ezért fogalmaztam így, de ezek szerint félreérthető volt.„Tehát a flag bit az nem kapcsolja be a megszakítást, csak jelzi egy esemény bekövetkezését.” Amúgy semmi gond!
Alátámasztás képpen:
Kép: Hivatkozás Ha a GIE és T0IE True, akkor a T0IF megszakítást okoz. Ha a GIE vagy T0IE False, akkor a T0IF csak jelez.
sziasztok !
Ha valakinek van MPLAB programja akkor léccives küldje már el a djreflesz@citromail.hu ra elöreis köszönöm
Azt nem is említve, hogy 43MByte, amit levélben igen macerás lenne...
Itt a link: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nod...007002 Az a googles link nagyon ott van!
Hi!
Szerintetek milyen PIC-cel kéne kezdenem? Gondolkodtam PIC16F54-esen, mert kicsi (teljesítményben) és olcsó. Viszont nem tudom, hogy programozható-e a klasszikus PIC-égető kapcsolásokkal... PIC16F628 lenne a másik, amit kinéztem és úgy látom, hogy eléggé sok helyen használják. Viszont drágább. A kérdésem az lenne, hogy szerintetek két PIC-cel foglalkozzak egyszerre, vagy ne foglalkozzak párszáz forinttal, és inkább az egyszerűbb feladatokat (időzítés, PWM) is a nagyobb MCu-tal csináljam? Továbbá: érdemes-e foglalkozni a PIC12 sorozattal? Olcsóbbak lennének... Milyen nyelven vannak jó fordítók PIC-re? Jelenleg úgy-ahogy tudok Basic-ül és Pascal-ul. Viszont úgy látom, hogy a C fordítókat sokan előszeretettel használják. Miért? Érdemes megtanulni C-ül? Előre is köszi a válaszokat!
Hogy milyennel kellene kezdened?
Előszöris a topik végigolvasásával, mert már néhányszor le lett írva, legutóbb két oldallal ezelőtt (most csakazért sem fogom leírni újra), illetve megkíméled magadat és minket is, hogy "kezdő" hibákra válaszolgassunk. Illetve elmész a honlapokra, letöltöd az égető programokat, és megnézed, hogy milyen tipusokat tudnak programozni. Hogy miért C? Mert a C a legelterjedtebb programozási nyelv, a legkifinomultabb, és legjobban fejlesztett. Nem a legkönnyebb, de ha egyszer megtanulod, bármit meglehet csinálni vele.
Hello!
Egy MCP41010- es digipotit szeretnek programozni. Tudnatok segiteni egy pelda progival, hogy is kell ebben az esetben SPI komunikaciot hasznalni 16F877-el? koszi!
Adatlap 9.1 fejezetét nézted már? Ugyan SPI kommunikációt még nem állítottam be soha, de nem tűnik bonyolultnak. SPI-ven az egyetlen kalandom az volt, hogy az ICD2-ben ugyanezen digipotit és a PWM vezérlőt próbáltuk kiváltani egy 12F683-al, és azzal kellett venni a potinak küldött jelet. A jelet vette is a chip, csak a feszültségszabályzást a PWM-el nem sikerült megbízhatóra csinálni.
Sziasztok!
Maszekba, otthon tanulom a programozás rejtelmeit. Szóval egy 16F84-essel indítottam, de megakadtam a feltétel írásánál. Ha esetleg valaki tudna segíteni azt megköszönném. Amúgy MPLAB-ot használok.
Termeszetesen azzal keztem, hogy attanulmanyoztam a 9.1-et. Probaltam mar irni egy progit, de nem mukszik.
Én ezt az oldalt ajánlanám:
http://www.freeweb.hu/fairco/pic/main.html#tanf MPASM-hez pedig: http://ww1.microchip.com/downloads/en/DeviceDoc/33014J.pdf
Akkor talán tedd közzé a progit, és a hozzáértők átnézik.
Kedves lgyk!
Egy 16F627A 400Ft. Ne haragudj, ha megkérdezem, ha ez neked problémát okoz, akkor Te hajléktalan vagy? Egyébként én is leírtam jó néhányszor a kérdéseidre a választ, ezért én is azt javaslom, amit potyo. Olvasd el a topicot! Utána ezt is: http://forum.terminal.hu/viewtopic.php?t=4546 Jó tanulást! Idézet: „Termeszetesen azzal keztem, hogy attanulmanyoztam a 9.1-et. Probaltam mar irni egy progit, de nem mukszik.” Akkor valami más gond lehet, mert az SPI olyan egyszerű valami, hogy nehéz elrontani. Lehet, hogy inkább azzal van a baj, amit elküldesz rajta, mert hogy kimegy az tuti, mivel az SPI nem más mint két, egy az adó egy a vevő oldalán lévő, léptetőregiszter közös órajel vezetékkel. Ami az egyikből kilép, a másikba belép és viszont. Tehát ne az SPI-ben keresd a hibát, inkább a kommunikációdban. (ja és ha közzé akarod tenni a progidat, akkor légyszíves fájlként tedd, mert itt a topic csak olvashatatlanná töri).
A parancs byte rendben van? Mielőtt a poti állását küldöd, 0x11-et kell küldeni!
|
Bejelentkezés
Hirdetés |