[gelöst]TLC549 A/D-Wandler in C ansprechen, wie???

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
dopehouse
Beiträge: 452
Registriert: 01.09.2005 12:02:16
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Hildesheim (Niedersachsen)
Kontaktdaten:

[gelöst]TLC549 A/D-Wandler in C ansprechen, wie???

Beitrag von dopehouse » 06.06.2007 22:49:15

Hallo Leute!

Habe folgendes Problem. Wir haben in der Schule einen Temperaturmesser ( http://www.wvss-projekte.de/index.php?s ... &prj=tmess ) gebaut, der über die serielle Schnittstelle an den Rechner angeschlossen wird und als A/D-Wandler den TLC549 benutzt. Nun gibt es von unserem Lehrer nur ein Programm, dass nur unter Windoof (mit Wine gehts auch) läuft. Da das für mich keine Lösung ist, wollte ich das Teil mal nativ unter Linux ansprechen. Nun stehe ich allerdings vor dem Problem, dass ich absolut keinen Plan habe, wie ich das Ding ansprechen soll. Ich habe zwar im Netz ein Kernelmodul gefunden, dass allerdings mit dem 2.6er Kernel nicht mehr funktioniert.

Ich hab es bereits über die Funktionen outb, inb und ioperm versucht, was allerdings daran gescheitert ist, dass ich als root einen Speicherzugriffsfehler bekomme und als normaler User nur eine zurückweisung bekomme, da alles schon am Befehl ioperm scheitert.

Am liebsten hätte ich es aber auch über die die open, fcntl und co Funktionen erledigt, falls das überhaupt möglich ist.

Ich muss dazu sagen, dass ich bisher noch nie so nah an der Hardware programmiert habe und mein wissen auf dieser Ebene gegen NULL geht, was mich aber auch nicht daran hindert etwas dazu zu lernen.

Ich hoffe hier finden sich einige Hardwarefreaks, die mir bei meinem Problem einen Weg zur lösung zeigen können.
Zuletzt geändert von dopehouse am 10.06.2007 13:31:24, insgesamt 1-mal geändert.

Benutzeravatar
cirrussc
Beiträge: 6582
Registriert: 26.04.2007 19:47:06
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von cirrussc » 07.06.2007 00:07:16

Das ist ja mal ein tolles Projekt, wiso machen wir das nicht inder Schule :(

So was ist überhaupt der Grund warum ich C-Programierung lernen will...
Ich kann also nicht viel über die Funktionen sagen.
Mit

Code: Alles auswählen

cat /proc/ioports | grep serial
siehst du erst mal welche Basisadressen dein(e) rs232 Port(s) haben.

Ich hab da son schönes Buch über Embedded Systems mit einem Kapitel Parallelport und eins
Serielle.
Der nutzer muss auch noch in einer bestimmten Gruppe sein welche mit

Code: Alles auswählen

ls -l /dev/ttyS0*
rauszufinden ist.
Hier steht außerdem noch das die Struktur termios in linux/include/asm/termbits.h definiert, genutzt wird. Gibt sogar ne manpage man termios. Es wurde auf eine url verwiesen die nicht mehr existiert, aber googel
hat dann noch was gefunden: [1], [2], [3].

Naja, irgendwie bezieht sich das ganze aber darauf, das die TxD, RxD Leitungen zur Datenübertragung genutzt werden. Bei deiner Schaltung wird aber völlig anders vorgegangen, es wird mit den Anschlüssen DTR, CTS und RTS eine, so wie es laut Datenblatt aussieht, SPI-Kompatible Schnittstelle softwaremäßig generiert. Heißt jedes Bit vom Protokoll selbst steuern! SPI ist ähnlich aufgebaut wie IIC (oder I2C, im PC-Bereich SM-Bus) nur mit getrennten Daten Ein/Ausgängen, und ein Chip-Select. Und dann noch die Sequenzen des TLC einbasteln um die gewünschten Reaktionen zu erreichen, hui hui das wird aber umfangreich :roll:

Ich habe selbst schon mal Serielle EEPROM's und Port Expander per I2C über einen Mikrocontroller (MSC51 Familie) angesprochen. Natürlich in Assembler. Das is nich ohne.
Irgendwann mach ich sowas auch nochmal...

Also eine richtige Anleitung hab'sch nich

[1]
[2]
[3]
was zu SPI


Gruss cirrussc
Gruß cirrussc
--------------------
„Der Mensch steigert zur Zeit die Nutzung dessen, was seiner Willkür unterliegt - und kommt sich sehr klug dabei vor.“ H. Gruhl

Benutzeravatar
dopehouse
Beiträge: 452
Registriert: 01.09.2005 12:02:16
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Hildesheim (Niedersachsen)
Kontaktdaten:

Beitrag von dopehouse » 07.06.2007 00:23:38

Naja, ist ne schulische Ausbildung zum Tech. Assi. für Informatik.

Die Links hatte ich schon alle durch, mit Ausnahme des Links über SPI. Notfalls muss ich mich nächste Woche mal richtig darüber vom Lehrer aufklären lassen, wie er das mit seinem Windows Programm gemacht hat. Vielleicht lassen sich daraus ja schonmal einige Erkenntnisse nutzen.

Falls sich aber doch noch jemand findet, der noch etwas mehr weiß, wäre ich sehr glücklich.

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 07.06.2007 00:31:53

cirrussc hat geschrieben:Hier steht außerdem noch das die Struktur termios in linux/include/asm/termbits.h definiert, genutzt wird. Gibt sogar ne manpage man termios. Es wurde auf eine url verwiesen die nicht mehr existiert, aber googel
na, dafür brauchen Debian-Nutzer aber kein Google:

Code: Alles auswählen

aptitude install manpages-dev
mandb
"man termios" ist ein guter Start,
"man tty_ioctl" liefert die entscheidenden Infos.
Noch mehr gibt's zu sehen, wenn man die Hinweise am Ende der
man-page unter "see also" verfolgt oder "apropos ioctl" eingibt.

Nützliche Programme/Pakete sind z.B.:
- statserial
- setserial
- picocom (minicom oder seyon sind keine Alternative)

Es im Debianforum auch ein Beispielprogramm in C.
Das kann zwar nichts in Richtung SPI oder TLC, aber
immerhin sieht man die entscheidenden ioctl-Aufrufe.
Beware of programmers who carry screwdrivers.

Benutzeravatar
cirrussc
Beiträge: 6582
Registriert: 26.04.2007 19:47:06
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von cirrussc » 07.06.2007 00:35:28

Interessant !
Gruß cirrussc
--------------------
„Der Mensch steigert zur Zeit die Nutzung dessen, was seiner Willkür unterliegt - und kommt sich sehr klug dabei vor.“ H. Gruhl

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Beitrag von Spasswolf » 07.06.2007 01:23:40

Das Kernelmodul, was du gefunden hast könnte man auch auf einen neuen Kernel portieren.

Benutzeravatar
dopehouse
Beiträge: 452
Registriert: 01.09.2005 12:02:16
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Hildesheim (Niedersachsen)
Kontaktdaten:

Beitrag von dopehouse » 07.06.2007 07:13:21

Danke, sieht alles erstmal sehr interessant aus. Werde mir das heute Abend mal alles anschauen und schauen, ob ich damit weiter komme.

PS: Kernelmodul an den neuen Kernel anpassen sollte zwar möglich sein, allerdings muss ich mich da auch erstmal etwas einarbeiten, da meine bisherigen Programmiererfahrungen eher aus dem Bereich von von GTK+ Anwendungen kommen. So sachen, wie Kernelmodule programmieren oder Ansprechen von Hardware hab ich bisher noch nicht gemacht. Aber ich werd mein BESTES geben :)

Benutzeravatar
dopehouse
Beiträge: 452
Registriert: 01.09.2005 12:02:16
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Hildesheim (Niedersachsen)
Kontaktdaten:

Beitrag von dopehouse » 10.06.2007 13:30:50

So Leute, hab das ganze Zeugs gestern zum laufen bekommen und mache gerade ne kleine Bibliothek daraus. Werde das ganze dann nochmal mit dem Lehrer zusammen testen und dann als Paket bereitstellen. War mal wieder ne sch*** Arbeiter, die aber auch wieder Spaß gemacht hat und ich hab mal wieder etwas dazugelernt (wieso hatte ich mit Windoof nie solche Erlebnisse?). Ich denke mal, dass Mitte der Woche alles fertig ist und ich es dann für alle anderen, die Interesse daran haben und der LGPL bereitstelle. Den Link dazu werde ich dann hier rein posten, falls von euch auch einer Interesse hat.

@cosmac: statserial war eine riesige Hilfe, die anderen beiden Tools aber weniger. Aber ohne statserial wäre ich bestimmt immer noch bei NULL oder knapp dahinter ;)
Also nochmal ein fettes Dankeschön an dich.

