You are here

PIC-es programozási kérdés...

20 posts / 0 new
Last post
Lengyel József
Lengyel József picture

Sziasztok !

PIC programozásban teljesen kezdő vagyok,és megnéztem sok szoftvert amivel lehetne programot írni PIC-re. Tudom a legjobb módszer Az MPASM szoftver amivel a leghatékonyabb módon lehet assembly-ben programot írni.
Viszont tanulmányoztam olyan szoftvereket amelyekkel lehet magas programozási nyelven *(Konkrétan BASIC-ben )- írni programokat.-És most jön a kérdés: soros kommunikációnál milyen jelentősége van annak ,hogy az adatfolyam bitjei invertálva vannak vagy sem ?
Például a következő magas programozási szinten működő "MIcroCode Studio PICBASIC PRO FOR PIC" tartalmaz egy olyan utasítást mint :

SEROUT pin,mode,var

SEROUT annyit jelent,hogy soros adat ki, adott port, adott lábán. A mode-nál vannak ezek az utalások az invertált bitfolyamra a program helpjében de nem egészen világosak.

Ha valaki találkozott,ismeri eszt a szoftvert kérem magyarázza el miért szükséges az adatfolyam bitjeit invertálni? Ez a kérdes lényege,a válaszokat hálásan köszönőm!!
Üdv : Lengyel József

Comments
BlackForce
BlackForce picture

Tehát a pickit3 programja adott,de valahogy senki nem ajánlott konkrét megoldást.
Szerintem ilyesmire van szükséged.A pcb SprintLayout-ban van és egy ZIF40 aljzat.Ami univerzális és ha a megfelelő helyre helyezed be az adott pic-et,akkor simán kezeli bármelyik IC-t amit a pickit3 támogat.Én is ezt használom.
Akinek tetszik,használja egészséggel.

0

kekestv
kekestv picture

Szia BlackForce.

Köszi a megoldást,ki fogom próbálni.
üdv.

0

AzzA
AzzA picture
*

Érdekes emberek vagytok, ezt pofázom két napja.
Azért szivesen :)

0

BlackForce
BlackForce picture

Már bocsi AzzA "ezt pofázom két napja.",ezt én is tudom,meg mások is,de megoldást senki sem adott a segélykérőnek (csupán jótanácsot).

0

kekestv
kekestv picture

Üdv. Mindenkinek!
Segítséget szeretnék kérni mivel a mai napon vettem egy PICKIT3 programozót ICSP kábellel,ehhez kellene valami adapter vagy foglalat,illetve lehetőleg magyar nyelvű progi.Idáig csak eprom és flash programozóim voltak,most van először a kezemben ilyen. Én semmi másra nem akarom használni,mint pld. meglévő hexa file beírásokra. Nem tudom,hogy a WINPIC800 nevű proginak(mivel magyar nyelvű) nincs e valami frissítése ehhez a programozóhoz.
üdv.

0

ty
ty picture

Ha felteszel egy kérdést és segítő szándékkal válaszolnak rá, egy "köszönöm" vagy "köszönöm, de inkább arra lettem volna kíváncsi, hogy ..." hozzá tartozik a jó modorhoz.
Persze azt is el tudom képzelni, hogy csak benéztél az oldalra és majd később gondoltad válaszolni, de emlékeim szerint nem ez az első ilyen eset részedről...

0

kekestv
kekestv picture

Szia! Köszönöm a segítséged. A kritikát inkább nem itt kellene. Legjobb tudomásom szerint ez egy szakmai oldal.
Itt nem a folyamatos köszönöm megy,hanem a kölcsönös segítségnyújtás.Ha te lettél volna a helyemben eszembe nem jutott volna,hogy illik megköszönnöd. Különben csak elmondom,hogy amit írtál az pont nem megoldás az én kérésemre:"Én semmi másra nem akarom használni,mint pld. meglévő hexa file beírásokra. "
Válasz:" Programozót általában erre használják." bölcs válasz mit mondjak(de kritikának nagyon jó) a többit amit leírtál minden PIC -es oldalon fent van.
Mindent nagyon köszönök.
üdv.

0

AzzA
AzzA picture
*

Szia !

"a többit amit leírtál minden PIC -es oldalon fent van."
Milyen válaszra vársz ?
DIP tokhoz ZIP foglalat, SMD-hez maratni kell amilyenre szükséged van.
Ennyi.
PICkit-nek van Saját programja

