Forum: Mikrocontroller und Digitale Elektronik 2 AVR's verbunden, wie ansteuern?


von Lokus P. (derschatten)


Angehängte Dateien:

Lesenswert?

Ich habe hier eine Schaltung die aus 2 AVR's besteht die mit 3 Leitungen 
miteinander verbunden sind.
Der erste AVR dient zum einlesen der Verzeichnisses der SD-karte und der 
zweite nur für die Ausgabe am LCD.

Die Hardware bestand ursprünglich nur aus dem ersten AVR.
Der zweite kam erst später hinzu, da sich einige die mühe gemacht hatten 
dafür eine LCD-Ausgabe zu entwickeln.

Ich möchte gerne das LCD-Menü erweitern, was prinzipel kein problem 
darstellt.
Jedoch liegt der Code des Menüs am ersten AVR der dann die Ausgabe auf 
den zweiten weiterleitet.

Der zusätzliche Menüpunkt soll die Ausgänge des Display-AVR ansprechen.

Wie macht man das? Wie kann man vom ersten AVR die Ausgänge des zweiten 
ansprechen?

von xelarep (Gast)


Lesenswert?

Mal ne blöde Frage, wiese sind die SDA/SCL nicht verbunden, dann 
könntest Du das alles über Hardware TWI machen?!

Beim Zweiten Mega32 hängen am TWI zwei LEDs die könnten doch auch 
woanders hin?

xelarep

von Jan P. (kijan)


Lesenswert?

Hallo,

Die Ausgänge des zweiten kannst du nicht direkt ansprechen. Du hast die 
Controller ja über I2C verbunden, also könntest du dem 2. Controller 
über I2C Kommandos schicken, die der dann per Software auswertet und 
entsprechende Pins schaltet. Was besseres fällt mir dazu auch nicht ein 
im Moment.

Warum willlst du das denn überhaupt so umständlich machen und lässt 
nicht den Display-AVR alles machen?

Übrigens fehlen die I2C Pullups wenn ich mich nich irre? Hab zumindest 
keine gesehen und ich meine mal gelesen zu haben, dass das mit den 
internen des AVR nicht geht, kann aber sein dass ich da falsch liege.


