Handskakning parallellport-PICkrets

Robot, CNC, Pneumatik, Hydraulik, mm
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Handskakning parallellport-PICkrets

Inlägg av tusse »

Har tidigare byggt en drivare för stegmotorer som jag styrde direkt över parallellporten, det var ganska enkelt för här bestämde programmet hastigheten på step pulserna.
Tänkte nu försöka sätta in en PIC-krets till stegmotordrivern och skicka pulserna via parallellporten till kretsen.
Blir det programmet som bestämmer tiden på step pulserna eller kan man ha någon form av handskakning.
danei
EF Sponsor
Inlägg: 27397
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Inlägg av danei »

Ja det blir programet som fixar det. Gissar jag. Jag vet ju inte exakt hur din drivare ser ut. Vad menar du med handskakning?
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Inlägg av tusse »

Din fråga: Vad menar du med handskakning?
Att kretsen "svarar" när han fått en puls att han är klar att ta emot nästa från porten.

Det kan vara så att kretsen drar "linan" låg en kort puls när den är klar att ta emot ny data.
danei
EF Sponsor
Inlägg: 27397
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Inlägg av danei »

Okej. Jeg tror inte att styrnigen har koll på motorn så att den vet när det är dags för nästa puls. Så det blir nog till att ha koll på det i mjukvaran.
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Om du ändå skall sätta in en mikrokontroller mellan PCn och stegmotorn, varför inte göra det ordentligt och låta mikrokontrollern ta hand om motor
styrningen helt och hållet ?

PC'n behöver bara sända "20 steg fram" eller "100 steg bakåt" eller
något liknande. PIC'en tar hand om detaljerna.

Varför skall du annars sätta in en PIC mellan PC'n och motorerna ??
Om den bara skall skicka pulserna vidare ?

Sen verkar det mycket enklare att sätta mikrokontrollern på en
serieport. Programmet i PIC'en blir enklare.

Slutligen så används begreppen "programmet" och "mjukvaran"
utan att det framgår om det är PCn eller PIC'en som avses...
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Inlägg av tusse »

"Om du ändå skall sätta in en mikrokontroller mellan PCn och stegmotorn, varför inte göra det ordentligt och låta mikrokontrollern ta hand om motor
styrningen helt och hållet ? "

Har vi diskuterat något annat.

"PC'n behöver bara sända "20 steg fram" eller "100 steg bakåt" eller
något liknande. PIC'en tar hand om detaljerna. "

Jaust det Sodjan, det var det som vi dikuterade.

"Varför skall du annars sätta in en PIC mellan PC'n och motorerna ??
Om den bara skall skicka pulserna vidare ?"

Vem påstod det.

"Sen verkar det mycket enklare att sätta mikrokontrollern på en
serieport. Programmet i PIC'en blir enklare. "

Möjligt med det var inte relevant i detta fall

"Slutligen så används begreppen "programmet" och "mjukvaran"
utan att det framgår om det är PCn eller PIC'en som avses..."

Sunt furnuft så förstår man.
B1n4ry
EF Sponsor
Inlägg: 1327
Blev medlem: 30 november 2005, 20:02:50
Ort: Borås
Kontakt:

Inlägg av B1n4ry »

Såja, lugna nu...

Det ÄR en i det närmaste obegriplig och virrig fråga så jag håller delvis med Sodjan... Bra är kanske att kalla PCns program för software/mjukvara och mikrokontrollens för "firmware"...

Antar att du undrar hur PICen skall veta att PCn skickar data till den och när det är ett nytt "ord" som kommer.
I så fall är svaret att man använder en STROBE-signal som PCn styr. (pin 1 i PCns parallellport) PCn lägger ut ett ord (8 bitar) på datapinnarna. Sedan ändrar den strobe-signalen från 1 till 0 och sedan tillbaka till 1 igen. Mikrokontrollern ligger och lyssnar på strobe och när den upptäcker att strobe är 0 så läser den av datapinnarna. På PICen kan strobe vara valfri pinne men det är bra att ta interruptpinnen eller en annan pinne som klarar av "interrupt on change"

Gör du så kan du skicka kommandon till kontrollern med ett enkelt doskommando typ: echo "100 steg fram" >lpt1:

//B1n4ry
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Inlägg av vfr »

Dessutom finns det "busy" och "ack"-signaler tillbaka till PC:n.
B1n4ry
EF Sponsor
Inlägg: 1327
Blev medlem: 30 november 2005, 20:02:50
Ort: Borås
Kontakt:

Inlägg av B1n4ry »

vfr: Japp. Men dom kan man nästan alltid hårdbygla och sedan ignorera... =)
Om man skriver PIC-koden någorlunda optimerat så hinner PICen behandla data snabbare än PCn skickar. Givetvis är det beroende på tillämpningen i fråga...

//B1n4ry
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Inlägg av vfr »

PIC:en hinner säkert hantera det, men skickar du t.ex "step 100" eller nåt sånt så måste du (PC:n alltså) veta när den utfört detta och är klar för nästa kommando. En liten buffert för kommandon kan man också ha men likväl så måste PC:n veta när bufferten är full. Det är där "ack" eller "busy" kommer in i bilden.
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Jösses tusse !! :-)

