Seth MacFarlane s Cavalcade of Cartoon Comedy

September 12th, 2008

Mein persönlicher Held Seth MacFarlane hat ein
neues Projekt “Yeeeeeeeeeeeah Boyyyyyyyyyy”

aaaaaw yeeeeaah

*freu*
gibt s auch hier und hier

Levelhead

September 12th, 2008

Im Zeitalter von neuen “Eingabegeräten” wie z.B
Nintendo Wii gehört dieses zu den Eindrucksvollsten!

Klasse Spielprinzip in dem der Akteur mit der Virtuellen
Welt verschmilzt…


levelHead v1.0, 3 cube speed-run (spoiler!) from Julian Oliver on Vimeo.

und hier die obligatorische Homepage

Der Erfinder arbeitet übrigens auch an einem 2rd Person Shooter..
Mehr dazu hier und hier mit demo

Die Lampe

September 12th, 2008

hmm?

hmmmmm?

hmmmmmmmmm?

aaaaaaaaaaaaaaaaaaah!

Super Einfall von 100%
100per.com

Nasen Gel Spender

September 12th, 2008

Wie ein tolles Design doch alles verbessern kann…

gibt s hier … und will haben!!!

Parallax Propeller

September 12th, 2008

Der Propeller Chip
Was ist das? Und was kann das?
Ersteinmal: Ich beschreibe hier einen Microcontroller..
Das heißt ich werde ein bisschen technisch..
Vieleicht kann ich ja das eine oder andere Interesse wecken,
deswegen beschreibe versuche ich zu beschreiben wie ein paar
Grundsachen funktionieren…
Dieser Artikel richtet sich an alle die wenigstens die Grundkenntnisse
von Elektronik und Microcontrollern beherrschen.
Alle anderen dürfen getrost weiterscrollen oder sich ihren Youtube
oder Snotr Vids widmen…

Warum schreibe ich hier über einen Microcontroller wenn es hier doch
sonst nur um Games, Fun, Gizmos und Designs geht…
Ganz einfach: Dieser Chip wurde von nur einem Menschen entwickelt,
designt und so weiter.. Für das Layout wurde zwar noch ein Ingenieur
hinzugezogen, aber trozdem ist das doch sehr eindrucksvoll.
Außerdem ist dieser Chip ziemlich ungewöhnlich..
aber dazu später mehr..

“später ist jetzt”

Ersteinmal: dieses PDF herunterladen und
ausdrucken oder auf eueren Zweitmonitor ziehen oder sowas…

Sooo FamilyGuy aus und Musik an.. jetzt muss ich mich konzentrieren…

Der Propeller Chip besteht im Grunde aus einem “Hub” und 8 “Cogs”.
Ein Cog ist hier im Grunde ein eigenständiger 32bit Microcontroller.
Jeder Cog besitzt 2k Ram und hat 2 Timer/Counter, wobei ein Timer mit
dem Video Generator verbunden ist. Jeder Cog hat Zugriff auf die
I/O Pins (Ein- und Ausgänge) sowie den Daten und Adressbus.
Mit ein paar Tricks kann jeder Cog auch auf die 32k Hauptspeicher zugreifen.

Der Hub ist die Kontrolleinheit und steuert den Hauptspeicher.
Er ist außerdem für die Kommunikation zwischen den Cogs und die
Systemclock zuständig. Über den Hub können beliebig die Cogs
aktiviert und deaktiviert werden. Wenn ein Cog inaktiv ist so zieht
er auch keinen Strom.

Auf dem PDF ist der Hub recht anschaulich dargestellt.
Er rotiert quasi zwischen den einzelnen Cogs und versorgt sie mit dem
nötigsten. Eine Umrundung dauert 16 clock zyklen.

Geschwindigkeit:
Der Propeller kann mit bis zu 80 MHz betrieben werden.
4 - 8 MHz Quartz & integrierte PLL. Dann rechnen wir mal..
80 Mhz -> eine Hub “Unrundung” dauert 16 zyklen:
1 / 80 000 000 Hz * 16 = 0,0000002 s = 200ns
(nanosekunden = 0,2 millionstel Sekunden)..
das ist schon recht schnell wenn man bedenkt dass die Cogs auch
auf 80 MHz (80 millionen “Schläge” pro Sekunde) laufen.
Rein rechnerisch kommt der Chip wenn alle 8 Cogs
aktiviert sind auf 160MIPS (Millionen Instruktionen pro Sekunde).

Das heißt der Chip kann theoretisch 160 Millionen Befehle pro Sekunde
ausführen. Oder anders gesagt er kann rein rechnerisch
8 mal 20 Millionen Befehle pro sekunde parallel ausführen.
Und da wird die ganze Sache interessant.

