Proterweiterungen f. AVR

OP #321667
Lesenswert?

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?
#321670
Lesenswert?

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
}
#321671
Lesenswert?

> 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! ).
Gast #321672
Lesenswert?

@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 ...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren