-
-
Erfahrener Benutzer
Robotik Einstein
@phaidros
Wenn Du 20 kByte für Daten brauchst und bei I2C mit 100 kBit/s übertragen kannst, dauert das Auslesen 20 kByte * 8 Bit = 160 kBit = 1,6 Sekunden.
Wenn diese Daten nicht im Controller abgelegt werden können, wie willst Du 8.000 Bytes pro Sekunde ausgeben ?
-
Erfahrener Benutzer
Fleißiges Mitglied
@kalledom:
Wie funktioniert Sprachausgabe mit einem PIC? Ich muss innerhalb eines festen Zeitintervalls (der Samplingperiode, sagen wir mal 1/8000 Sekunde) einen analogen Wert auf einen Lautsprecher legen. Ich hole mir diesen Wert aus dem Eeprom (dauert 1/10 000 s) und gebe ihn auf Port B wieder aus. Ich inkrementiere einen Zähler und mache mit dem nächsten Wert weiter.
Gruß
Phaidros
-
Erfahrener Benutzer
Robotik Einstein
@phaidros
Um Daten aus dem Eeprom zu lesen, müssen einige Bytes gesendet werden, z.B. I2C-Adresse, Daten-Beginn-Adresse, Daten-End-Adresse, was sonst noch ?
Dann erst wird das Eeprom Daten liefern.
Addiert sind das Minimum 40 Bits = 40/10.000 s = 4/1.000 s = 32/8.000 s; die Samplingrate beträgt aber 1/8.000 s ???
-
Erfahrener Benutzer
Fleißiges Mitglied
Das Eeprom 24LC512 hat einen internen Adresszähler. Die Adresse wird einmal am Anfang übermittelt, danach werden der Reihe nach alle Bytes ausgegeben, solange bis der PIC STOP sagt. Es wanderen nur ca. 20 Bits über die Leitung für ein auszugebendes Byte. Und die Frequenz des Busses beträgt nicht 100 kHz (war nur eine Abschätzung nach unten), sondern 400 kHz (hab noch mal im Datenblatt geschaut). Ich hab es selber noch nicht ausprobiert, habe aber genügend Erfahrung mit PICs um vom Gefühl her sagen zu können, dass es auf jeden Fall funktioniert würde.
Gruß
Phaidros
-
Erfahrener Benutzer
Robotik Einstein
@phaidros
Du hast Recht, mit einem 24LC512 im 400 kHz-Modus sollte es funktionieren.
Das mit dem sequentiellen Auslesen eines I2C-Eeproms ab einer vorgegebenen Adresse mit post-inkrement war mir nicht bekannt, weil ich mit I2C bisher nichts gemacht habe; deshalb habe ich auch noch nie den I2C-Teil im 16F877-Datenblatt gelesen.
Der Speicher des 24LC512 ist mit 64 kByte zwar etwas knapp, wenn jede Ziffer im Schnitt mit 0,8 s gesprochen wird, dann sind 0,8 s * 8.000 Bytes/s = 6.400 Bytes pro Ziffer * 10 Ziffern = 64.000 Bytes erforderlich.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen