Fórum témák
» Több friss téma |
Fórum » Előgyújtás-szabályozás (PIC-kel is)
Témaindító: Peti.Janka, idő: Nov 13, 2006
Témakörök:
Először is milyen programnyelvet ismersz? Mennyire vagy jártas az elektronikában?
Sajnos egyenlőre annyira hogy egy analóg áramkört bármikor megépítek, vagy megpróbálok tervezni.
De kész vagyok tanulni, csak sajnos nem tudom hol kezdjem a dolgot.
Először is olvasd végig ezt a topicot teljesen az elejétől a végéig,aztán a szerzett tapasztalatok alapján válassz mikrovezérlőt ,ami a feladatkörödnek megfelel. Aztán állísd fel a kritériumokat amiket a kapcsolásnak tudnia kell,és ehhez mérten tervezd meg. Amint ez megvan már csak a program hiányzik,azt meg leginkább C-ben tudod megírni,bár ez sem 5-10p -es munka.
Mod.: Ha elakadsz valamiben menet közben írsz nekünk és mi segítünk,de nem tervezhetünk meg mindent. A hozzászólás módosítva: Feb 10, 2017
Rendben, köszönöm a gyors választ! Akkor még jelentkezem!
Üdv!
Sziasztok!
Nos.. Olvasgattam, jártam sok sok oldalon, és szó-szó lett némi fogalmam az assembly-ről. Egy LED villogtató programot lemásolva, hibás programként rájöttem hogy B port helyett A portra érdemes átváltanom, és kicsit a parancsokkal játszva sikerült belőle egy futófényt csinálnom 4 LED-re, de ezt is csak egy pic simulátorral. Na most ezt megismerve rájöttem, milyen nehéz megírni egy programot, és még tanulnék, de már nem tudom honnan.. Van két asm fájl, amik segíthetnének ebben, de a simulátorral nem tudom leellenőrizni a működést, mivel nem ismeri a program, az adott pic-et. Az egyik legnagyobb gondom, hogy nem ismerem a parancsokat, nem tudom hogy lehetne beállítani, hogy az adott PIC (hasra ütök) 13-as lábát szeretném bemenetnek használni, oda kötném a Hallt, a 26-os lábát pedig kimenetnek, oda kötném a végfokot. (itt még nem is volna talán gond, kinézem PDF-ből, beírom parancsba, hogy BCF PORTB és akkor az egy kimenet lesz pl.) de hogy adom meg a számítást, hogy a bemeneten teszem fel 1000Hz-es jel (1000RPM), az adott FHP után mondjuk 360°-5°-os jelet adjon ki? Szintén, pl 1500-as fordulaton mondjuk lenne 360°-6° mondjuk. Remélem érthetően zagyváltam (Ehhez egy komoly PIC-ező segítsége kéne, és ha itt lakik valahol Hódmezővásárhely körül, akkor személyesen is vennék tőle órákat!) Köszönöm Előre is! A hozzászólás módosítva: Feb 17, 2017
Ha gyorsan szeretnél eredményt elérni, akkor valamilyen fejlettebb nyelven érdemes programot írni. Basic nyelvre van egy ingyenes fejlesztő környezet. Most ismerkedek vele. Úgy tűnik elég gyors kódot készít. Great Cow Basic
Ettől függetlenül az adott PIC-et meg kell ismerni. A Microchip oldalán az adatlapokban minden megtalálható.
16F87
Ezt a Pic-et néztem ki. Angol nyelvtudásom nem a legjobb sajnos, de azt sem tudom, miket kell PIC esetében néznem.. Más integrált áramkörökben, megy a dolog, de még ismerkedek a PIC-ekkel. Leszedtem a programot, már csak kikéne ismernem nézek pár videót róla vagy valamit..
Icsern WEB oldala nagyon jó, bár a 18F sorozattal foglalkozik és nem tudom miért, nálam megbolondult a böngésző. Az ékezet megjelenítéssel van probléma. PICULA
A 18F sorozatú PIC-ek gyorsabbak a 16F sorozatúnál. Később ha úgy gondolod tudsz váltani. A Great Cow Basic egyébként támogatja a 16F87-et. Egy másik oktatóanyag.
Köszönöm a Linket, nem bolondult meg a böngésződ, az oldal ilyen
Nemrég voltam egy elektronikai szaküzletbe, ott azonnal az AVR-t ajánlották, hogy az sokkal egyszerűbb, és okosabb, olcsóbb.. szóval most megkettőztem, hogy merre is kéne forduljak.. egy biztos, ha az egészet nem tudom kihozni 20ezer alatt, ráhagyom, mert 18000 egy IGC 60.. De egyenlőre még az építés mellett állok!
Elég kis idő alatt sokat fejlődtél,mind kérdés mind tudás szinten. Ha érdekel én felkínálok neked egy arduino nano-t ,a többit megbeszélhetjük privátban. Az arduino-hoz írtak elég sok hasonló szoftvert,ahol kezelik a fordulatszámot,vagy épp csak feldolgozza és listázza sd kártyára. A lényeg az hogy abban egy része már megvan a te programodnak csak vissza kell szedni.
Maradj a PIC-nél. Jobb a dokumentáltsága. Egyébként is több a lehetőség. (példa programok, fejlesztőkörnyezetek,stb) 2002-ben kezdem el PIC-el foglalkozni, ha annyira nagy lehetőséget láttam volna az AVR-ben akkor abba az irányba fordultam volna.
Inkább a PIC18F sorozat irányába mozdulj el, mert szerintem szükséged lesz a nagyobb sebességre.
Köszönöm a dicséretet, de nem érzem úgy hogy sokat fejlődtem volna. Ahogy beszélgettem a srácokkal a boltban, olyanokat mondtak, hogy csak pislogtam.. Szóval még rengeteget kell tanulni.
Írok Privátban nem sokára!
Oké, akkor eddig 1-1 a PIC és az AVR részére is!
A P18FXxx felé nem mertem elmenni, mert túl komolynak néztem, és nekem elég volna egy egyszerű 8 lábas kis ketyere is csak elég gyors legyen. 15000-HZ-ig képes legyen feldolgozni az adatot, és kitudja számolni az előgyújtást. (Barátaim agyon tuningolt Simsonjai képesek 13000-et forogni.) Nekem csak a gyári 50-es marad meg, nem akarom forgatni túlzottan, csak olyan alapjáratot szeretnék hogy számolni lehessen.. A lényegre visszatérve kicsit elakadtam.. Találtam egy cikket a PIC megismeréséről itt, de nem volt képes feldolgozni a sok inputot az agyam.. Nem ismerem még mi az a regiszter, mi az a megszakító vektor.. Értem én hogy pl. ha kapálok és megnyomják a csengőt, akkor az egy megszakítás, mert a haverom kint kártyázik a kapuban, és várja, hogy odamenjek.. De akkor se értem, mikor kell alkalmaznom.. Pl. akkor amikor a motor az FHP-ra ér? És Hogy akkor kell elkezdeni kiszámolni a szögsebességet, majd megfelelő pontra időzíteni a szikra jelét?
A PIC programja általában egy főprogramból áll és az meghívhat alprogramokat. A főprogram egy végtelen ciklus amit a mikrovezérlő újra és újra végrehajt.
A megszakítás (interrupt) lényege, hogy egy különleges alprogramon folytatódik a program futása. Vagyis kilép a főprogramból egy külső jel hatására. pl. Valamelyik lábra engedélyezed a megszakítás és úgy állítod be hogy a külső jel felfutó élére váltson ki megszakítást. Amint a külső jel feszültsége meghaladja a PIC adatlapjában lévő értéket akkor a program a megszakítási rutinon folytatódik tovább. Amint befejeződik a megszakítási rutin a program futása a főprogramban folytatódik. A megszakítási rutin gyors beavatkozást tesz lehetővé. Abban az esetben ha elég gyors a PIC és pici a főprogram elképzelhető hogy nem kell használni megszakítást. A PIC18F sorozatnál már bonyolultabb a helyzet. Két megszakítási vektor cím van. Ezen felül priorizálni lehet az egyes megszakításokat. "Nem ismerem még mi az a regiszter, mi az a megszakító vektor" Semmi különleges. Egy csak egy programsor címe. A PIC16F87 esetében "0004h" Ezen folytatódik tovább a megszakítási rutin. Ugrási cím. Basic programozásnál ezzel nem kell foglalkozni. A regiszter. A program memória fenntartott címei. Ezeket beállítva , ezekbe 0-át vagy 1-et írva a mikrovezérlő hardvereit lehet utasítani valamire. pl. megszakítás engedélyezés. Remélem nem fogalmaztam túl pontatlanul. 10 éve programoztam utoljára assemblyben.
Értem, tehát, ha én azt mondom egy regiszternek hogy 1, akkor azzal engedélyezem az adott port kimenetén hogy aktív, vagy sem?
Megszakítás vektor meg úgy vettem ki a szavaidból, hogy nekem kelleni fog. És akkor pl főprogramrészbe kellene megírnom magát a programot, hogy mit figyeljen, és ott kell meghívnom azt az alprogramot, ami végül is, a kimenetet szabályozza?
Igen a megszakításra szükséged lesz. És ráadásul két megszakítás között el kell végeznie a mikrovezérlő programjának mindent és felkészülve kell várnia az új megszakítást.
A megszakítást az engedélyező bitek segítségével engedélyezned kell. Ha le van tiltva, akkor nincs megszakítási rutin. A megszakítási rutinban törölnöd kell a megszakítást jelző bitet. (flag) Pontosan tisztában kell lenned azzal, hogy mennyi idő alatt futnak le a programod részei. Arra gondolok, hogy rossz esetben nagy fordulatnál kihagy a gyújtás, mert a mikrovezérlő nem tudja lekövetni. Na ekkor jöhet a PIC18F széria. Basic-ben megírt program módosítása csak néhány perc 16F-ről 18F-re.
Nagyjából értem.. Esetemben, az én motorom talán 6000-ig foroghat ki. Na most azt szerinted képes feldolgozni a 16F? Mert nyilván egy tuning mocinál már 18F kell.
Kérdés, hogy mit akart mondani ezzel, a szerző: "Ezek a belső perifériák nem rendelkeznek külön kivezetésekkel ezért ha egy perifériát használunk az a 33I/O rovására működik, viszont baromi sok programozástól és szenvedéstől szabadít meg minket." Nem tudom kivenni, hogy most mit akarhat mondani, nem a megfogalmazás miatt, pusztán nem értem. :\
Passz! Kezd el írni a programot aztán majd meglátod.
Egy lábra általában több funkció van kivezetve és te döntöd el hogy mire használod. pl. analóg A/D átalakítás, digitális , UART, I2C stb
Még annyit, hogy a Timert biztosan használnod kell majd az idő múlásának mérésére. A két megszakítás közötti értékre gondolok. Nézz bele ennek a programjába.
A hozzászólás módosítva: Feb 18, 2017
Értem úgy lassanként..
Már csak egy élő példa kellene egy ilyen programra, amit részről részre eltud nekem magyarázni valaki Amúgy ha jól sejtem, akkor a BSF parancs a logikai 1 lenne, tehát azzal tudom a portot bemenetnek állítani. Na most úgy képzeltem el a programom, hogy lefoglalok egy memóriaterületet, most legyen a 20-as, bár azt nem tudom hogy mik közül választhatok, és mi értelme a dolognak vagy hogy melyiket célszerű (ezeket senki sem írja le cikkekben). Aztán elindítom a picet org 0000 -val Aztán ugróparancs a beállításokra, itt megmondom neki, hogy a b4 a bemenet, a b5 a kimenet, majd eztán kellene beállítani a megszakítás vektort, amihez még most sem konyítok sajnos.. Nem tudom mihez kell állítani, hogy hajtsa végre ( van egy asm fájlom erre a vezérlőre, pont ebben a fórumban találtam egyujt.rar fájlban de nem tudtam még értelmezni a parancsokat) Majd eztán jönne főprogram rész A hozzászólás módosítva: Feb 18, 2017
Igen komoly kis programot raktál össze.. őszintén csak pislogok mi-micsoda..
Hagyd az Assemblyt a fenébe, Basicben kezdj neki. Gondolom nem hónapokig akarod írni a programot.
A világításvezérlő programját néhány óra alatt írtam meg és még agyaltam az elméleti részén is. Fejlett nyelven sokkal gyorsabb a fejlesztés. Persze ettől függetlenül az adott PIC hardvereivel, regisztereivel tisztában kell lenni. A hozzászólás módosítva: Feb 18, 2017
Már régen a basic-al szenvedek, de csak azt láttam eddig, hogy próbálja kitalálni a parancsokat. Nem ismerem, de itt is assemblybe írja nem? Vagy más módja is van?
Betettem a te programodat is, meg egy egyujt nevű hexet is, ezeket próbálom értelmezni, de nem igen megy. Az egyujt egyébként egy olyan progi, amit már valaki elkezdett a vezérlőhöz, de hibás valahol.
A világításvezérlőm programját Picsimulatoride fejlesztőkörnyezetben írtam. A Great Cow Basic kicsit eltérhet tőle. A Great Cow Basic -zést azzal kezdtem, hogy a példa programjait tanulmányozgattam. Ezt javaslom neked is. Gyorsan összefog állni a kép. Egyszerűbb az Assemblynél.
A világításvezérlő programjához nagyon hasonló lesz a te programod is. Ott a hálózati nullátmenet váltja ki a megszakítást és ehhez tologatja a fázishasítás szögét. A bas kiterjesztésű fájlt bármelyik szövegszerkesztővel is meg tudod nyitni.
Keresgéltem a Timer számító programot amit régen használtam. Nem találom, de mindegy mert azóta már online is van jó néhány. Erre biztosan szükséged lesz
|
Bejelentkezés
Hirdetés |