mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik tda8444 i2c programmierung


Autor: Alex Pe (dynamo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte einen tda8444 mit dem atmega32 ansteuern/auslesen. kennt
jemand links, wo das beschrieben ist? möchte das mit C machen.

Danke

dnm

Autor: Hartmut Gröger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Versuchs mal bei CSD-electronics.

MfG HG

Autor: Hartmut Gröger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Entschuldigung. War der falsche Beitrag.

MfG HG

Autor: Alex Pe (dynamo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hat mir jetz nich so viel geholfen,... danke trotzdem
schon jemand erfahrung mit einem einfachen i2c program, würde gerne mal
ein einfaches programbeispiel sehen.

dnm

Autor: Thomas Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Alex Pe (dynamo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo, ich bins nochmal, komme jetzt erst richtig zum tda, weil jetzt
die hardware erst fertig ist. der link hat mir wenig geholfen, weil ich
mich mit assembler nicht auskenne. hab mal ein paar verschiedene
varianten gesehen, aber ich bekomme nich mal den scl ausgang zum
schwingen. ich arbeite mit einem atmega32 mit 8Mhz internen quarz. was
gesendet wird, ist mir erstmal egal. würd nur den scl gern mal am oszi
schwingen sehen. kann mir einer sagen was ich (alles) falsch mache....

muß ich den scl nochmal extra auf ausgang schalten?

int main(void)
{
  //Pin0/1 von PortC auf Ausgang
  DDRC |= (1<<0);
  DDRC |= (1<<1);
TWBR =0x20; //=32
TWSR |= (1<<TWPS1);
TWSR |= (1<<TWPS0);

while(1)
{
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);  //send start condition
while (!(TWCR & (1<<TWINT)));   //warte bis flag gesetzt (ACC)
//if ((TWSR & 0xF8) != START)
//ERROR();
TWDR = 0b01001110;
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
//if ((TWSR & 0xF8) != MT_SLA_ACK)
//ERROR();
TWDR = 0b00001001;
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
//if ((TWSR & 0xF8) != MT_DATA_ACK)
//ERROR();
TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);
}
}

Autor: Alex Pe (dynamo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bitte helft mir!
find einfach nich das richtige

dnm

Autor: Thomas Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich das richtig verstehe, brauchst Du nicht Informationen zu I2C
oder gar dem TDA8444, sondern Hilfe, wie Du die IOs von dem Atmel
schaltest. Die wirst Du unter dem Betreff aber nicht finden.

Kannst Du die Pins ein und aus schalten, weiß ich, wie es geht.
Schließe ein 7407 Logikgatter mit zwei Pullup-Widerständen an, um eine
Open-Collector Verbindung zu bekommen. Dann schaltest Du die beiden
betreffenden Pins am Atmel so lange ein und aus, bis der TDA
eingestellt ist.
Zur Kontrolle kannst Du immer zwei Eingänge vom 7407 nehmen. Ein
Ausgang für den I2C-Bus, der andere für eine LED.

Thomas

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.