Du behöver inte spåra ur helt bara för att du inte lyckades beskriva
problemet riktigt bra från början. Varför tror du att jag försökte få
lite klarhet i vad du menade ? Bara för att det är kul ?

Från ditt första inägg :

> Har tidigare byggt en drivare för stegmotorer som jag styrde direkt
> över parallellporten, det var ganska enkelt för här bestämde
> programmet hastigheten på step pulserna.

OK, så här är alltså "pulserna" de pulser som driver stegmotorn, eller hur ? Drivningen sker ju "direkt".
Sedan nästa mening i samma inlägg :

> Tänkte nu försöka sätta in en PIC-krets till stegmotordrivern och skicka
> pulserna via parallellporten till kretsen.

År inte dessa pulser samma pulser som i meningen ovanför ? Eller är detta någon annan slags "pulser" ??
Det står ingenting om att detta skulle vara "100 steg framåt" eller något liknande.
Sedan tredje och sista meningen i samma inlägg :

> Blir det programmet som bestämmer tiden på step pulserna eller kan man ha någon form av handskakning.

Här är det fullständigt oklart vad som avses med "programmet" !!

Till sist, där du "svarar" på mina olika frågor och förslag, är du bara larvig...
Du påstår att vissa saker har diskuterats när det uppenbarligen inte har det.

Du skriver att "Sunt furnuft så förstår man.". Så är det naturligtsivs inte.
Det man behöver veta är vad du *igentligen* tänkte när du skrev ditt
något oklara första inlägg. Det var bara det som jag försökte ta reda på.

> "Bra är kanske att kalla PCns program för software/mjukvara och mikrokontrollens för "firmware"..."

Antingen det, eller helt enkelt "PC programmet" / "PIC programmet", solklart då vad man menar.

Förrutom ack/busy, så skulle jag fundera på att ha en funktion för PIC
programmet att kunna skicka "data" (felkoder, larm eller liknande)
tillbaka till PC programmet.
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Inlägg av tusse »

Jag överreagerade på grund av att ofta dyker sodjans kommentarer upp även om det går att förstå vad personen skriver.
Dom andra har förstått vad jag menade utan att nedvärdera mitt inlägg, det är möjligt att jag inte använder mig av en del fina engelska ord på grund av att den engelskan jag lärt mig skedde ett tag före att en del av er föddes.
Danei förstod vad jag menade med program och jag förstod vad han menar med mjukvara och danei gav mig ett svar som kan stämma.

Nu har jag inte labbat med någon stegmotorkort som det går att skicka X-antal steg (100 steg framåt) direkt till och ingen programvara i PC som arbetar på samma sätt. Att det finns finner jag troligt men då blir det hela ord som jag skickar till kretsen.
å stegmotorkorten som jag labbat med så finns det ingångar för riktning och steg där varje puls utgör ett steg och frågan var om det går att få en bekräftelse på att denna puls är behandlad (stegmotorn har fått uppgiften att ta ett steg i bestämd riktning) och att detta går att skicka tillbaka som en bekräftelse på att datorprogrammet kan skicka en ny puls.

Kretsen är en PIC 16F628

Ett litet tillägg: danei du hade rätt, det blir mjukvaran som styr det.
Användarvisningsbild
Icecap
Inlägg: 26632
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Nu vill jag ju nog ge sodjan rätt i detta fall, jag har fått läsa inläggen båda 3 och 4 gånger för att få vett i det och förstå vad du menar.
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Inlägg av tusse »

Att det var dåligt förklarat av mig är nog riktigt men för den skull behöver man inte anta att det ska vara si och så En bra början är att fråga, vad menar du med ............
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Inga problem, det är Jul och vi ska vara snälla mot varandra... :-)

> Dom andra har förstått vad jag menade...

Jag är inte helt övertygad om, men det får dom andra uttala sig om... :-)

Om du hade nämnt ditt "stegmotorkort" redan från början
så hade mycket tjafs undvikits. Åtminstånde jag (rätt eller fel) fick intryck
av att du i princip genererade drivningen för de olika motorlindningarna
direkt från parr-porten (via något drivsteg, så klart).

Nu är det alltså en 16F628 (16F628A ?) som skall driva
stegmotorkortet, fortfarande med en puls per "steg", eller hur ?

Hur som helst, dina frågor verkar vara mer kring hur stegmotorkortet
i sig fungerar (återkoppling när ett "steg" är utfört). Vad säger
dokumentationen till kortet ? Har du någon länk till kortet och/eller
dokumentation till det ?

Vad är orsaken till att du vill behålla parr-porten som interface
från PC'n ?

Slutligen, om du ändå skall stoppa in en PIC mellan PCn och stegmotorkortet
så borde man se till att PC programmet inte skall behöva generera
varenda "puls" till kortet. Eller har du en PC programvara som du inte
kan påverka funktionen på ?

GOD JUL !!
Skriv svar