Fórum témák
» Több friss téma |
Fórum » MikroPascal kérdések
Témaindító: bozsokiandras, idő: Máj 15, 2006
Témakörök:
Léptetőmotor vezérlést szeretnék építeni piccel (pic16f84-re gondoltam). Először csak egy sima step/dir vezérlést akarok, majd később bővíteni pwm-mel meg egyéb dolgokkal.
Az előre és hátra léptető eljárást már megírtam mikropascalban, csak az a probléma, hogy nem tudom hogy kell megoldani a bemenetről történő vezérlést. Addig oké, hogy a porta lesz a bemenet (trisa:=255), de utána hogy kell beolvasni az adatokat róla és hogy oldjam meg, hogy csak akkor lépjen a motor ha jelet kap a step lábon? Simán elég if port a=1; vagy megszakítást is kell kezelni és ha kell akkor hogyan?
jaja, simán elég az if porta... megszakítást úgy sem kezel minden lábán a pic. egyébként meg sztem használj 16f628a-t vagy 16f627a-t. 99,8% ua. mint a 16f84 csak fele annyiba kerül, meg van benne belső oszci, +néhány cucc.
mikropaszkalhoz nem értek, de gondolom úgy kell megadni melyik láb, hogy porta.X=1 X helyén a portnak az a lába amelyiket lekérdezed, hogy milyen logikai állapot van rajta. progi: kell egy folyamatosan pörgő progi ami nézi a 2db bemeneti lábat: (ez most sima egy lépéses megoldás, de ha féllépésesre akarod akkor 8 állapot kell) eleje: if porta.0=1 then if porta.1=1 then valami=valami-1 if valami=0 then valami=4 endif if porta.1=0 then valami=valami+1 if valami=4 then valami=0 endif endif if valami=0 then kimenet=121 (kimenet helyett ihatsz portb-t is és akkor a uccso elötti elötti sor nem kell, gondolom van select case v hasonló utasitás amivel "szebbé" lehet tenni és nem ilyen if-es.) if valami=1 then kimenet=82 if valami=2 then kimenet=423 if valami=3 then kimenet=121 portb=kimenet pause 13 goto eleje soxerencsét! ![]()
eléteszel egy 74ls191-est, ez lekezeli a lépések számlálását és az irányt, ezzel sem kell a picnek szenvedni. Kapcsolási rajz bővebben a hobbycnc oldalon: pdf
Én is így csinálnám meg.
de gondolom azzal nem oldható meg a féllépés, meg a pwm?
Ha megnézed a rajzot, akkor láthatod, hogy a pwm simán megoldható, mint ahogy meg is van benne oldva. Ez egy hobby cnc vezérlő kapcsolási rajza, ami léptetőmotorokat használ és pwm-ben hajtja őket.
A féllépés is megoldahtó.
Sziasztok
Nem akartam új topikot nyitni ezért ide írok. Most kezdtem el foglalkozni mikropascal-al, ebbe kérném a segítséget. Nem tudom hogy tudok olvasni bemenetet. Írtam egy ilyet de nem akar működni program pp; begin trisa:=1; trisb:=0; repeat begin if porta.0=1 then PORTB := 128 else portb:=0; end; until 0 = 1; end. az volt a tervem hogy az RA.0 portról olvasok ha az értéke 1 akkor az RB.7 -et bekapcsolja, de nem akar működni.
Ezt hexába add meg:
trisa:=1; trisb:=0; helyesen: trisa:=0xFF; trisb:=0x00; A Te beállításodnál a csak porta 0. bitje bemenet, illetve csak a portb 0. bitje kimenet.
Köszönöm a választ, de sajnos még most se akarja azt csinálni amit én szeretnék.
Úgy néz ki nem akarja olvasni a portot, már póbáltam másikra tenni de ott se olvas.
Akkor próbáld nagy betűkkel. Már vagy egy éve nem foglalkoztam pascal nyelvel, és ezzel a programmal sem, de megkerestem egy régebbi programom, és ott nagybetüket használtam.
TRISA TRISB PORTA PORTB stb....
Ok
Megpróbálom remélem működni fog. Sajnos most már vége a munkaidőmnek, most már nem tudom kipróbálni. Ha kipróbálom jelezni fogom hogy működik vagy nem. Köszi a segítséget
Itt inkább az lesz a probléma, hogy nem gondoltatok a többi periféria beállítására. Mivel a PIC típusa nincs leírva ezért általánosságban írom le a dolgokat:
16F-eknél a legtöbbször hiba a komparátor kikapcsolásának elmulasztása (CMCON regiszter). 18F-eknél pedig a portokat át kell kapcsolni digitálissá (ADCON1 regiszter). Idézet: „A Te beállításodnál a csak porta 0. bitje bemenet, illetve csak a portb 0. bitje kimenet.” Ezt gondold át mégegyszer...
A MikroPascal egyébként ezt elfogadja?
trisa:=1; trisb:=0; Mert számomra elég érdekesnek tűnik, hogy egy egész bájtnyi értéket így "definiálunk"...persze, ha ezzel nincs baja a fordítónak, akkor nincsen gáz... Azért kérdezem, mert nem tudom, hogy ez a megadás így helyes-e jelen programnyelv esetében ![]()
A mikropascal nem adott ki hibát a "trisa:=1;" utasításra hiba nélkül fordította, a pic tipusát igaz nem írtam mivel ezt egy menübe kell beállítani, egyébként 16F628-ról van szó.
A kimenetet szépen tudom kapcsolgatni ahogy akarom, csak adatot nem tudok beolvasni vele. Most ismerkedem a mikropascal-al, és próbálok rájönni hogy is működik. Sajnos most az elején már elakadtam egy ilyen egyszerű dolognál, mint az adat beolvasás valamelyik lábról. ![]()
A legújabb mikroPascalhoz(6.0.0.2) lenne szükségem gyógyításra, ha valaki tudna segíteni.
Azt hiszem, ez talán működni fog
![]()
Ok egy kicsit tényleg sántít, arra akartam rámutatni, hogy egy 8bites regiszternek adott értéket 1 bittel (csak egy kicsit furcsán jött ki
![]() Viszont az F628 tartalmaz komparátort az A porton (mint ahogy arra gozi kollega is utalt) Az ADCON0 regiszterben lehet kikapcsolni, ha jól emlékszem az alsó 3 bit aktív állapotában van kikapcsolva. ADCON0 := 0x07; Idézet: „ADCON0 := 0x07;” Helyesen: CMCON:=0x07; Vagyis, ahhoz, hogy bemenetként működjön a PORTA.0, ahhoz ki kell kapcsolni a komparátorokat a fenti utasítással.
Azzal az utasítással, hogy trisa:=1; decimálisan írtuk be az értéket a regiszerbe. Ez megfelel 0x01-nek vagy 0000 0001-nek! Értelemszerűen, mivel nyolcbites regiszterről van szó, ezért deximálisan a legnagyobb kiküldhető érték 255(d)=1111 1111(b)=FF(h). Vagyis minden érték, amit nem definiálunk, hogy milyen számrendszerben van, mindig decimálisként lesz kezelve! Ez minden "normális" fodítónál így van.
Hiába... egy éve már AVR-el játszom...
Köszi a javítást! Üdv!
Köszönöm a segítséget a CMCON:=0x07; beírása után már működik is a program!
Nem, mivel a 16F877 rendelkezik A/D konverter perifériával, így ott azt kell kikapcsolni az ADCON1:=6; utasítással.
Ha nem a RA portokra akarok digitális bemenetet csinálni 16F877-re hanem pl: RC-re akkor gondolom nem kell "ADCON1:=6" utasítás, vagy ott is kell?
Bocs ha kicsit hülyeségeket kérdezek, de szertném megtanulni, nem tudom ezeket a PIC adatlapjában meglehet találni mikor mit kell csinálni?
Címben megnevezett programhoz tartozó angol nyelvű leírások csatolva...!
Kitömörítés: WinRAR, vagy hasonló kaliberű tömörítő-programmal... |
Bejelentkezés
Hirdetés |