Benutzeravatar
cirrussc
Beiträge: 6582
Registriert: 26.04.2007 19:47:06
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von cirrussc » 10.06.2007 13:38:30

dopehouse hat geschrieben:Ich denke mal, dass Mitte der Woche alles fertig ist und ich es dann für alle anderen, die Interesse daran haben und der LGPL bereitstelle. Den Link dazu werde ich dann hier rein posten, falls von euch auch einer Interesse hat.
Ich hab Interesse!

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 10.06.2007 14:23:18

dopehouse hat geschrieben:So Leute, hab das ganze Zeugs gestern zum laufen bekommen...
So, bist du schnell 8O
dopehouse hat geschrieben:War mal wieder ne sch*** Arbeiter, die aber auch wieder Spaß gemacht hat und ich hab mal wieder etwas dazugelernt (wieso hatte ich mit Windoof nie solche Erlebnisse?).
:) :) :) Also, falls mal wieder jemand Argumente braucht...
dopehouse hat geschrieben:Den Link dazu werde ich dann hier rein posten, falls von euch auch einer Interesse hat.
Sowas gehört in jeden ordentlich Haushalt ;)
dopehouse hat geschrieben:statserial war eine riesige Hilfe, die anderen beiden Tools aber weniger.
Ja, setserial wollte ich eigentlich wieder raus-edieren. Und wenn du die Daten mal
über die richtigen Pins übertragen würdest, würdest du picocom lieben ;)
Beware of programmers who carry screwdrivers.

