Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   22 / 1319
(#) tbence3 válasza miklajos hozzászólására (») Márc 19, 2007 /
 
Ami késik nem múlik De ezt is tudod mostmár.
(#) Csirgli hozzászólása Márc 21, 2007 /
 
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
(#) watt válasza Csirgli hozzászólására (») Márc 21, 2007 /
 
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..

(#) Csirgli válasza watt hozzászólására (») Márc 21, 2007 /
 
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

(#) watt válasza Csirgli hozzászólására (») Márc 21, 2007 /
 
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...)
(#) Csirgli válasza watt hozzászólására (») Márc 21, 2007 /
 
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)
(#) szabics hozzászólása Márc 21, 2007 /
 
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ú.
(#) watt válasza Csirgli hozzászólására (») Márc 22, 2007 /
 
Idézet:
„valahogy így oldottam meg”

Ezek szerint működik? És a belinkelt programmal? :eek2:
(#) potyo válasza szabics hozzászólására (») Márc 22, 2007 /
 
Nekem 8.valamennyis picc van, ha elküldöd a programot az emailcímemre, holnap este teszek egy próbát.
(#) Csirgli válasza watt hozzászólására (») Márc 22, 2007 /
 
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
(#) watt válasza Csirgli hozzászólására (») Márc 22, 2007 /
 
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:
„honnan lehet azt megtudni, hogy timer üzemmódban a tmr0 túlcsordult?”
mert, szerintem sehonnan.
(#) Csirgli válasza watt hozzászólására (») Márc 22, 2007 /
 
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)
(#) watt válasza Csirgli hozzászólására (») Márc 22, 2007 /
 
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": )
(#) Norberto válasza watt hozzászólására (») Márc 22, 2007 /
 
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:
(#) watt válasza Norberto hozzászólására (») Márc 22, 2007 /
 
Idézet:
„A T0IF Flag bit az nem véletlenül flag bit.”
Nem hát, szándékosan az! :yes:

Idézet:
„Tehát a flag bit az nem kapcsolja be a megszakítást, csak jelzi egy esemény bekövetkezését.”
É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.

Amúgy semmi gond!

(#) watt válasza watt hozzászólására (») Márc 22, 2007 /
 
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.
(#) Pontiac hozzászólása Márc 22, 2007 /
 
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


(#) szabi83 válasza Pontiac hozzászólására (») Márc 22, 2007 /
 


minek? ott a mikrocsip.com-on freeware......... letölthető...

(#) watt válasza szabi83 hozzászólására (») Márc 22, 2007 /
 
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!
(#) lgyk hozzászólása Márc 23, 2007 /
 
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!
(#) potyo válasza lgyk hozzászólására (») Márc 23, 2007 /
 
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.
(#) tibcsi hozzászólása Márc 23, 2007 /
 
Hello!

Egy MCP41010- es digipotit szeretnek programozni.
Tudnatok segiteni egy pelda progival, hogy is kell ebben az esetben SPI komunikaciot hasznalni 16F877-el?
koszi!
(#) potyo válasza tibcsi hozzászólására (») Márc 23, 2007 /
 
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.
(#) Bazsi hozzászólása Márc 23, 2007 /
 
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.
(#) tibcsi válasza potyo hozzászólására (») Márc 23, 2007 /
 
Termeszetesen azzal keztem, hogy attanulmanyoztam a 9.1-et. Probaltam mar irni egy progit, de nem mukszik.
(#) Iceman válasza Bazsi hozzászólására (») Márc 23, 2007 /
 
(#) Norberto válasza tibcsi hozzászólására (») Márc 23, 2007 /
 
Akkor talán tedd közzé a progit, és a hozzáértők átnézik.
(#) watt válasza lgyk hozzászólására (») Márc 24, 2007 /
 
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!
(#) watt válasza tibcsi hozzászólására (») Márc 24, 2007 /
 
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).
(#) potyo válasza tibcsi hozzászólására (») Márc 24, 2007 /
 
A parancs byte rendben van? Mielőtt a poti állását küldöd, 0x11-et kell küldeni!
Következő: »»   22 / 1319
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem