Freitag, 20. November 2009
Montag, 16. November 2009
C
So eine binäre Uhr ist schon was schönes:
Nicht nur, dass ich jetzt immer, wenn ich in mein Zimmer komme erstmal Kopfrechnen üben muss, um zu erkennen wie spät es ist; nein, bei der Programmierung konnte ich noch meine (oberflächlichen (bisher hatte ich nie ein Programm über 20 Zeilen geschrieben, und das auch nur, weil ich den gcc mal im Terminal ausprobieren wollte xD)) C-Kenntnisse vertiefen. So tief es halt mit 300 Zeilen Code geht. Mit einem Pinsel auf Granit kommt man wahrscheinlich tiefer ;)
Aber dafür weiß ich jetzt auch was Interrupts sind, auch wenn ich glaube, dass sie kein Bestandteil es klassischen C sind, sondern eher ein "Überbleibsel" aus Assembler oder wenigstens speziell zur Mikrocontroller Programmierung im AVR-GCC vorhanden sind, und was Bitoperationen wie: a|=(1<<3).
Danach habe ich mir noch etwas Mühe gegeben den Quelltext exzessiv zu Kommentieren, um in 2 Wochen immer noch zu wissen, was ich weshalb gemacht habe *g* Wer einen Blick auf mein Erstlingswerk (nach einem 20-Zeilen-Primzahlen-Finder) werfen möchte, kann das hier tun.
Nicht nur, dass ich jetzt immer, wenn ich in mein Zimmer komme erstmal Kopfrechnen üben muss, um zu erkennen wie spät es ist; nein, bei der Programmierung konnte ich noch meine (oberflächlichen (bisher hatte ich nie ein Programm über 20 Zeilen geschrieben, und das auch nur, weil ich den gcc mal im Terminal ausprobieren wollte xD)) C-Kenntnisse vertiefen. So tief es halt mit 300 Zeilen Code geht. Mit einem Pinsel auf Granit kommt man wahrscheinlich tiefer ;)
Aber dafür weiß ich jetzt auch was Interrupts sind, auch wenn ich glaube, dass sie kein Bestandteil es klassischen C sind, sondern eher ein "Überbleibsel" aus Assembler oder wenigstens speziell zur Mikrocontroller Programmierung im AVR-GCC vorhanden sind, und was Bitoperationen wie: a|=(1<<3).
Danach habe ich mir noch etwas Mühe gegeben den Quelltext exzessiv zu Kommentieren, um in 2 Wochen immer noch zu wissen, was ich weshalb gemacht habe *g* Wer einen Blick auf mein Erstlingswerk (nach einem 20-Zeilen-Primzahlen-Finder) werfen möchte, kann das hier tun.
Samstag, 14. November 2009
Verhaltenstipps für Nerds
Freitag, 13. November 2009
Binär Uhr
Heute, am Freitag den 13., schreibe ich mal wieder einen Eintrag. Heute einer, mit dem ich den Schwerpunkt dieses Blogs etwas vom "moechtegern" hin zum "geek" verschieben will:
Eine selbst gelötete und in C programmierte Uhr. Natürlich keine gewöhnliche mit einer einfallslosen 7-Segment-Anzeige, sondern mit 10 LEDs, die die Uhrzeit binär anzeigen.
Wer damit nichts anfangen kann: es sieht so aus:
Wer mir die Uhrzeit in die Kommentare schreibt, darf sich ab dann offiziell "moechtegerngeek" nennen ;)
Für die Statistik: gebaut in 7 Tagen (letzten Freitag zu Löten angefangen und heute die 1,5V AA Batterien auf den Rücken gebunden (weil alle Knopfzellen im Haus leer sind xD))
Leider muss ich zugeben, dass ich nicht allein auf diese glorreiche Idee gekommen bin. Hier kommen also die "Credits".
1) Eines Tages lag eine Werbung im Briefkasten, wo (teure) Uhren mit dieser und ähnlichen Anzeigeformaten beworben wurde. Leider ist mir der Name des Herstellers entfallen.
2) Also ich im Internet dann nach einer passenden Uhr gesucht habe, bin ich auf ThinkGeek.com auf das Vorbild meiner Uhr gestoßen. Allerding waren mir 70$+23$ Versand zu teuer.
3) Der Wikipedia Artikel verstand unter einer Binäruhr etwas anderes, was mich an ein KDE 3 Applet erinnerte, was ich mal auf dem Suse, der seit 3 Jahren nicht mehr existiert (von dem Mainboard stammt die Knopfzellenhalterung, die auf der Uhr zu sehen ist :D), meines Vater gesehen hatte. Aber die Links am Ende des Artikels halfen mir weiter:
4+5+6) AVR Binäruhr & PIC Binäruhr: Diese beiden guten Seiten habe ich studiert, beschlossen, dass ich mir einen Lötkolben zulegen werde und die - meiner Meinung nach - besten Teile aus beiden Anleitungen herausgesucht, und Schaltungsprototypen mit Eagle entworfen.
6) Conrad hat mir dann die bestellten Teile: Lötkolben, ATMega8 Microcontroller, AVR-Programmer, LEDs, Widerstände, Quarzoszillator, Taster und Kabel recht schnell zugeschickt. Zugegeben: es ist wahrscheinlich teurer sich den ganzen Kram anzuschaffen, als sich einfach eine Uhr aus den USA kommen zu lassen. Aber man hat auch mehr Spaß dabei. Und so einen Lötkolben kann man bestimmt auch länger benutzen*g*
7) Nach erfolgreichem Löten, kam der anstrengenste Teil: Ein passendes Programm schreiben.
Ich hatte die Wahl zwischen C und Assembler. Weil ich Assembler auf den ersten Blick nicht durchschaut habe, aber schoneinmal ein bischen was mit C gemacht hatte, fiel mir die Wahl nicht schwer. Weil das C für Atmel Microcontroller aber so seine Eigenheiten hat (WTF steuere ich die "Nippel" so an, dass Strom raus kommt, wenn ich es will?!) gilt ein riesiger Dank Mikrocontroller.net für die ausführlichen AVR-GCC-Tutorials.
8) Als C-IDE, habe ich Code::Blocks genutzt. Das geniale ist, dass es AVR-GCC unterstützt. Jedenfalls auf meinem Ubuntu. Dass Code::Blocks Open Source und damit Plattformunabhängig ist, hat sich ebenfalls als sehr nützlich herausgestellt.
9) Weil ich keine Lust hatte, mir die USB-Treiber des AVR-Programmers für Linux zu kompilieren, griff ich zu der Nr. 7 aus dem Hause Microsoft. Dank Dropbox wurden alle Programmteile die ich unter Linux geschrieben hatte kompfortabel sychronisiert und ich konnte fortfahren und zwischendurch testen.
10) Leider wollte Code::Blocks unter Windows den AVR-GCC-Compiler nicht finden, und weil ich mich nicht damit rumschlagen wollte lud ich mir AVR-Studio von Atmel, dem Hersteller des ATMega8 Microcontrollers, herunter. Nach einigen Stunden C schreiben, kompilieren, testen, stand das Grundgerüst, und nach weiteren Stunden die (hoffentlich) fehlerfreie Version des Programms und eine funktionierende Uhr (auf 24h geht sie keine Sekunde falsch... das genügt meinen Ansprüchen)
Jetzt bleibt mir nicht mehr zu sagen, als:
"Es gibt nur 10 Sorten Menschen: Die, die Binär verstehen, und die, die nicht."
Eine selbst gelötete und in C programmierte Uhr. Natürlich keine gewöhnliche mit einer einfallslosen 7-Segment-Anzeige, sondern mit 10 LEDs, die die Uhrzeit binär anzeigen.
Wer damit nichts anfangen kann: es sieht so aus:
Wer mir die Uhrzeit in die Kommentare schreibt, darf sich ab dann offiziell "moechtegerngeek" nennen ;)Für die Statistik: gebaut in 7 Tagen (letzten Freitag zu Löten angefangen und heute die 1,5V AA Batterien auf den Rücken gebunden (weil alle Knopfzellen im Haus leer sind xD))
Leider muss ich zugeben, dass ich nicht allein auf diese glorreiche Idee gekommen bin. Hier kommen also die "Credits".
1) Eines Tages lag eine Werbung im Briefkasten, wo (teure) Uhren mit dieser und ähnlichen Anzeigeformaten beworben wurde. Leider ist mir der Name des Herstellers entfallen.
2) Also ich im Internet dann nach einer passenden Uhr gesucht habe, bin ich auf ThinkGeek.com auf das Vorbild meiner Uhr gestoßen. Allerding waren mir 70$+23$ Versand zu teuer.
3) Der Wikipedia Artikel verstand unter einer Binäruhr etwas anderes, was mich an ein KDE 3 Applet erinnerte, was ich mal auf dem Suse, der seit 3 Jahren nicht mehr existiert (von dem Mainboard stammt die Knopfzellenhalterung, die auf der Uhr zu sehen ist :D), meines Vater gesehen hatte. Aber die Links am Ende des Artikels halfen mir weiter:
4+5+6) AVR Binäruhr & PIC Binäruhr: Diese beiden guten Seiten habe ich studiert, beschlossen, dass ich mir einen Lötkolben zulegen werde und die - meiner Meinung nach - besten Teile aus beiden Anleitungen herausgesucht, und Schaltungsprototypen mit Eagle entworfen.
6) Conrad hat mir dann die bestellten Teile: Lötkolben, ATMega8 Microcontroller, AVR-Programmer, LEDs, Widerstände, Quarzoszillator, Taster und Kabel recht schnell zugeschickt. Zugegeben: es ist wahrscheinlich teurer sich den ganzen Kram anzuschaffen, als sich einfach eine Uhr aus den USA kommen zu lassen. Aber man hat auch mehr Spaß dabei. Und so einen Lötkolben kann man bestimmt auch länger benutzen*g*
7) Nach erfolgreichem Löten, kam der anstrengenste Teil: Ein passendes Programm schreiben.
Ich hatte die Wahl zwischen C und Assembler. Weil ich Assembler auf den ersten Blick nicht durchschaut habe, aber schoneinmal ein bischen was mit C gemacht hatte, fiel mir die Wahl nicht schwer. Weil das C für Atmel Microcontroller aber so seine Eigenheiten hat (WTF steuere ich die "Nippel" so an, dass Strom raus kommt, wenn ich es will?!) gilt ein riesiger Dank Mikrocontroller.net für die ausführlichen AVR-GCC-Tutorials.
8) Als C-IDE, habe ich Code::Blocks genutzt. Das geniale ist, dass es AVR-GCC unterstützt. Jedenfalls auf meinem Ubuntu. Dass Code::Blocks Open Source und damit Plattformunabhängig ist, hat sich ebenfalls als sehr nützlich herausgestellt.
9) Weil ich keine Lust hatte, mir die USB-Treiber des AVR-Programmers für Linux zu kompilieren, griff ich zu der Nr. 7 aus dem Hause Microsoft. Dank Dropbox wurden alle Programmteile die ich unter Linux geschrieben hatte kompfortabel sychronisiert und ich konnte fortfahren und zwischendurch testen.
10) Leider wollte Code::Blocks unter Windows den AVR-GCC-Compiler nicht finden, und weil ich mich nicht damit rumschlagen wollte lud ich mir AVR-Studio von Atmel, dem Hersteller des ATMega8 Microcontrollers, herunter. Nach einigen Stunden C schreiben, kompilieren, testen, stand das Grundgerüst, und nach weiteren Stunden die (hoffentlich) fehlerfreie Version des Programms und eine funktionierende Uhr (auf 24h geht sie keine Sekunde falsch... das genügt meinen Ansprüchen)
Jetzt bleibt mir nicht mehr zu sagen, als:
"Es gibt nur 10 Sorten Menschen: Die, die Binär verstehen, und die, die nicht."
Abonnieren
Kommentare (Atom)



