Hallo Leute! Ich habe hier gerade wieder mal ein kleines Problem mit den verfügbaren Ports an meinen AVRs. Ich muss insgesammt 278 Digitale Ausgänge mit nem AVR ansteuern. Matrix ist nicht möglich. Auf der suche nach geeigneten Porterweiterungen habe ich einiges gefunden, aber nichts davon ist so wirklich perfekt, .... Wer kennt da noch möglichkeiten?
Was hast Du denn gefunden und warum passt es denn nicht? Ansonsten: Schieberegister.
>aber nichts davon ist so wirklich perfekt, ....
Manchmal muss man eben Abstriche machen.
Wie Karl Heinz schon meinte:
Sag uns einfach deine Ideen/Suchergebnisse und versuche die Pros und
Cons abzuwägen.
MFG
Kai
Wahrscheinlich ists zu langsam die Bits seriell raus zu schieben :-) Evtl kannst ein 74HC573 Latch nehmen, da kannst dann an PortA-PortC jeweils 15 Stück dran hängen (macht insg. 45 * 8 = 360 Ports) und an PortD einen 74HC154 4 to 16 Line-Decoder mit dem du die einzelnen Gruppen der Latches dann ansteuerst. Die Daten gibst dann so aus: char data[15*3]; char i; for (i = 1; i <= 15; i++) { PORTA=data[ 3*i + 0]; // Daten anlegen PORTB=data[ 3*i + 1]; PORTC=data[ 3*i + 2]; PORTD=i; // Strobe-Impuls auf die Latch-Gruppe anlegen PORTD=0; // das war der Impuls (evtl noch ein Dela davor setzen) } grob geschätzt wird das ca 200 CPU-Cycles verbrauchen (bei 360 Outputs). Gruß Roland }
> for (i = 1; i <= 15; i++)
Und der naechste der wieder mal den gleichen Fehler macht.
In C wird bei 0 zu zaehlen angefangen!
Gewoehnt Euch an, dass eine Schleife die ueber ein Array laeuft
immer so aussieht:
for( i = 0; i < MAXSIZE; i++ )
(MAXSIZE muss natuerlich angepasst werden. Ansonsten:
* bei 0 zu zaehlen anfangen.
* < , nicht <=
Alles andere führt unweigerlich immer wieder zu Fehlern.
(wie in diesem Fall: 3 * 15 + 0 -> Indexnummer hinter den Array:
Das Array ist definiert zu:
char data[15*3]
hat also 45 Elemente. D.h. der Index des letzten definierten
Elements ist 44! ).
@123456789 987654321 (MiA) "Auf der suche nach geeigneten Porterweiterungen habe ich einiges gefunden, aber nichts davon ist so wirklich perfekt, .... Wer kennt da noch möglichkeiten?" Mal ganz ernsthaft gefragt: Wie soll man deine Frage beantworten könenn, wenn du nicht schreibst welche Lösungsansätze du bisher kennen gelernt hast und für nicht so gut befindest? PS: vielleicht sollte man vor dem Abschickken des "Submit" Knopfes den Beitrag noch mal durchlesen, und sich selbst fragen ob den auch jeder versteht und sinnhaft drauf antworten kann ...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.