Fórum témák

» Több friss téma
Fórum » PIC programozás FBD nyelven (funkció blokk diagramm)
Lapozás: OK   1 / 2
(#) ZoleeBB hozzászólása Márc 27, 2008 /
 
Sziasztok!

Most kezdek ismerkedni a PIC programozással! Abban kérem segítségeteket h nem ismertek vmi olyan jó PIC program író progit amivel funkció blokk diagramm alapján lehet programozni? Hogy mire is gondolok? A Zelo programozásban elég jó vagyok ( http://automatizalas.schneider-electric.hu/index.php?pid=9|tid=19 ) pl itt úgy történik a programozás, hogy megvannak a bemenetek és a kimenetek, és az áramkör belsejét megtervezhetem, mindenféle logikai kapu, időzitők, sbt... blokkok álnak rendelkezésre, amit csak behuzok az áramkörbe és bekötöm a lábakat. Nagyon jó kis softver, ilyesmit keresek PIC programozásra! Esetleg tud vki segíteni?
(#) kobold válasza ZoleeBB hozzászólására (») Márc 27, 2008 /
 
Amiről te beszélsz, a Zelio, az PLC, a PIC viszont egy mikrokontroller. Igaz, hogy egy kontroller a PLC lelke is, de ott már alapból fut egy "oprendszer", a firmware, ami lehetővé teszi a fejlesztőkörnyezet kódjának tárolását, futtatását, értelmezését.
PIC-re ilyen szintű környezetet ne is keress, létezik egy LDmicro nevű alkalmazás, amiben létradiagrammal lehet néhány kontrollerre programot írni alap perifériák blokk-szerű használatával, de tudomásom szerint ez kb. a max.
Tanulj inkább asm vagy C programozást, mindettőhöz nagyon jó környezetek vannak.
(#) ZoleeBB válasza kobold hozzászólására (») Márc 27, 2008 /
 
Köszöm! Esetleg a C nyelvhez (a pic programozáshoz használatos részéhez) nem tudtok ajánlani vmi jó oktatóanyagot?
(#) potyo válasza ZoleeBB hozzászólására (») Márc 27, 2008 /
 
A kontrollerekhez kell egyrészt a C szintaktikája, másrészt kell ismerni a kontroller működését is. Szóval nem elég csak a C-t tudni. Legjobb lenne, ha asm-ben programoznád először, akkor megtanulnád mi hogyan működik.

C-ről elég sokminden van a neten, pl.: Link
(#) ZoleeBB válasza potyo hozzászólására (») Márc 27, 2008 /
 
php -ben elég otthon vagyok azt mondják hasonlít a c nyelvre. van valami köze hozzá?
(#) potyo válasza ZoleeBB hozzászólására (») Márc 27, 2008 /
 
Én is úgy nézem, hogy a szintaktikájuk hasonló (ez valószínűleg nem véletlen, hanem a C-ből vették át), de a php-hez nem értek, csak néztem néha kódokat.
(#) dcsabi válasza ZoleeBB hozzászólására (») Márc 27, 2008 / 4
 
Amit Te keresel, annak a PIC-ekhez való változata Pl: a Parsic nevü program. A Demója is szinte teljesen használható...
Áramköri szimbólumokkal megrajzolod mit szeretnél, a program meg ez alpján közben automatikusan megcsinálja a forrás file-t (ASM-t)
Az MPLAB (ingyenes) meg lefordítja hexaba ( égethető )
változat... Egy egyszerübb program, a "likusok" számára is 10-15 perc vele...Adott esetben ez egy "kicsit többet" is tud mint az általad említett...
(#) dcsabi válasza ZoleeBB hozzászólására (») Márc 27, 2008 /
 
Egyébként megértelek, aki vezérléstecnikához van szokva , ez a megoldás sokkal jobb, és gyorsabb...Ezzel nem kell "tökölni" álltalában elsőre megy...
(#) bbb válasza ZoleeBB hozzászólására (») Márc 27, 2008 /
 
a php messziről ugatja a c-t leginkább a perlhez hasonló, de mégse ugyan az. a perl meg ugye c alapokon nyugszik, mint ahogy a legtöbb nyelv, mivel c-ben mindent lehet írni, még oprendszert is vannak persze pascal, meg basic alapú nyelvek, de ezek logikai felépítésben nem térnek el túlságosan, inkább a szintaktikájuk más.
ha c-t akarsz tanulni, akkor nagyon sok könyv áll rendelkezésedre, de arra fel kell készülnöd, hogy először az alapvető programozási szemléletet kell megtanulni hozzá, a szintaktikával nem mész semmire...
az asm (assembly) viszont alacsony szintű programnyelv (a gépi kód felett egy lépéssel), ennek megértéséhez, és használatához kicsit jobban el kell mélyedni az adott hardver architektúrájában, ismerni kell milyen utasításokat használhatsz, milyen regiszterekben gondolkozhatsz, mik a korlátaid. (én pár hónapja kezdtem a suliban assemblyt tanulni, és mondanom se kell elég vad, ha nem tudsz valami magasabb szintű nyelven jól programozni)

alapvetően az a nagy különbség köztük, hogy assembly esetén jobban át kell gondolnod mit hogyan akarsz elérni (épp ezért jóval hatékonyabb programot írhatsz benne, de sokkal több munkával). hogy csak egy apró ostoba példát említsek:
feladatunk összeadni 1-10-ig a számokat
ez egy magasabb szintű nyelven így néz ki:
  1. int szum=0;
  2. for(int i=1,i<=10,i++){
  3. szum+=i;
  4. }


assemblyben kicsit bonyolultabb:
  1. xor ax, ax
  2. mov cx, 10
  3. osszegez:
  4. add ax, cx
  5. loop osszegez

persze most a program eleje és vége mindkét esetben lemaradt, de talán érzékelteti a különbséget ez az aprónak mondható feladat. míg első esetben szabadon felvettünk két változót, és simán egyszerűen megfejthető módon megmondtuk mit akarunk, addig a második esetben nem garázdálkodhatunk annyira szabadon...
pl. írassuk ki a képernyőre az eredményt, akkor első esetben elég egy print, assemblyben meg vigyük át dx-be az ax értékeét, majd ax-be írjunk 9-t, majd hívjuk meg a 21h megszakítást. ugye feltűnt, hogy itt a szabadon megválasztott ax regiszterünket felül KELLETT írnunk, hogy kirhassuk az összeget a képernyőre... vicces, nem? tehát érdemes jó alaposan megfontolni mit választ az ember, és honnan kezd neki a programozásnak (de az tény, hogy assemblyben bármit meg lehet írni, legfeljebb beleőszül az ember, mire elkészül, és persze a hibakeresés is jóval körülményesebb)
(#) potyo válasza bbb hozzászólására (») Márc 27, 2008 /
 
Azért azt tegyük hozzá, hogy a pic-ek asm nyelve sokkal egyszerűbb, mint a PC processzorok asm nyelve. Egy 16F pic tartalmaz összesen 35 utasítást, amiből kb. 20-at használunk rendszeresen. Még a 18F sorozat is csak 75 utasítást tartalmaz szemben a pc processzorokban fellelhető többszáz utasítással, amikből ráadásul még többféle változat is van. A kontrollereknél nincs 10-15 féle memória címzés, csak egy munkaregiszter van (ez komolyabb feladatoknál hátránnyá válik, de kezdetben segíti a megértést), az IO műveletek a memóriában látszanak, nem kell hozzá rutinokat hívogatni, meg még ami most hirtelen nem jut eszembe.

-------------------

Egyébként az előző példádat én így írtam volna:
for (unsigned char i=1;i<=10;szum+=i++); >
(#) bbb válasza potyo hozzászólására (») Márc 27, 2008 /
 
c-ben nemigen programoztam még delphiben jóval többet, meg most assembly...
(#) dcsabi hozzászólása Márc 28, 2008 /
 
Amit én ajánlottam az egy müködő dolog, tanulni meg kiváló... Ha valaki a nyelvtannal el kezd bajlódni, és nem müködik, amit írt, azt sem tudja miért nem megy, vagy rossz a program amit írt, vagy rossz az áramkör, vagy esetleg az égetés körül van valami...
Én javaslom, tapasztaljon meg egy progit betölteni egy adott hardware-környezetbe, és ha elindul akkor jó az áramkör, meg az égetési eljárás is jó...Utána turjon bele a programba, és fedezze fel, mire mi való... Ha előbb van eredmény jobban tud haladni...Amit én ajánlottam azzal, ha rajzol egy 4 bemenetü és kapcsolatot valamelyik bemenetekre,vagy egy led villogtatást, ...stb... az Asm file egyből mutatja, "hogy kellett volna " ezt "homokszemekből"...
Valójában rutinok gyüjteménye ( a szerző megírta helyettünk) amit automatikusan összeilleszt... a kivánt müködés szerint...
(#) dcsabi hozzászólása Márc 28, 2008 /
 
Továbbá megjegyzem aki pic-et szeretne használni, az nem biztos, hogy azon gondolkodik, hogy a programozát mindenek fölé helyezze, és hónapokig, akár tovább "ki sem lát belőle" mig egy egy jó projektet összehoz...
Példaként említeném, pl: az Unutronix Plc-hez kapható ingyenes fejlesztő programot, aki hardwaret akar eladni sok mill példányban, nem kéne egy szűk rétegre korlátozni
a felhasználás lehetőségét! A PIC-et is meg legtöbb procit nagyon sokan
használnák még, ha nem lenne "ennyire körülményes" éltre kelteni... Aki ennyire jártas a programozásban, már rég írhatott volna egy Parsic-hoz (kb1.3 MB) hasonló vizuális környezetet, a viszonylag egyszerű gyors felhasználási lehetőségek biztosítására...
Nem pedig az egyetemi évek alatt elsajátított elveket próbálni ráerőszakolni, villanyszerelőkre műszerészekre, vagy hobbi elektronikásokra, egy fél órás projekt kapcsán...
(#) dcsabi hozzászólása Márc 28, 2008 /
 
Valami ilyesmire gondoltam, ha TE nem, akkor nem tépem magam tovább...

PIC_FUN.JPG
    
(#) ZoleeBB válasza bbb hozzászólására (») Márc 28, 2008 /
 
Köszönöm a szép kerek válaszod! Azér a felsőbb szintű nyelv sokkal jobban ismerős! Szinte teljesne ugyenígy kell php-ben sé javascriptben is! Ez jobban teccik!
(#) ZoleeBB válasza dcsabi hozzászólására (») Márc 28, 2008 /
 
Na én valami hasonló programozó progira gondoltam! Ennek a proginak vannak határia? Tehát pl mindnet meg tudod benn csinálni amit pl megirnék c nyelven vagy valamilyne nyelven vagy csak bizonyos dolgok összehozhatóak benn!?
(#) dcsabi válasza ZoleeBB hozzászólására (») Márc 28, 2008 /
 
Mondj egy példát amire kellhet, vagy mondjuk többet is...
Van némi határa, azt meg úgy lehet átlépni, hogy megírod pl asm-be és beleilleszted, és innéttől nincs határ...
(#) ZoleeBB válasza dcsabi hozzászólására (») Márc 28, 2008 /
 
tökéletes! a progihoz nem tudsz vmi oktató anyagot?
(#) potyo válasza ZoleeBB hozzászólására (») Márc 28, 2008 /
 
Minél magasabb szintű egy "nyelv", annál gyorsabban lehet benne fejleszteni, de annál előbb ütközünk korlátokba is. Amit asm-ben meg lehet csinálni, azt nem biztos, hogy C-ben is meg lehet csinálni (csak elég valószínű, mivel a C alapvetően rendszerprogramozásra lett kitalálva). Amit asm-ben nem lehet megcsinálni, azt nem lehet megcsinálni.


Írtad, hogy php-t ismered, onnan nincs messze a C. Inkább C-t tanuld meg, az mindig jól jön. De én továbbra is azt tartom, hogy kontrollerekhez ismerni kell azok asm nyelvét is. Nem muszáj asm-ben programozni, de néha nem árt belenézni az asm listába (amikor a kód nem úgy működik, mint ahogy elvárjuk), és akkor tudni kell, hogy melyik utasítás mit jelent.
(#) gtk válasza ZoleeBB hozzászólására (») Márc 28, 2008 /
 
Azert a uC programozasnak semmi koze sem a php sem a javascripthez, mert itt bit szintu programozasrol van szo es egy rakas logikai muveletrol. Ebbol a szempontbol meg majdnem mindegy hogy C vagy ASM, annyi mondjuk hogy Cben hamarabb megy es osszetettebb programot at lehet jobban latni, konnyebb 16 bites szamokat kezelni 8 bites procin, meg ilyesmik ..
(#) gtk válasza potyo hozzászólására (») Márc 28, 2008 /
 
Idézet:
„Írtad, hogy php-t ismered, onnan nincs messze a C...”

Onnan azert meg egy jo hajitasra van

Udv.
(#) ZoleeBB válasza gtk hozzászólására (») Márc 28, 2008 /
 
Értem! Köszönöm! Hamarosan elltogatok vmi könyvesboltba és keresek vmi szakirodalmat. Esetleg vmi konkrét könyvet nem tud vki ajánlani?
(#) kobold válasza dcsabi hozzászólására (») Márc 28, 2008 /
 
Nem mintha el akarnék tántorodni az asm-től , de kíváncsi vagyok, hogy a blokkok előre megírt asm-kódok, amiket gépiesen, sorban összefűz, vagy végez valami optimalizálást is? Gondolok itt pl. olyanra, hogy ha két egymást követő utasítás ugyanabban a bankban dolgozik, mondjuk egy 876-nál, akkor össze tudja vonni egy bankváltás alá, stb.
Szerény véleményem amúgy az, hogy a processzorokat alapvetően nem a grafikus programozásra találták ki, még ha gyorsan meg is lehet ilyenekkel írni pár egyszerűbb dolgot. Ráadásul, ha valaki hozzászokik, de egy feladat miatt mégiscsak alacsonyabb szintre kell lépnie, akkor ez a blokkos látásmód már zavaró is lehet. A PLC-k esetében természetesen más a helyzet, azok (a fejlesztőkörnyezettel együttműködve) már eleve ilyen programozási módra készülnek.
(#) dcsabi válasza kobold hozzászólására (») Márc 28, 2008 /
 
Van benne "Optimalizálás" opció ami többek közt ezt is csinálja... Mindenre nem jó, viszont ha van valami spec dolog Pl. I2C Pcf8583 kezelése, erre kell egy rutint írni ASM-be és beilleszthető a modulok közé... Rengeteg bit-es 1-és 2 byte-os múvelet végezhetó vele, könnyen elsőre kezeli az "karaktres" LCD-ket és a soros kommunikációt...Ha kéne csinálnom valamiból 100e db-ot és fontos lenne, hogy megtakarítsak prociként 50ftot , biztos nekifeküdnék ASM-ben...Egyébként általában ez a gerice a progi-imnak, igy biztos nem vétek, beállítási vagy Init hibát...és igy általában elsőre megy is, ez sem utolsó szempont...!
(#) kobold válasza dcsabi hozzászólására (») Márc 28, 2008 /
 
Ez elég barátságosan hangzik.
Egyet nem értek csupán:
Idézet:
„Ha kéne csinálnom valamiból 100e db-ot és fontos lenne, hogy megtakarítsak prociként 50ftot , biztos nekifeküdnék ASM-ben”
-- ha ennyivel gyorsabb és egyszerűbb kódolni a Te környezetedben, akkor ezt miért mondtad? Nekem pont az ellenkezője lenne logikus Nagy szériában, ha nem ideálisan "rövid" a program, ellenben hibátlan és stabil, aligha lehet gond; a mindenre kiterjedő optimalizálás inkább azokra jellemző, akik maguknak csiszolgatják megszállottan a programot.
(#) dcsabi válasza kobold hozzászólására (») Márc 28, 2008 /
 
Arra gondoltam, hogy esetleg nem fér bele egy alkalmazás,
egy prociba és emiatt egy nagyobbat kell választani pl nagyobb eeprom, vagy ram, vagy valami "kényszerü hardware" módosítás stb... esetleg valamivel költségesebb
lehet. Ilyenkor érdemesebb lehet megpróbálni a másik utat is... Pl.két nyomógombra előre hátra 16bites "számláló" lcd-re kiíratni, esetleg eepromban is tárolni,vagy egy analóg bemenettel összehasonlítani, kb annyi mint, ezt a hozzászólást megírni...
(#) snapscan válasza dcsabi hozzászólására (») Márc 28, 2008 /
 
Hol találtad a 3.6-ot???
(#) dcsabi válasza snapscan hozzászólására (») Márc 28, 2008 /
 
Ez volt az utolsó verziók egyike, mielőtt leszedte a "pacák" a netről... Azt hiszem az RS kommunikáció van pluszban... de a 3.48 is már szerintem benne volt...
(#) vilmosd válasza ZoleeBB hozzászólására (») Márc 29, 2008 /
 
Hali

Csak tamogatni tudom az elottem szolokat akik ajanlottak az ASM es a C
nyelveket. Megmartozni , bevizezni a furdogatyat kizarolagossan az ASM ajanlhato.Itt talalsz eleg jo leirast a PIC-ek lelkivilagarol. A Te altalad vazolt programozasi metodusok hasznosak egy nagyobb processzor programozasahoz ahol a memoria es az egyeb eroforrasok hatara a csillagos eg, de ezekben a MCU-kban igen korlatolt a RAM es programtarolo is. A masik problema : Sok eve programozom es sok eve dolgozom PIC-el. Szinten igy kezdtem. Kerestem klf nyelveket ami helyettem megirja a proggit. A mai napig nem sikerult. Meg egy problema: vannak esetleg ilyen programok de a java csak -F84-re es 1-2 masikra. A fejlesztesek ezzel ki is merultek tobbe nem adnak ki ujabb verziot, ha Te szeretnel egy ujabb, szebb, szinesebb, szagosabb procit alkalmazni ahhoz mar nincs tamogatas es kezdhetsz keresgelni masik programnyelv utan.
En melegen ajanlom olvasd vegig az adott link PIC-es reszet, toldsd le az MPLAB utolso verziojat. Ha szeretnel probalkozni C-vel (a proci megismerese utan) a BKND oldalrol letoltheto egy free C fordito. A masik jo es allando frissitesu fordito a CCS C.
Nem mondom hogy ezek a kotelezo lepesek de ajanlottak.
En hasonlo csapdaba estem annakidejen a 8051 programozasa utan celszerunek talaltam a parallax ASM-et de hamar falakba utkoztem.
Bocs ha egy kicsit hosszura sikerult, de szerettem volna felvilagositani a fiatal kollegakat a magas szintu programozasi eljarasok csapdajarol.
Na eldugulok.
Udv Vili
(#) dcsabi válasza vilmosd hozzászólására (») Márc 29, 2008 /
 
Amit én ajánlottam azzal, jól ebbe is bele lehet mártózni, (előre megirt ASM modulok, rutinok) azzal a plusz lehetőséggel, hogy amit csinálsz az általában elsőre müködik, és nem veszi el az illető kedvét a továbbiaktól... aztán ha megy, akkor lehet művészkedni,
homokszemekből várat építeni... stb...
Következő: »»   1 / 2
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