Difference between revisions of "Das Elektronik Buch"

From ThorstensHome
Jump to: navigation, search
m (WikiSysop moved page Das-elektronik-buch to Das Elektronik Buch)
Line 27: Line 27:
 
print time.time()
 
print time.time()
 
</pre>
 
</pre>
Dauern 4 Sekunden bei mir... das ist zu lange.
+
Dauern 4 Sekunden bei mir... das ist zu lange. Probieren wir es in C.
 +
 
 +
== blink.c ==
 +
<pre>
 +
#include <sys/ioctl.h>
 +
#include <fcntl.h>
 +
 
 +
int main()
 +
{
 +
    int port, i, status1, status2;
 +
    port=open("/dev/ttyUSB0", O_RDWR|O_NOCTTY|O_NONBLOCK);
 +
    ioctl(port, TIOCMGET, &status1);
 +
    status2=status1;
 +
    status1 |= TIOCM_DTR;
 +
    status2 &= ~TIOCM_DTR;
 +
    for (i=1;i<1000;i++)
 +
    {
 +
      ioctl(port, TIOCMSET, &status1); // set, switch off light;
 +
      ioctl(port, TIOCMSET, &status2); // clear
 +
    }
 +
}
 +
</pre>
 +
Compilieren mit
 +
gcc blink.c
 +
Ausfuehren mit
 +
./a.out
 +
 
 +
Dauert immer noch 4 Sekunden.
  
 
= See also =
 
= See also =

Revision as of 05:19, 19 April 2013

Es gibt dieses Buch-Paket, mit dem ich hier ein paar Linux-Experimente unternehmen will. Das Buch enthält eine Platine mit FTDI chip, die man an einen USB Port anschließen kann. Die Platine ist dann unter Linux z.B. als /dev/ttyUSB0 ansprechbar. Auf der Platine kann man elektronische Schaltungen stecken.

Blinker

So schnell wie möglich blinken:

import serial,glob

for devices in glob.glob("/dev/ttyUSB*"):
    garbage=42 # appease python
conn = serial.Serial(devices, baudrate=9600)
while True:
    conn.setDTR(False)
    conn.setDTR(True)

Ok, das flackert... Also mal ausprobiert, wie lange 1000 Schaltoperationen auf DTR dauern:

import serial,glob,time

for devices in glob.glob("/dev/ttyUSB*"):
    garbage=42 # appease python
conn = serial.Serial(devices, baudrate=9600)
print time.time()
for i in range(1,1000):
    conn.setDTR(False)
    conn.setDTR(True)
print time.time()

Dauern 4 Sekunden bei mir... das ist zu lange. Probieren wir es in C.

blink.c

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

int main()
{
    int port, i, status1, status2;
    port=open("/dev/ttyUSB0", O_RDWR|O_NOCTTY|O_NONBLOCK);
    ioctl(port, TIOCMGET, &status1); 
    status2=status1;
    status1 |= TIOCM_DTR;
    status2 &= ~TIOCM_DTR;
    for (i=1;i<1000;i++)
    {
      ioctl(port, TIOCMSET, &status1); // set, switch off light;
      ioctl(port, TIOCMSET, &status2); // clear
    }
}

Compilieren mit

gcc blink.c

Ausfuehren mit

./a.out

Dauert immer noch 4 Sekunden.

See also