0

ty
ty picture

"Én semmi másra nem akarom használni,mint pld. meglévő hexa file beírásokra. "
Programozót általában erre használják.
Nem írtad milyen IC-ket akarsz vele programozni.
Ez egy ICSP programozó, mint a neve is mondja főleg arra lenne kitalálva, hogy áramkörön belül programozzál vele úgy, hogy a panelen egy csatlakozóra ki van hozva az a 4-5-6 láb ami a programozáshoz szükséges és ezeken keresztül csatlakoztatod a programozót, majd programozol.
Ezzel együtt lehetséges egy-egy típushoz vagy családhoz a jól ismert karos IC foglalat használata megfelelő bekötéssel, de az egyes családokhoz más-más bekötést kell alkalmazzál. Tehát ezt a módszert akkor tudod hatékonyan alkalmazni, ha jellemzőn csak egy-egy konkrét IC család programozására akarod használni a programozódat.

0

AzzA
AzzA picture
*

Szia !

Pickit-nek van saját programja, nem magyar ugyan, de annyira egyértelmű mint a faék.
Adaptert, foglalatokat tudsz venni készen, de olcsóbb és gyorsabb ha magad megcsinálod.
Vegyél egy 40-es ZIP foglalatot DIP tokhoz, SMD-hez meg lehet maratni panelből amilyenre szükség van.

0

ty
ty picture

"Tudom a legjobb módszer Az MPASM szoftver amivel a leghatékonyabb módon lehet assembly-ben programot írni."
Az assembly kód (=gépikód) használata speciális feladatok megoldásánál előnyös, ahol ki akarjuk zárni a magasabb szintű (=egyszerűbb, termelékenyebb) fordítóprogramok hátrányait. Egyéb esetben NEM javasolnám.

Invertált bitfolyamon valószínűleg a low-high bitek cseréjét értik, magyarán ahol nullát kéne küldeni ott küld egyet és fordítva. Hogy ez miért jó? Valószínűleg sok haszna nincsen.
A compiler-eknek egyébként van dokumentációja, az ilyen jellegű kérdésekre tartalmazzák a választ.
A tiedé talán pont ez lenne.

Egy gondolat még: programot írni sok mindenben lehet, bizonyos szinten működni is fognak. Én a magam részéről mikrovezérlőknél a különböző C fordítókat preferálom. Ha nem ástad magad túl mélyen a basic-be, esetleg nézz meg egy ilyet is. Talán ahhoz hasonlíthatnám, hogy jobban jársz ha egy Wellerrel tanulsz meg forrasztani mint ha egy pillanatpákával.

Üdv

0

Lengyel József
Lengyel József picture

Sziasztok nagyon szépen köszönőm mindenkinek a válaszát igazán tanultam belölük.
Üdv : Lengyel József

0

Lengyel József
Lengyel József picture

Szia, ty!
Nagyon szépen köszönőm a választ "megbarátkozok" a C nyelvel is .Én értem ,hogy a C nyelv hatékony mert "mikro gép közelibb" legalább az egyik igen tisztelt könyv szerző szerint.
Meg mondom öszíntén a BASIC-et jobban értem. A C ben kellenek # include file.h header fajlok.de a lényeg ,hogy bele ásom magam a C-ben is nem vagyok lusta rá,hogy megfogjak Egy C alapismereteket tartalmazó könyveket és ,hogy tanuljak.
Végezetül NAGYON SZÉPEN KÖSZÖNÖM A FÁRADOZÁSODAT ,hogy elolvastad eme sorokat és válaszoltál.
ÜDV: Lengyel József

0

zka67
zka67 picture

Szia, bocs, hogy beleszólok, de én egyáltalán nem értek egyet veled. A magasabb szintű programozási nyelvek pont a mikrokontrollerek lényegét veszik el, azt, hogy te tartsd kézben az egész rendszer működését. Csak assemblerben lehet igazán pontos időzítéseket csinálni. Nincs olyan tökéletes C fordító, ami ki tudná aknázni a mikrokontrollerekben rejlő lehetőségeket. Továbbá zabálják a memóriát, lassabban hajtják végre ugyanazt a funkciót, mint assemblerben megírva. És ez azt jelenti, hogy többet is fogyaszthat az a mikrokontroller, amelyikben C-ben megírt kód fut, mint amelyikben assemblerben megírt kód, ugyanis amíg a program fut, addig nem tud power down vagy idle módba menni a mikrokontroller. Persze, kényelmesebb leírni azt, hogy a = b * c; mint ugyanezt assemblerben, de az évek folyamán az embernek összegyűlik annyi programkódja, hogy nem kell mindent újra és újra megírnia.

