Generell: wenn Du Dich mit dem Kram selbst beschäftigen willst, bin zumindest ich bereit, ab und zu mal was dazu zu sagen - wenn Du so'n anderes Projekt nur nachbauen willst kannst Du das gern tun, wirst hier auch sicher ein paar Kritikpunkte oder Tips erhalten, aber in C-Code arbeite ich mich nicht ein, und wenn Du ein fertiges Programm übernimmst, muß auch die Schaltung so übernommen werden (manchmal könnte vielleicht der sourcecode amgepaßt werden, aber...)
nochmal zu 1: ist nicht ganz so. Stellen wir uns den Würfel mal so vor, daß jeder Transistor eine Ebene nach Gnd zieht, und jede Säule durch einen µC-Pin versorgt werden kann. Dann würde der Ablauf so sein: alle Transistoren sperren (entsprechender Pin ist low)->dann Muster der nächsten Ebene durch high an den Säulenpins -> den entsprechenden Transistor (einen!!) durchschalten
Über einen timer kannst Du das ganze dann durch die Ebenen schalten lassen. Dadurch hast Du ein statisches (3D)-Bild. Wenn da noch irgendwelche Veränderungen/Animationen oder so rein sollen, müssen die in den 3 Ebenenmustern umgesetzt werden. Wobei 9bits in einer Ebene doof sind...
2: Du wirst den sicher Sockeln wollen (dann könnte man auch später noch extern flashen)
3: Wenn Du die ISP (SPI)-Pins in der Schaltung auch anderweitig verwendest, mußt Du beachten, daß einerseits die Pins beim Programmieren tanzen (also an den 3 Pins würden zeitweise hi-Pegel anliegen) -> könnte also unerwünschte Effekte auf den Rest der Schaltung haben, und andererseits könnte die Schaltung die Kommunikation stören (zB wenn der Programmer die entsprechenden Pegel nicht mehr sauber erzeugen kann, weil die Schaltung den grad woanders hin zieht, klar?
Das sind keine generellen Probleme, man muß halt nur drauf achten (bei Deiner Schaltung sollten zB die Transistoren Pulldowns an der Basis bekommen, damit die sicher Sperren, wen der µC-Pin Tristate ist (Reset)).
4.:
Ich würde den 88 nehmen. Ein 8 macht das auch. Aber wenn man den sockelt kann man den auch wiederverwenden, für anspruchsvollere (insbes. HardWare) Dinge. Und die paar Cent... Ausserdem hab ich mir mal das DB des 88 ausgedruckt (bin halt ein Haptiker) - bei ~350 Seiten brauch ich das nicht nochmal... Aber Du kannst natürlich gern beim 8er bleiben...
6.: Ordentlich ist das natürlich mit Pullup, und der Pin selbst muß auch mit auf den ISP-Header
7.: Die µC-Pins können 4 Zustände annehmen. Als "Eingang" kann er entweder dermaßen hochohmig sein, daß er für die restliche schaltung quasi nicht existent ist ("offfen"/n.c.), oder über einen Pullup (ca 50KOhm oder so) "hochgezogen" (dann kann man da zwar 'n high-Pegel messen, aber der läßt sich auch einfach extern "runterziehen"). Als Ausgang (und das ist das, was Dich interessiert), kann er einen hi- oder lo-Pegel annehmen, und dabei (mit Einschränkungen) max. 20mA liefern oder schlucken.
Und wie kommt er auf diese Pegel? Indem er eben im µC auf Vcc oder Gnd geschaltet wird. Und PC3..PC0 werden halt auf AVcc oder AGnd geschaltet, wenn da also nix angeschlossen ist, kann auch an den Pins nix anliegen, klar?
Warum haben die 'ne seperate Versorgung? Weil der Controller an diesen Pins eben auch analoge Spannungen messen kann. Und in diesem Falle sollte dort die Spannung gefiltert werden (aber das is'n anderes Thema.
9.: paßt nicht zu meiner Aussage - der µC hat'n internen 8Mhz Oszillator für den Takt, man kann ihn aber auch mit 'ner externen Taktquelle versehen, max 20MHz beim Mega88. Der Quarz muß zwischen B6 und B7.
10.:
UART ist eine serielle Kommunikationsschnittstelle, die im µC in Hardware zur Verfügung steht. Damit kann man dann einfach bytes zwischen µCs bzw µC und PC austauschen. Und weil der Mega das in Hardware hat, muß man sich nicht weiter um die umsetzung kümmern, sondern kann salopp gesagt ein Byte einfach "in den UART packen" oder da rausholen.
13.: war Quatsch, hatte ja oben schon was zu geschrieben -> dementsprechend würde ich mich bei der Pinbelegung noch nicht festlegen.
17.: Welches "Gerät" willst Du zum "brennen" verwenden, also welchen Programmer
Und nochmal allgemeines: Wenn Du Dich jetzt wirklich mit Mikrocontrollern beschäftigen willst (nicht nur als Nachbau von irgendwas), solltest Du erstmal mit was einfachem anfangen. (Breadboard, LEDs und so) Und das Cube-Projekt im Kopf behalten, das kommt dann schon noch.
Ansonsten braucht man eigentlich bei jedem Projekt das Datenblatt des verwendeten Controllers (
Mega88) - solltest Du vielleicht ruhig ein paar mal durchgehen, auch wenn Du nicht (gleich) alles verstehen solltest. Fördert das allgemeine Verständnis von Mikrocontrollern ungemein.
Und dann kommts natürlich auch auf die Lieblings-Programmiersprache an. Meiner Meinung nach sollte das möglichst maschinennah erfolgen -> Assembler
Ein hervorragendes Tutorial (auch vom Stil her) dazu ist mMn
dieses hier, was man sich ruhig mal in der Badewanne oder so durchlesen kann - lernt man viel über die Hardware
Wenn man AVR-Assembler programmiert, ist
dies hier natürlich unverzichtbar...
BTT wären Schieberegister (serielle portexpander) eigentlich auch einen Blick wert.
Der hier hat 16 Outputs, und ist kaskadierbar. Ansteuerung über SPI. (Und das is'n SOIC-24 mit 1.27mm Pinabstand...)
So, nun aber Sorry, für das viele OT