Also den Propeller Chip bekommst Du so für ~9€ als DIL 40 Pinner.
Den Chip kann man mit internen oder externen Takt betreiben und einem wählbaren Multiplikator.
z.B. ext. 5 MHz. Quarz X 16 = 80 MHz. das ganze bei 3.2V.
Die aktuellste IDE zur Spin-Programmierung gibt es kostenlos von Parallax.
Spin ist eine sehr einfache OOP Sprache das Teil ist so genial das man es mit keiner anderen mir bekannten Sprache vergleichen kann.
(Und ich kenne ca. 10 sehr gut)
Selbst wenn man den OOP "Kram" weg lassen würde (was für ein Verbrechen) kann dar kein BASIC Dialekt mithalten.
Keine Ahnung warum Spin "noch" nicht als PC Programmiersprache portiert wurde.
Jeder der 8 parallel laufenden CPU Kerne hat direkten Zugriff auf 512 32bit Worte also 2KB "very" highspeed memory.
Zusätzlich teilen sich die 8 Cores weitere 32KB Hub Memory.
Da der Spin-Code auch das etwas langsammerer HUB Memory benutzt ist es nicht die schnellste Lösung.
Zeitkritische "Sachen" kann man aber direkt mit Inlineassembler mitten im Spincode umsetzen oder man benutzt diverse C Kompiler.
Programe werden über RS232 oder USB Adapter in ein 2 Wire EEPROM (32K) übertragen.
Nach einem Reset bzw. anlegen der Versorgunspannung laden die 8 Cores Ihren code aus dem EEPROM
und rennen wie die Hölle los.
Natürlich kann man auch beliebigen Code von z.B. einer SD Karte laden.
Die Teile sind so unglaublich schnell das man allein mit 2 Cores VIDEO/TV und VGA Signale in Echtzeit generieren kann.
(Also die Frage nach einem Display stellt sich eigentlich nur bei einer mobilen Applikation)
Mit einen weiteren Core hast Du z.B. PS/2 Keyboard und Mouse ein weiterer Core könnte highquality Sterosound produzieren.
Selbst Dann mit Video/VGA/PS2/SOUND hast Du noch 4 weitere Cores die noch nichts zu tun haben.
Bei diesen neuartigem parallelen Hardware Design für Mikrocontroller muss man etwas umdenken
wenn man z.B. vorher "nur" mit AVR's oder PIC's zu tun hatte.
Z.B. es gibt
keine Harware Interrupts !
Die Lösung ist ganz einfach, man nimmt z.B. einen der 8 Cores und legt Ihn Schlafen
dann weckt ein laufender Core z.B. mit dem Hauptprogramm diesen einen schlafenden
in regelmäßigen Abständen also einer beliebigen wählbaren Frequenz per software.
Der "aufgeweckte" Core schaut dann einfach ob sich ein Signal der maximal 32 I/O Pins geändert hat
und führt dann beliebige Aktionen durch oder legt sich direkt wieder "Pennen".
Das eröffnet völlig neue arten von Software "Interrupts" weil man ja nicht nur
auf fallende oder steigende Flanken reagieren kann sondern auf beliebige Bitmuster
oder komplexe selbst definierte (Trigger-) Regeln.
Man kann auch ganz einfach in einer Endlosschleife ständig max. 32 I/O Pins einlesen
und via RS232 bzw. USB an den PC übertragen.
Oder man sampelt die Signale auf eine SD Karte
Oder man erzeugt direkt ein Bild in "Echtzeit" auf einen angeschlossenen Monitor via VGA oder auf ein TV ganz nach belieben.
Oder alles zusammen USB/RS232 zum PC, auf SD-Karte und TV oder VGA.
Dazu hat man letztendlich 8 parallele CPU Kerne.
Oder, Oder, Oder ...
Was auch noch sehr schön ist ...
das ist die Tatsache das sehr viele die ein fertiges Modul Programmiert haben dieses kostenlos zur Verfügung stellen.
Daher die Bibliothek an Open Source wägst ständig.
"EinBlick" lohnt sich.
http://obex.parallax.com
Da dieser Chip ein echtes Multitalent ist kann man auch eine ganz andere Sichtweise anwenden.
Man stelle sich vor man hat ein IC mit 32 I/O Pins aber ohne jegliche Funktion
und nur die Software bzw. die Fähigkeit des Programmierers stellt eine Grenze dar.
Man kann z.B. aus dem Chip einen C64 Videochip machen oder den bekannten SID II emulieren.
Oder wie wäre es mit einem ATMEL AVR ATMEGA ATTINY Emulator
Hier mal mein erster Prototype auf Steckbrett inkl. SD-Card und VGA "gebrutzel"
Hier mit USB Chip-Interface (1€ eBay Handy Datenkabel) so ein USB Chip z.B. von FTDI kostet allein schon 3-4€ für privat Personen.
Hier mein erstes Siemens LS020 Handy Display am Propeller als kurzes Video:
http://www.youtube.com/watch?v=bk-G_ibKO4I
(Dabei geht es nicht um das Display selbst sondern um schnelles SPI via software)
Da ich ich ja ein bekannter Coder-Junky bin benutze ich gleich 3 Propeller Chips und quäle somit 24 Cores mit 80MHz.
(Das sind dann wieviel MHz. insgesamt ? genau so viel
)
Stereo Sound, 1 MB (2x512KB) extra Speicher, TV, VGA, 2 x PS2, SD-Card natürlich mit TCP/IP Netzwerk und PC Anschluss.
Hier mal die Lötorgie bzw. die Bestückung als Video inkl. Füße unterm Tisch
guckst du hier
Wie man sieht ist das eine prof. gefertigte Platine aus dem
HiVe Projekt
schön mit Lötstopmaske, Bestückungsdruck und alles schön gebohrt.
Das ist zwar recht prima aber auf Dauer für künftige eigene geistige Ergüsse mir aber auch zu teuer.
Daher mein gebastelter UV Belichter und die Absicht künftig selbst Platinen Ätzen zu können.
So erst einmal genug Werbung für den Propeller Chip gemacht.
Ich sollte Parallax mal Fragen wegen einer Umsatzbeteiligung
so ein "Milli-önchen" € pro Jahr als Tachengeld wäre nicht das Übelste.
Grüße Joshy
EDIT:
Eines der wichtigsten Neuerungen gegenüber herkömmlichen MC's hatte ich nichtmal erwähnt.
Die 512 32Bit Worte (2KB) high speed "Speicher" sind zu gleich Register
oder es gibt überhaupt keine Register mehr jede Speicherzelle ist eins.
Ich weiß das hört sich ziemlich merkwürdig an ist es aber auch.
AVR'ler oder PIC'aner könnte man erzählen "Leute es gibt kein SRAM mehr aber dafür bekommt Ihr 512 "gleichwertige" Register"
Elektronik-Ingenieuren würde man erzählen "Verabschieden Sie sich von den Ihnen bekannten Registern es gibt nur noch Highspeed
Zellen"
Es sind keine Register weil ja auch ausführbarer Code an der Stelle stehen kann (und Code wird nie in Registern ausgeführt)
es ist aber nicht nur einfacher Speicher weil man mit den Inhalten direkt z.B. Rechnen kann.
(So ähnlich wie herkömliche Register die direkt mit der ALU "verdrahtet" sind).
Da es keine herkömmlichen Register sind und wesentlich mehr als "normaler" Speicher nenne ich diese "Dinger" einfach Zellen.
REGORY wäre auch eine schöne Kunstbezeichnung ein Zwitter zwischen
Register und Mem
ory
Die Merkwürdigkeiten gehen aber noch viel weiter.
Nicht nur Interrupts und Register gibt es nicht mehr sondern auch keinen Stackpointer. (wäre ja auch 'nur' ein Register).
Und da wo es keinen Stack gibt z.B. für Rücksprungaddressen da gibt es auch kein RETURN Befehl mehr (oder z.B. PUSH und POP).
Wie kann dann aber eine Funktion bzw. Methode wieder zur alten Stelle "hüpfen" ohne sich die alte Adresse zuvor gemerkt zu haben ?
Liebe Kinder,
dieses und noch viele weitere spannende Abenteuer aus dem Propeller Universum
erzähle ich euch ein anderes mal.