0

ty
ty picture

Nem kell egyetérteni. Ahol piaci verseny van, ott a hatékonyság fontos szempont. Ha 30 százalékkal erőforrásigényesebb egy C kód, de egynegyed munkával állítható elő az assemblyhez képest, akkor ahol nincsen szükség az assembly által nyújtott többletre, ott nem fogják használni, mert nem éri meg a többlet munkát. Az a kevéssé hatékony és memóriazabáló C pedig jó volt arra, hogy Linuxot írjanak benne.

0

AzzA
AzzA picture
*

Szia !

Ez pontosan így van, az assembly vitathatatlanul a legjobb, de már nem ott tartunk mint 1980-ban, hogy rá kell férni az 1.44-es floppyra.
Igy különösebben nincs értelme zsugoriskodni a hellyel, memóriával. Lehet te az ASM-el beleférsz egy kisebb kontrollerbe a programoddal 10 óra munkával, aki meg C-ben, vagy x nyelven ír, az 2 óra munkával egy számmal nagyobb kontrollerbe. Aztán van 8 óra különbség, meg 300Ft. Az azért nem mindegy, ha nem magadban vagy megszállott :)

0

VaZso
VaZso picture

Szia!

Persze, de ehhez az kell, hogy gyakorlatilag egyetlen mikrokontroller családra rendelkezz be, és kérdés, egy több funkcióval, "speciális" utasítással rendelkező kontrollerhez mennyire igazítod hozzá a kódot (ha kell a hely, nyilván átírja az ember).
Esetleg miként implementálsz modernebb funkciókat, akár USB kommunikációt miként oldasz meg.

Nyilván pontos időzítés, legkisebb memóriahasználat és legkisebb programkód így lesz legkönnyebben elérhető, de egyrészt C kódban is lehet Asssembly kódrész, másrészt a C sem olyan iszonyatosan magas szintű nyelv (persze generálhat a fordító szükségtelenül bonyolult kódot), harmadrészt azért csak van előnye annak, hogy viszonylag egyszerűen átkerülhet a kód más vezérlőre.
Emellett a mikrokontrollerek erőforrásai sem feltétlenül szűkösek annyira mostanság, persze relatíve...

Ha x éve írnék Assemblyben programot adott kontrollerre, és nagy mennyiségű "modulom" - programkódom - lenne, amiből építkezni tudok, én sem váltanék (gyorsan és hatékonyan lehet Assemblyben is programozni)... de manapság már nem hinném, hogy érdemes volna kizárólag Assemblyben elkezdeni programozni, mert sokkal nehezebb így másik vezérlővel (is) foglalkozni, ami viszont egyértelműen hátrány.

0

Jaca
Jaca picture
****

Sziasztok!

Nem-e azért van az invertálás, mert a PIC TTL jelekkel dolgozik, míg a soros az +/-15V, és az interface IC van olyan ami invertál? Pl MAX232 is ha jól rémlik.

Üdv: Jácint

0

Lengyel József
Lengyel József picture

Szia , Jaca!

Annyit tudok,hogy az RS-232 protokoll a következőket határozta meg annó :
- A két logikai állapotnak megfelelően a következőket :
-A +3Voltnál magasabb a logikai nulla az ők jelölésükkel ezt hívják "SPACE"-nak.
-A (-3V) alacsonyabb feszültség szint a logikai egyes az ők jelölésükkel ezt hívják "MARK"-nak.
-Tudomásom szerint a MAX 232 IC jelszint konverziót végez.
-ha a bemenetén logikai nulla van "SPACE" ami nagyob mint 3V át konvertálja 0V-ra.

-Ha a bemenetén logikai egy van "MARK" ami kisebb mint minusz 3V ez lehet akár -12V ezt az IC átkonvertálja +5V-ra.
Üdv: Lengyel József

0

Sponsored links