Ein “normaler” Microcontrollrer wir der AVR, ARM, PIC etc. hat einen
“Kern” dieser kann immer nur einen Befehl auf einmal ausführen.
Wenn man diesen Chip nun an ein Display, einen USB Port und
eine Eingabeschnittstelle anschließt, dann muss man diese
Peripherie immer nach einander abarbeiten.
Oft benutzt man deswegen so genannte Interrupts.
Ein Interrupt hält das laufende Programm an und führt ein
Unterprogramm aus. Dies ist für zeitkritische Funktionen notwendig.
Zum Beispiel USB. Wenn man zwei USB Geräte miteinander verbindet,
so tauschen sie als erstes grundlegende Informationen aus.

Das sieht dann ungefähr so aus:
“Wer bist du?”…”Ich bin ein Speicherstick!”
“Was möchtest du machen?”…”Ich möchte Dateien von dir kopieren!”
“Brauche ich dafür einen Treiber?”..”Na klar!”
etc etc.

Dafür gibt es fest vorgeschriebene Zeitfenster. Diese sind mitunter
sehr kurz. Wenn ich nun also gerade Daten an mein Display sende
und während dieser Zeit das USB Kabel angeschlossen wird kann ohne
Interrupts nun folgendes passieren:

“Wer bist du?” “…….”
“Hallo?” “…..”
“Ey was soll das.. du wurdest doch gerade angeschlossen!” “…..”
“Pft.. so ein Arsch.. auf den reagiere ich nicht mehr!” “…..”
“…..” “So jetzt bin ich da..Hallo?..hmm..Mist zu Spät”

Und dann sind beide Teilnehmer so beleidigt, dass sie ersteinmal nicht
mehr miteinander sprechen. Und der Benutzer guckt in die Röhre.

Was ist passiert? Nun der Chip war so beschäftigt das Display mit
Tittenbildern Zeichen zu füllen,
dass er die USB Anforderung nicht rechtzeitig abarbeiten konnte.

Ein Interrupt kann durch ein vom Hauptprogramm unabhängiges
Ereignis ausgelöst werden (z.B USB Kabel wird angeschlossen)
und führt dann direkt die dazugehörige Routine aus.
Was nun wenn mehrere Interrputs gleichzeitig ausgelöst werden?
Dann wird das Ganze ein bisschen komplizierter…
Ich höre hier jetzt erstmal damit auf um nicht noch weiter ins
Detail zu gehen. Nur eins: Auch mehrere Interrupts gleichzeitig
sind auf einem “EinKernChip” relativ einfach zu bewältigen…
Aber es geht auch anders:

Wie bereits gesagt besitzt der Parallax Propeller gleich 8 quasi
eigenständige Microcontroller (Cogs) die unabhängig voneinander
laufen und alle gleichzeitig Zugriff auf die I/O Pins haben.

Jetzt kann man also einen Cog dafür verantwortlich machen
die USB Schnittstelle im Auge zu behalten. Ein anderer soll
das Display abarbeiten und wiederum ein Weiterer soll
die Eingabegeräte steuern. Hmm nicht schlecht..
geht ja alles auf einmal.. cool…

Programmierung und Details:
na? immer noch nicht genug? Hier gehts weiter:

Um die Programmierung zu verstehen muss man ersteinmal
begreifen was passiert wenn man diesen Chip nun einschaltet.

Der Propeller Chip besitzt auch ein ROM (Read only memory),
von hier können nur Daten gelesen, aber nicht geschrieben werden.
Von diesem ROM wird nach dem Einschalten ein so gennanter
Bootloader in den RAM der ersten Cogs geladen. Dieser Bootloader
sucht nach der Programmierschnittstelle. Falls keine angeschlossen ist
schaut er auch einmal bei dem EEprom (das ist ein Programmierbarer
Festspeicher) [wikipedia ist dein Freund] vorbei und schaut nach ob
er dort sein Programm laden kann… denn der Propeller besitzt keinen
Flash/EEprom Speicher.. also entweder man lädt sein Programm in den
RAM (dann ist es nach dem Ausschalten wieder weg) oder man
schreibt es in ein externes EEprom (dann ist es permanent da).

Also der Bootloader hat jetzt zum Beispiel ein ausführbares Programm
im EEprom gefunden. Jetzt startet er den so gennanten
SPIN Interpreter (welcher auch im ROM sitzt)…

So und jetzt sind wir beim leidigen Thema Programmiersprachen…
Und das ist leider ein Knackpunkt beim Propeller Chip..

Normalerweise kann der Chip mit zwei Programmiersprachen
programmiert werden. Diese wären “SPIN” und “PASM”.

