Keresés: 
 Bejelentkezés
Nick:
 
Jelszó:
 
 
 
   
» Elfelejtettem a jelszavamat :'(
» Regisztráció
 Fórum témák
» Több téma
 Frissek
RSS hírforrások
  Hírek.rss
  Fórum.rss
  2010. Szept, 11. Szo
2:59:47
  Jelenleg 48 fő olvassa az oldalt
Fórum » Pontra menő témák » MikroPascal kérdések »
MikroPascal kérdések  
Témaindító: bozsokiandras, idő: Máj 15, 2006
Témakörök
Mikroprocesszorok » Microchip processzorok
Lapozás Méret: 1 / 12     
(#23588) bozsokiandras Válasz • Máj 15, 2006
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?

(#23597) Báddzsó válasza bozsokiandras hozzászólására (#23588) Válasz • Máj 15, 2006
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!

(#23598) sirály12 válasza bozsokiandras hozzászólására (#23588) Válasz • Máj 15, 2006
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.

(#23599) Báddzsó válasza bozsokiandras hozzászólására (#23588) Válasz • Máj 15, 2006
ja ezt is nézd meg: http://www.dakeng.com/u2.html
katt

(#23600) Báddzsó válasza sirály12 hozzászólására (#23598) Válasz • Máj 15, 2006
de gondolom azzal nem oldható meg a féllépés, meg a pwm?

(#23601) sirály12 válasza Báddzsó hozzászólására (#23600) Válasz • Máj 15, 2006
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ó.

(#95774) kokok Válasz • Jún 22, 2007
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.

(#95784) Slope válasza kokok hozzászólására (#95774) Válasz • Jún 22, 2007
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.



(#95787) kokok válasza Slope hozzászólására (#95784) Válasz • Jún 22, 2007
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.

(#95790) Slope válasza kokok hozzászólására (#95787) Válasz • Jún 22, 2007
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....

(#95793) kokok válasza Slope hozzászólására (#95790) Válasz • Jún 22, 2007
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

(#95795) Slope válasza kokok hozzászólására (#95793) Válasz • Jún 22, 2007
OK! Nincsmit!

(#95911) gozi válasza kokok hozzászólására (#95774) Válasz • Jún 23, 2007
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).

(#95913) gozi válasza Slope hozzászólására (#95784) Válasz • Jún 23, 2007
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...

(#95926) Norberto válasza gozi hozzászólására (#95913) Válasz • Jún 23, 2007
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

(#95929) kokok Válasz • Jún 23, 2007
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.

(#95948) szabi_o Válasz • Jún 23, 2007
A legújabb mikroPascalhoz(6.0.0.2) lenne szükségem gyógyításra, ha valaki tudna segíteni.

(#95964) Norberto válasza szabi_o hozzászólására (#95948) Válasz • Jún 23, 2007
Azt hiszem, ez talán működni fog
» A fájlok letöltéséhez be kell jelentkezned! «

(#95972) szabi_o válasza Norberto hozzászólására (#95964) Válasz • Jún 23, 2007
Húú, köszönöm szépen, ez gyors volt!

(#96024) Slope válasza gozi hozzászólására (#95913) Válasz • Jún 23, 2007
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;

(#96327) gozi válasza Slope hozzászólására (#96024) Válasz • Jún 24, 2007
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.

(#96330) gozi válasza Norberto hozzászólására (#95926) Válasz • Jún 24, 2007
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.

(#96368) Slope válasza gozi hozzászólására (#96327) Válasz • Jún 24, 2007
Hiába... egy éve már AVR-el játszom...

Köszi a javítást!
Üdv!

(#96410) kokok válasza gozi hozzászólására (#96327) Válasz • Jún 25, 2007
Köszönöm a segítséget a CMCON:=0x07; beírása után már működik is a program!

(#96411) kokok Válasz • Jún 25, 2007
Még egy kérdés
A pic 16f877-nél is igy kell beállítani?

(#96435) gozi válasza kokok hozzászólására (#96411) Válasz • Jún 25, 2007
Nem, mivel a 16F877 rendelkezik A/D konverter perifériával, így ott azt kell kikapcsolni az ADCON1:=6; utasítással.

(#96547) kokok válasza gozi hozzászólására (#96435) Válasz • Jún 25, 2007
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?

(#96553) Slope válasza kokok hozzászólására (#96547) Válasz • Jún 25, 2007
Meg lehet... minden benne van

Üdv!

(#96949) Norberto válasza Rendszer hozzászólására (#96948) Válasz • Jún 26, 2007
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...
» A fájlok letöltéséhez be kell jelentkezned! «

(#97960) Norberto Válasz • Jún 29, 2007
Hátha észreveszi egy illetékes ezt az értéket!

Következő 1 / 12     
 HEStore.hu
 Hirdetés
TrainModules.hu