Just a moment ;-)
Beiträge gettagt mit C
Weekend Special : AVR Christmas Sound
13. Dez
Hatte am Wochenende etwas Zeit und Langeweile und habe mir mal wieder meinen kleinen ATMega8 geschnappt. Zwar ist es eine absolut miese Bildqualität, aber es kommt ja auf den Ton an. Warum ich einen ATMega8 und nicht mein Arduino-Board?
Beim Arduino muss man sich nicht selbst um die Timer kümmern und lernt daher auch nicht wirklich etwas über die Architektur. Zumal es einfach zu viel im Netz gibt und man da schnell was zusammen klaut. Außerdem wollt ich ja Zeit rumkriegen.
Update:
Nachdem das Ganze irgendwie süchtig macht, habe ich noch ein paar Melodien hinzugefügt.
* Itchy & Scratchy Theme
* KnightRider Theme
* The Simpsons Theme
* Star Wars Theme
* Star Trek Next Generation Theme
* Star Trek Voyager Theme
* SuperMario Bros Theme
* Airwolf Theme
* SuperMan Theme
* Scatman* Poison
* TakeOnMe
* Biene Maja Theme
* The final countdown
* Pink Panther Theme
* Adams Family Theme
* Axel Foley Theme
* The Flintstone Theme
* Indiana Jones Theme
* Little Drummer Boy
[Linux] Uptime mit C auslesen
27. Jul
Brauch man ja ab und an um sich ein Bild über die aktuelle Laufzeit des jeweiligen Systems zu machen oder um sich einzugestehen, dass man einfach zu lange vor der Kiste sitzt.
#include <sys/sysinfo.h>
long getTickCount() // Zeit seit dem Booten in Sekunden
{
struct sysinfo si;
if(sysinfo(&si) == 0) return si.uptime;
else return -1L;
}
int main()
{
printf("Uptime : %2.0f min",(getTickCount()/60.0));
return 0;
}
Joystick : Qt 4.5 und SDL
10. Mai
Wie in den Kommentaren über den ProBot 128 schon angedeutet, bastel ich mir gerade Soft- und Hardware um das Spielzeug ein wenig interessanter zu machen. Neben einer Joystick-Steuerung und eines kleinen LC-Displays, werden weite Ideen und Ausbaustufen folgen. Letztes Wochenende hatte Thomas mich erst wieder daran erinnert, dass das kleine Teil doch noch auf dem Regal steht und völlig sinnlos einstaubt.
Daher hab ich mal ein wenig mit SDL und Qt 4.5 gespielt und zu mindestens eine rudimentäre, plattformübergreifende Möglichkeit geschaffen einen USB-Joystick auszulesen. Ein I²C-fähiges Display wurde ebenso bestellt.
*Display ist nicht unbedingt nötig, aber es ist wesentlich einfacher die Kommunikation damit zu verfolgen.
Im Übrigen hat Thomas sich die Mühe gemacht und dem Bootloader der C-Control auf den Zahn gefühlt. Herausgekommen ist ein kleiner .NET-Loader, der Mono kompatibel ist und es ermöglicht hex-Files ohne IDE auf den Kontroller zu brennen.
Als nächstes werden per UART-Schnittstelle die Fahrbefehle fit gemacht und eventuell Events für die Knöpfe implementiert. Später soll die kabelgebundene Schnittstelle durch einen BTM-222 ersetzt werden, womit dann eine Steuerung über die RS232-Emulation der Bluetooth-Schnittstelle möglich ist.
Fedora x64:
und unter Windows Vista x64
Soviel zum Plan, bleibt nur noch das Ganze auch umzusetzen.
Progswitch für mySmartUSB unter Linux
22. Jan
Vor gut 2 Jahren bekam ich, gemäß meines Wunschzettels, zu Weihnachten eine USB-AVR-Experimentierplatine der Firma myAVR mitsamt dem kleinen USB-Prommer mySmarUSB. Beides hat mich bisher tatkräftig im Programieren von ATMELs kleinen Mikrocontrollern unterstützt und bisher auch immer fehlerfrei gearbeitet.
Der Prommer wirkt dabei als RS232-zu-USB-Umsetzer und läuft daher auch problemlos unter Windows und Linux.
Nachdem Komplettumstieg auf Linux, war eine schnelle Umstellung von WinAVR zu KontrollerLab als Entwicklungsumgebung notwendig, was auch kein größeres Problem darstellte.
Da ich natürlich alle Funktionen, Daten-/Programmiermodus und Resetfunktionen, des Prommers nutzen wollte musste ich leider feststellen, dass das Programm myQuickprog leider nicht unter Linux lauffähig war. Sicherlich hätte man mit wine emulieren können, jedoch erscheint mir das eher halbherzig. Im myAVR-Forum fand ich dann ein kleines Python-Skript das einen schnellen Wechsel der Betriesmodi erlaubt.
# -*- coding: iso-8859-15 -*-
import serial
import sys
# Kotrollsequenz gemäß technischer Beschreibung von mySmartUSB
controlseq = '\xe6\xb5\xba\xb9\xb2\xb3\xa9'
if (len(sys.argv) == 1):
print 'Usage: progswitch.py mode '
print '\tp : Programming mode'
print '\td : Data mode'
else:
ser = serial.Serial('/dev/ttyUSB0', 19200, timeout=1)
ser.write(controlseq + sys.argv[1])
Kleines Manko am Rande, es funktioniert bei mir nur auf dem Laptop, beim Desktop regt sich nix.
Also blieb nur eines, das Skript auf eine Hochsprache zu portieren!
Gesagt getan, da ich mich so oder so in die Programmierung der seriellen Schnittstelle unter Linux einarbeiten wollte, habe ich das Skript nach C portiert. Das resultierende Programm “progswitch” verfügt über Argumentswitches für die jeweiligen Modis und erlaubt das angeben eines Interfaces.
In etwa sieht das Ganze dann so aus:
progswitch -d -i/ttyUSB0
Wobei d : Datenmode und :i Interfacedarstellen und i zwangsweise vorhanden sein muss. Sollte jemand auf die Idee kommen zwei Modis anzugeben, so wird immer der letzte ausgewertet und behandelt.
Unter Fedora habe ich zusätzlich eine udev-Policy erstellt, die die Schnittstelle automatisch mit den Rechten 666, also lesen und schreiben für alle erstellt und nur die Sillicon Labs RS232-Konverter behandelt.
Übersetzen kann man das Ganze dann mit dem gewohnten Dreisatz von :
./configure
make
make install (als root)
Sollte es dabei Probleme geben, so steht die Kommentarfunktion jedem offen.
“Für etwaigen Schäden übernehme ich keine Gewähr oder Haftung. Sollte etwas an eurem System oder eurer Hardware beschädigt werden, so geschieht das Nutzen des Programms und der hier dargestellten Informationen auf eigene Gefahr!”
Downloads:
Back To The Roots
16. Sep
Ich hatte eigentlich schon damit abgeschlossen und fast auch gehofft, mich nie wieder mit Visual Basic beschäftigen zu müssen. Nur wie man ja so schön sagt, kommt alles anders als man denkt.
Wie kürzlich erwähnt habe ich letzte Woche meinen Messplatz vorgeführt und er wurde tortz meiner Bedenken erfolgreich zertifiziert, was soviel heisst wie “Arbeit ist abgeschlossen”.
Also frisch ans Werk zu neuen Projekten und Arbeiten, wo schon der nächste Auftrag wartete.
Diesmal geht es um eine “einfache” Schnittstelle zwischen einer C-Bibliothek (einem mehr als properitären Dateiformat)Â und einem Visual Basic 6 Programms, da momentan keine Zeit bleibt um eine entsprechende Bibliothek für VB verfügbar zu machen, bekam ich den Auftrag und musste erste Stolpersteine aus dem Weg räumen, was mir bisher auch ganz gut gelang.
Wer eventuell ein ähnliches Problem hat und eine Struktur oder einen einfachen Variablen Wert zurückgeben muss, hier einige Beispiele.