Benutzeravatar
dopehouse
Beiträge: 452
Registriert: 01.09.2005 12:02:16
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Hildesheim (Niedersachsen)
Kontaktdaten:

Beitrag von dopehouse » 13.06.2007 17:07:11

So, wie versprochen gibt es hier die Bibliothek, die ich zu dem Problem geschrieben habe.
http://sourceforge.net/projects/libtlc54x

Es ist noch ein wenig dran zu tun. So gibt es zur Zeit noch keine Dokumentation und ich sollte vielleicht noch schauen, ob ich nicht noch irgendwo Fehler finde. Mit der ersten Anwendung funktioniert es aber zumindest schon. Die Homepage für das Projekt ist auch noch nicht fertig, folgt aber in Kürze.

Für all jene, die die Schaltung von http://www.wvss-projekte.de/index.php?s ... &prj=tmess nachgebaut haben oder nachbauen wollen, habe ich dann noch die passende Anwendung für Linux.
http://www.dopehouse.dyndns.org/Software/T-Mess-Linux

Die Anwendung ist derzeit (13. Juni 2007) noch in einem sehr frühen Stadium, funktioniert aber soweit schonmal und die Temperatur wird auch korrekt berechnet.

An dieser Stelle dann nochmal ein Dank an euch für eure Hilfe.

Benutzeravatar
cirrussc
Beiträge: 6582
Registriert: 26.04.2007 19:47:06
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von cirrussc » 13.06.2007 18:35:43

Geil!

Werd den TLC bei der nächsten Reicheltbestellung kommen lassen (alles andere hab ich reichlich).
Wird keine richtige Nutzanwendung aber um die Interaktion von Anwendung, Bibliothek und Hardware zu erkunden ists optimal (für mich).

Klasse, sehr kompetente Leute hier vertreten!

Gruß cirrussc
Gruß cirrussc
--------------------
„Der Mensch steigert zur Zeit die Nutzung dessen, was seiner Willkür unterliegt - und kommt sich sehr klug dabei vor.“ H. Gruhl

Antworten