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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.