//edit:
Verdammt zu spät und dann auch noch mist geschrieben, hatte den 
Schaltplan nur kurz überflogen und dachte die hängen über I2C 
aneinander. Dann geht das ganze natürlich nicht so :(

von Lokus P. (derschatten)


Lesenswert?

xelarep schrieb:
> Mal ne blöde Frage, wiese sind die SDA/SCL nicht verbunden, dann
>
> könntest Du das alles über Hardware TWI machen?!

Das kann ich dir jetzt so nicht beantworten. Die Schaltung stammt nicht 
von mir. Ich habe sie nur ein wenig erweitert.
Warum das so gemacht wurde, entzieht sich meiner Kenntnisse.

Ich denke jedoch das jetzt umzustricken würde meine kenntnisse 
überfordern.

> Warum willlst du das denn überhaupt so umständlich machen und lässt
> nicht den Display-AVR alles machen?

Weil dafür zu wenig Anschlüsse vorhanden sind.

> Übrigens fehlen die I2C Pullups wenn ich mich nich irre? Hab zumindest
> keine gesehen und ich meine mal gelesen zu haben, dass das mit den
> internen des AVR nicht geht, kann aber sein dass ich da falsch liege.

Gute Frage. Das ganze funtkioniert allerdings so problemlos.

> Dann geht das ganze natürlich nicht so :(
Mist. Also keine Chance?

von Karl H. (kbuchegg)


Lesenswert?

Manfred W. schrieb:

> Wie macht man das? Wie kann man vom ersten AVR die Ausgänge des zweiten
> ansprechen?

Dazu muss man erst einmal analysieren, wie das jetzige Komplett-System 
funktioniert. Da gibt es mehrere Möglichkeiten, wie das alles aufgebaut 
sein kann.
Erst wenn man darüber den Überblick hat, kann man sich überlgen, wie 
eine Erweiterung gemacht werden könnte.


Nach deiner Beschriebung zu urteilen, gibt es eine Form der 
Kommunikation, die vom Haupt-Mega ausgeht und der LCD-Mega ist nur 
Befehlsempfänger. Da wird es also Befehle in die eine Richtung geben. 
Diese Befehlsliste erweitert man um zusätzliche Befehle, die vom 
Haupt-Mega abgesetzt werden. Der LCD-Mega wird soweit erweiter, dass er 
diese Befehle empfangen und verarbeiten kann und als Folge davon 
Portpins schaltet.

von Lokus P. (derschatten)


Lesenswert?

Ok, aber wie kann man sich das Vorstellen?
Was sind das für Befehle?

Sind das Standard-AVR-Kommandos, sind das Variablen? Wie funktioniert in 
der Regel so eine Kommunikation zwischen 2 AVR's?

Spielen da mehrere faktoren mit?

ich bin ja schon froh wenn ich einen so halbwegs meine Befehle mitteilen 
kann.

von Christian F. (Gast)


Lesenswert?

Wieso bekommt der zweite Mega seinen Takt von einem Port-Pin des ersten 
Mega?

von Karl H. (kbuchegg)


Lesenswert?

Manfred W. schrieb:
> Ok, aber wie kann man sich das Vorstellen?

Du und dein Kumpel sind per Telefon verbunden.
Du gibst deinem Kumpel per Telefon Anweisungen was er zu tun hat.

Dein Kumpel ist in der Kneipe und steht vor dem üblichen schwarzen 
Brett. Wenn du ihm die richtigen Anweisungen gibst, dann steht auf dem 
Brett dein Bestellwunsch

> Was sind das für Befehle?

Ich sagte doch:
Da muss man das Programm analysieren und nachsehen, wie es gemacht 
wurde.

> Sind das Standard-AVR-Kommandos, sind das Variablen? Wie funktioniert in
> der Regel so eine Kommunikation zwischen 2 AVR's?

Du einigst dich mit deinem Kumpel:
0   bedeutet "schwarzes Brett löschen"
1   bedeutet " weiße Kreide nehmen"
2   bedeutet " rote Kreide nehmen"
3   bedeutet " 'Bier bestellen' hinschreiben"
4   bedeutet " 'Limo bestellen' hinschreiben"
5   bedeutet "Wirt fragen, ob ich noch was schuldig bin"


und jetzt gibst du deinem Kumpel die richtigen Codezahlen in der 
richtigen Reihenfolge durch, damit er genau das macht, was du willst.

von Lokus P. (derschatten)


Lesenswert?

Christian F. schrieb:
> Wieso bekommt der zweite Mega seinen Takt von einem Port-Pin des ersten
> Mega?

Das war ursprünglich angedacht. Um einen Taktgeber und Platz auf der 
Platine einzusparen.
Inzwischen läuft das ganze jedoch mit 2 Taktgeber.

von Lokus P. (derschatten)


Lesenswert?

> Da muss man das Programm analysieren und nachsehen, wie es gemacht
> wurde.

Einen Tip wo ich da in etwa suchen könnte?
Gibt es da markante Funktionen die hierfür verwendet werden?
Ich weiß, so Ferndiagnosen ohne den Code zu kennen sind natürlich nicht 
leicht.
Aber würde man das direkt in der main.c implementieren oder in einer 
eigenen lib?

von stephan (Gast)


Lesenswert?


von Lokus P. (derschatten)


Lesenswert?

stephan schrieb:
> http://www.pitsch.de/stuff/mmc2iec/index.htm
>
> das war wohl das Orginal.

Korrekt. Um es ganz genau zu nehmen,
die Nr. 11. Shadowolf sd2iec v1.0/1/2

von Falk B. (falk)


Lesenswert?

@  Manfred W. (derschatten)

>Ich denke jedoch das jetzt umzustricken würde meine kenntnisse
>überfordern.

Das so zum laufen zu bekommen ebenfalls ;-)

>> Warum willlst du das denn überhaupt so umständlich machen und lässt
>> nicht den Display-AVR alles machen?

>Weil dafür zu wenig Anschlüsse vorhanden sind.

Die kann man ja auch nicht einfach erweitern, vor allem so einen 
Krümelkram wie ein LCD und ein paar Tasten . . .

AVR-Tutorial: Schieberegister

>Mist. Also keine Chance?

Fang mal klein an. Nimm EINEN Mikrocontroller und programmier den. Das 
ist mehr als genug für deinen Kenntnisstand. Auch wenn 
Multiprozessorsachen heute mehr denn je hip sind (Unter nem Quadcore P4 
machts heute doch keine(r) mehr), sind sie in denn allermeisten Fällen 
schlicht Overkill.

MFG
Falk

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
Noch kein Account? Hier anmelden.