SPIN ist eine interpreter Sprache, dass heißt sie wird während der
Laufzeit in eine für den Chip verständliche Sprache umgewandelt…
und das braucht seine Zeit! Sie ist zwar wirklich leicht zu handeln
(ein geübter Programmierer wird ungefähr 1 1/2 Stunden brauchen um
richtig loslegen zu können) aber sie ist verdammt langsam und dann
bringen die 160 MIPS auch nicht mehr viel, denn die meiste Zeit geht
für das Übersetzten drauf… Und das ist verdammt schade..

PASM ist eine Assembler Sprache, man Programmiert den Chip in
einer Sprache die der Chip zwar direkt versteht
(man spricht quasi Maschinensprache), welche allerdings für den
Menschen ein bisschen schwieriger ist.
Es ist wahnsinnig umständlich in dieser Sprache komplexe Programme
zu schreiben. Irgendwann denkt man dann nur noch in Anweisungen
und später dann nur noch in Nullen und Einsen.
Dafür ist diese Sprache allerdings sehr schnell.
Für einen “normalen” Befehl (dazu später mehr)
braucht der Chip 4 Taktzyklen.

Und nochmal rechnen:
80 MHz -> 1 / 80 000 000 Hz * 4 = 0,00000005 sekunden
Also braucht der Chip für einen Befehl 50ns das sind
0,05 millionstel Sekunden. Das ist ein paar hundert mal schneller als
ein in SPIN programmierter Befehl…

Für jedes Programm sind allerdings mindestens 2 Zeilen SPIN
notwendig, da man in dieser Sprache die einzelnen Cogs startet.

Jetzt kann man losprogrammieren. Wenn man sein Programm fertig
geschrieben und in das EEprom gepackt hat kanns los gehen.

Start -> Bootloader -> kopieren des Programms in den RAM ->
starten des Interpreters -> kopieren von Code in die Einzelnen Cogs
und ausführen..

Tja.. klingt alles schonmal ganz gut…

Aber jetzt kommen die Probleme:
Was passiert wenn mein Programm welches gerade von einem Cog
ausgeführt wird mehr als 2k (soviel hatte ja ein Cog) Platz benötigt?
Dann muss er Daten mit dem HUB austauschen.
Wie bereits beschrieben rotiert der HUB zwischen den einzelnen Cogs.
Wenn ich nun also mit dem HUB kommunizieren möchte muss ich
warten bis er bei mir ist.
Jenachdem (wird das echt zusammen geschrieben?) wo sich der HUB
nun gerade befindet ist die Wartezeit nun unterschiedlich.
Wenn man nun also einen Synthesizer programmieren will
(das ist ein Tonerzeiger), welcher auf den Hauptspeicher zugreifen
muss, dann wird man feststellen das der Ton der dann später zu hören
ist leiert. (n bissel nachdenken und dann versteht man warum)…

Desweiteren hat die Programmierung des Chips doch viele Eigenheiten
über die man stolpern kann..
(gerade in der Assembler Programmierung)
Aber da möchte ich jetzt nicht weiter drauf eingehen…

Soviel nun dazu..
Aber jetzt zu ein paar erfreulicheren Dingen:

Der Propeller Chip hat ein extra Video Modul. Dies erlaubt es mit sehr
wenigen externen Bauteilen eine VGA Schnittstelle oder einen
Fernseher anzusteuern. Auch Audiosignale lassen sich recht einfach
einlesen und ausgeben (perfekt für die Spieleprogrammierung)..
und dafür gibt es sogar ein spezielles Board.
Das Hydra Gamedevelopment System.
Dies ist extra für die Homebrew Spieleentwicklung gemacht.

Hier mal ein Demovideo:

Desweiteren gibt es ein Object Exchange System. Ein Objekt ist bei
dem Propeller Chip ein Programm welches man in einen Cog laden und
dann recht einfach über Programmschnittstellen ansprechen kann.
Zum Beispiel gibt es schon fertige TV/VGA Objekte mit denen man ganz
einfach Text, Schaltflächen und Polygongrafiken auf einen Bildschirm
bringen kann..

Fazit:
Der Parallax Propeller Chip ist ein sehr interessanter Microcontroller.
Dank der 8 einzelnen Controller ist er (in PASM) geschrieben recht
schnell. Es gibt asfaik keinen vergleichbaren Controller mit dem man 8
Programme parallel ausführen kann…

Einfach Tastatur, Maus und Monitor anschließen, Objekte draufladen,
kleines Programm schreiben und ruck zuck hat man ein schönes GUI.

Es gibt neuerdings die Möglichkeit diesen Chip auch in C zu
programmieren, aber ich habe mich weder damit beschäftigt,
noch habe ich das Geld mir das Programm zu kaufen (199 €) ..
die Tools für SPIN und PASM gibt es übrigens kostenlos.
Desweiteren gibt es auch einen Java interpreter.

