Forum: Mikrocontroller und Digitale Elektronik ATMega128A, Hardware I2C plus zwei Software I2C möglich?


von Christop (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich möchte mit einem ATMega128A und zwei TDA7439 sowie TDA7375 einen 
"kleinen" Verstärker mit "Audio Processor" bauen...

Ich habe den TDA7375 mehrfach erfolgreich in Betrieb genommen. Ein 
Testaufbau mit einem Steckbrett und dem TDA7439 verlief ebenso 
erfolgreich.

Nun wollte ich das ganze wie auf dem Bild im Anhang bauen.

Also ein Wannenstecker für Audio R/L, GND sowie I2C.

Das I2C Signal geht zu einem ATMega128A. Das Audiosignal geht zu den 
TDA7439.

Nun werden die TDA7439 über I2C gesteuert. Die Adresse ist jedoch nicht 
einstellbar.

Somit dachte ich, diese an freie PINs des ATMega128A anzuschließen und 
die TDA7439 mittels Software I2C anzusteuern, sodass ich jeden einzeln 
ansteuern kann.

Der ATMega128A würde also die Daten per Hardware I2C bekommen und an den 
jeweiligen TDA7439 weiter geben.

Hierfür brauche ich also den Hardware I2C und zwei Software I2Cs.

Da der ATMega128A auch noch Mute & Co. von den TDA7375 schalten soll...

Schafft der ATMega128A das? Brauche ich einen externen Quarz?

Vielen Dank

von Stefan F. (Gast)


Lesenswert?

I²C per Software lässt sich auf jedem AVR problemlos implementieren. Nur 
kann er während der Kommunikation kaum noch etwas anderes machen - was 
je nach Anwendung akzeptabel sein kann.

von fchk (Gast)


Lesenswert?

Ein AVR128DA64 hat schon mal zwei I2C Ports in Hardware. Je einer geht 
an einen TDA7439, und einer von beiden geht an den Wannenstecker. 
Problem gelöst.

Oder Du nimmst eine I2C Multiplexer wie PCA9544 oder so.

fchk

von Christop (Gast)


Lesenswert?


von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Christop schrieb:
> Nun werden die TDA7439 über I2C gesteuert. Die Adresse ist jedoch nicht
> einstellbar.
Ich würde hier einfach den I2C multiplexen.
https://www.ti.com/de-de/interface/i2c/switches-and-multiplexers/products.html

Christop schrieb:
> Wo hat der denn zwei Hardware I2Cs?
Du hast das Datenblatt eines anderen Controllers. Der AVR128 ist kein 
Mega128, sondern brandneu bei Microchip:
https://www.microchip.com/wwwproducts/en/AVR128DA64

: Bearbeitet durch Moderator
von Stefan F. (Gast)


Lesenswert?

Geil!

ATmega128
Xmega128
AVR128

Und alle sind AVRs. Ich hätte auch gerne etwas von den Kraut, dass die 
nehmen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Stefan ⛄ F. schrieb:
> Xmega128

Gibb's nich.

Es gab verschiedene ATxmega128*, aber die Xmegas sind alle durch 
nachfolgende Buchstaben klassifiziert (die die Familie bezeichnen). Die 
128 ist da eben einfach nur die Flash-Größe, bei den "klassischen" Megas 
war es die nachfolgende Ziffer (ATmega1280, ATmega164 etc.). Bei den 
jeweils ältesten einer Speichergröße fehlte diese Ziffer - so weit hatte 
man dazumals wohl nicht in die Zukunft gedacht, dass es davon mal 
jeweils mehrere gäbe …

Vermutlich wollte Microchip nun zwar den AVR-Namen weiter leben lassen, 
aber nicht den darin implizierten Atmel-Namen … obwohl sie's bei den 
Mega0 noch getan haben (ATmega4809 etc.).

: Bearbeitet durch Moderator
von Oliver S. (oliverso)


Lesenswert?

I2C kann ja nun (fast) beliebig langsam getaktet werden, da schafft ein 
ATmega auch mehrere in Software.

Sinnvoll wäre es natürlich, dabei nicht mir delays zu arbeiten, sondern 
das Protokoll von einer TImer-ISR mit state machichine im "Hintergrund" 
ausführen zu lassen.

Oliver

von Crazy Harry (crazy_h)


Lesenswert?

Wie schon gesagt entweder einen XMega mit  4 TWIs oder einen 
Multiplexer.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Naja, das bisschen kann man allemal in Software abhandeln.

von A. S. (Gast)


Lesenswert?

I2C-Master ist problemlos mehrfach implementierbar, da zu jedem 
Zeitpunkt beliebig lange Unterbrechungen egal sind. (Wenn man kein 
neumodisches Zeugs hat, das Busfehler korrigiert etc.)

Gilt genauso für SPI(-Master), davon kannst Du auch soviel in SW machen 
wir die Portpins hergeben (Bei SPI sogar beliebig viele mit 
Schieberegistern).

von Christop (Gast)



Lesenswert?

Also der ATMega128 hat ja so oder so nicht viel zu tun wie ich gerade 
sehe.

Ich habe das PCB mal geroutet....

Also was soll/muss er machen?

2 x I/O (Mute pro TDA)
2 x Software I2C (I2C pro TDA)
1 x Hardware I2C (zum Master)

-----

2 x LED (wird zusammen mit Mute geschaltet, Visuelle Anzeige, Mute 
On/Off)

Und noch UART (wird hinterher nicht benötigt und könnte 
aktivier/deaktivierbar sein.

Was muss der AVR machen? Eigentlich nur Idlen.. Wie oft stellt man 
Treble, Middle, Bass ein? Also bleibt eigentlich nur Volume.. Und das 
ist ein sehr kurzer Befehl....

Das mit einem 16Mhz Quarz...


------------------

Dann das PCB.. Da mal eine Frage zu... Man hat ja den Analogen und 
Digitalen bereich.... der Digitale Bereich ist grün eingerahmt...

Wie macht man das am besten wegen Störungen etc?

Kann ich "zwei" Masseflächen erzeugen? Also eine in den grünen Rahmen.. 
eine mit dem Rest.. und dann beide Flächen ein einer Stelle mit einer 
Leiterbahn verbinden?

Das wäre zwar keine "Sternmasse".. aber Analog & Digital mischen wäre 
doch so besser, oder?

von Boschler (Gast)


Lesenswert?


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.