PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programmierhilfe bei Ansteuerung von Schrittmotor (L297/298)



yulivee
25.06.2009, 07:28
Hallo Leute,
ich brauche mal die eure Hilfe. Habe die Schrittmotoransteuerung mit dem L297 und L298 gebaut und einen Schrittmotor aus nem alten Drucker damit in Betrieb, der läuft auch soweit. Jetzt möchte ich den Motor über den Computer ansprechen - hier liegt auch mein Problem. Ich würde z.B. gern das Signal übergeben, das sich der Motor einfach um 5 Schritte nach rechts dreht, aber ich habe keine Ahnung wie man das programmiertechnisch umsetzt.

Der Motor soll über den Paralellport angesprochen werden und ich würde das ganze in C oder JAVA (dann mit RXTX) lösen. Gearbeitet wird dabei unter Debian Lenny.
Die Problematik ist, das ich nicht weis, wie man jetzt einen spezifischen Pin des LPT anspricht, und was ich dem Motor dann über den Pin überhaupt schicken soll. (ein bit? ein byte?)

Ich bin hier noch Anfänger und würde mich über Hilfe sehr freuen,

Yulivee

yulivee
25.06.2009, 11:11
#include<sys/types.h> //open
#include<sys/stat.h> //open
#include<fcntl.h> //open

#include<unistd.h> //read,write,close

#include<sys/ioctl.h> //ioctl

/* benutzte data-pins:
Pin 9, I/O, Bit 7 = data bit 7 => enabled auf high oder low setzen
Pin 8, I/O, Bit 6 = data bit 6 => CW / CCW
Pin 7, I/O, Bit 5 = data bit 5 => Clock(muss so aussehen : 101010101010101)
*/

// gnd will find its own way

int port;
port = open("/dev/parport0", O_RDWR ); //Parallelport
ioctl ( port, PPCLAIM, NULL ); // öffnen

if ( port == -1 )
{
// Fehler - Port konnte nicht geöffnet werden
}

//Register lesen
/*
unsigned char r;
ioctl ( port, PPRCONTROL, &r ); //control-Register lesen
ioctl ( port, PPRSTATUS, &r ); //status-Register lesen
ioctl ( port, PPRDATA, &r ); //data-Register lesen

//Register schreiben
unsigned char r;
r = 0xXX;
ioctl ( port, PPWCONTROL, &r ); //control-Register schreiben
ioctl ( port, PPWDATA, &r ); //data-Register schreiben

ioctl( port, PPRELEASE, NULL ); // Parallelport
close ( port ); // schließen


so, das hier habe ich mir nach einem Artikel auf http://www.mikrocontroller.net/articles/Ports_benutzen_(GCC) schon zusammengereimt.

Im Prinzip fehlt mir nur noch, wie ich jetzt über die (oben im Code in Kommentaren angegebenen) Pins den Motor anspreche; also wie sage ich

1.) "setze über pin 9 enabled auf high"

2.) "setze über pin 8 die drehrichtung auf CW"

3.) "schicke über pin 7 folgenden takt an clock: 10101010101010..."

Dazu hab ich bei Google noch nix brauchbares gefunden...

Yulivee