Es ist ein tolles Spielzeug und abgesehen von ein paar
unzulänglichkeiten ein toller ernst zu nehmender Microcontroller.

Eine zweite Version ist in der Mache mit 16! Cogs..
Ich hoffe dass es dann auch Hardwareschnittstellen
wie SPI, U(S)ART, I²C, CAN… geben wird.
Denn bis dato muss man diese Softwaremäßig realisieren..
Und das ist ätzend! Auch einen besseren Zugriff auf
den Hauptspeicher, welcher dann auch hoffentlich üpppiger
ausfällt wäre wünschenswert.

Auch eine vernünftige Hochsprache (C, C++ oder sowas) welche
kostenlos zu beziehen ist wäre sehr schön.. Mal schauen..
bis jetzt ist es eher was für spezielle Anwendungen als Co-Prozessor
oder als Hobbyspielzeug.. Aber vieleicht wird er ja in der zweiten
(oder dritten) Version eine echte Alternative zu den
Mainstream Microcontrollern.. Ich bin jedenfalls gespannt..

Hier jetzt mal die Specs zusammengefasst:

-32Bit RISC Prozessor
-32k Rom
-32k Ram
-8 Prozessoren (Cogs) mit jeweils 20 MIPS
-32bit I/O Port
-1 system clock
-8 semaphores

Pro Cog:
- 2k static RAM
- 2 timer/counter
- 1 Video Prozessor

Das macht
-160 x 32-bit MIPS
-48k static RAM
-16 x 32bit timer/counter
-8 fold video logic

Das ganze in einem 40pin DIP (gut für Lötunerfahrene),
44-pin LQFP oder 44-pin QFN (schön klein) Gehäuse für
umgerechnet 15 Euronen…

Homepage

und hier nochmal ein geeky Video “neeeeeeeeeeeeeerd!!!!”

Ich hoffe das war nicht zuviel aber vieleicht hat es ja sogar den einen
oder anderen interessiert.. wenn nicht…
tja haste halt deine Zeit verschwendet

Aber so sieht mein Arbeitsalltag aus…
(wir benutzen ihn als Co-Prozessor für VGA Ausgaben)

The internet is expanding

April 18th, 2008

.. habt ihr euch auch immer gefragt woher diese nerfigen lustigen Töne vom Dial-Up Modem gekommen sind?
Hier ist die Antwort:

hahahahaha sehr gut

Where On (Google) Earth Is Waldo???

April 11th, 2008

Web 2.0 here we come…
“Jetzt lasst uns mal richtig ‘Wo ist Waldo?’ im Computerzeitalter ausprobieren…” dachten sich wohl die Köpfe hinter diesem Projekt.
Also was macht man? Man baut sich einen 15m Waldo und legt ihn auf ein Dach… Dann einfach nur warten bis ein Google Satellit vorbeirauscht und fertig.. Das schöne ist: jeder kann mitmachen… Also los auf in den Bastelkeller und einen Riesenwaldo machen…

Dann braucht man nur noch genügend Leute die sich auch die Mühe machen ihn zu finden googeln suchen

Thx Google Earth…

Es gibt dazu auch schon einen Blog auf dem das Projekt beschrieben ist… wo? na hier…

Das balancierende Bücherregal

April 11th, 2008

Nicht genung Nervenkitzel im Alltag? Wie wärs damit:
Das balancierende Bücherregal vom Designer Denis Oh.
Ordnung halten ist zwar kein muss.. aber es erleichtert die Sache mit den Büchern doch sehr…
Unter dem Regal müssen Gewichte (z.B. Bilder) verschoben werden um die Regalbalance wieder herzustellen..
Aber lassen wir die Bilder sprechen…





Super Schach

April 11th, 2008

Meignorant hat eine neue Schach Variation auf den Markt geworfen…
Und die ist doch ‘n bissel interessanter als das old school Schach…
Man spielt zu dritt auf einem auf dem ersten blick gewöhnungsbedürftigen Spielbrett… Der Name: “3-way chess” passt da doch ganz gut.. sehr einfallsreich
Ich warte jetzt schon auf das 6-Way Schach.. trotz meiner doch bekannten Abneigung gegen Gesellschaftsspiele würde es mich doch extrem reizen so ein Schach mal gegen Freunde und Bekannte zu Spielen…

und? wer hats und will mich mal einladen???

pixeloo

April 11th, 2008

hahahaha…
Wie unsere Cartoon Helden im real life aussehen würden zeigt uns pixeloo. Sehr gut gemacht.. aber n’bissel creepy..*brrrrr*
Mario

und Homer Simpson