Forum: Mikrocontroller und Digitale Elektronik Wie schnell I²C Eeprom auslesen(Bascom)?


von Nik Bamert (Gast)


Lesenswert?

Hallo allerseits

Ich habe Bascom und möchte mir damit einen MP3 Player programmieren.
Eigentlich bin ich ziemlich sicher dass dies klappen wird. Aber vorerst
möchte ich nicht eine HDD oder Compactflash an den Uc anhängen und ein
Dateisystem proggen. Dazu hab ich mir folgendes gedacht; Ich hänge an
den Atmega16 einen externen 64 Kilobyte Eeprom.
Darin speichere ich dann eine kleine Mp3 Datei (64kbit/s).
Bei 64 kbits/s wären dass dann 64/8, also 8 kbyte/sekunde. Nun wäre
meine Frage ob die kleinen Eeproms überhaupt genug schnell sind um
8kbyte pro Seklunde auszulesen. Und wenn, ob ich dass mit Bascom auch
noch zu schaffen wäre. Klar kommt es darauf an wie mein Programm dann
aussehen wird. Aber nehmen wir an, ich würde das Programm genug
optimieren, damit es nicht mehr schneller gehen würde...
Ach ja, ich verwende einen Atmega16 @ 16 Mhz und ein Microchip 24LC512)
I²C Eeprom.

MFG Nik

von Benedikt (Gast)


Lesenswert?

Dazu sucht man das Datenblatt und findet dort die Angabe: fClk 1000kHz
Das EEPROM ist also schnell genug. Ich weiß nicht, was der uC noch
alles erledigen muss und wie effektiv BASCOM ist. In Assembler kein
Problem...

PS: Was verwendest du für ein Dekoder ?

von Nik Bamert (Gast)


Lesenswert?

Hi!

Danke für die Antwort.
Ich werde dann den VS1001k verwenden. Dabei brauche ich nicht viel mehr
zu machen, als auf das Dreq signal zu warten, um dann wieder 32 bytes
zu senden. Ausser der Initialiesierung am Anfang natürlich.
Ansonsten soll das Proggie nichts machen. Es soll einfach ein Test
werden, indem das Programm den Decoder initialisiert und dann die Daten
ausliest und sendet, in dem Fall denke ich, Bascom sollte schon schnell
genug sein..(?) Ich hoffe es zumindest.:)

MFG Nik

von Stefan Kleinwort (Gast)


Lesenswert?

Hi Nik,

ich würde statt einem IIC-EEPROM ein SPI-EEPROM nehmen. Dann ist später
der Schritt nicht so weit zu einer Speicherkarte. Die MMC-Karten haben
einen SPI-Kompatibility-Mode.

Stefan

von Nik Bamert (Gast)


Lesenswert?

Hi Stefan

Ja, das könnte ich eigentlich auch mal versuchen, nur möchte ich nicht
unbedingt extra noch etwas dazukaufen und ich hab eben gerade meine I2C
"Page Read Routine" vollendet. Mag wahnsinnig klingen, liest aber nur
32 bytes ab einet bestimmten stelle in einen String.
Wenn ich später MMC's verwenden würde, dann würde ich sicher ein Spi
Eeprom nehmen, aber ich nehme wahrscheinlich CompactFlash's(von denen
hab ich schon welche für meinen Pocketpc). Ansonsten bliebe mir noch
eine SecureDigital Karte die ich auch schon habe, aber die wird glaube
ich anders angesteuert als mmc...:-(

Nik

von Nik Bamert (Gast)


Lesenswert?

Hi, ich bins nochmal.


Ich werd wohl doch was schneller benutzen müssen.
Bei mir lief der Controller nun nur auf 8 mhz, dennoch;
Ich hab jeweils ein Byte gelesen und dieses immer in die selbe Variable
gespeichert. Ich hab das byte aber nirgendswo anders hingeschickt, oder
angezeigt, um Zeit zu sparen. Doch um das 64kbyte auszulesen, hat sich
bascom reichlich Zeit gelassen. Das Programm brauchte ziemlich genau 45
sekunden bis das ganze endlich ausgelesen war. das ergibt ca. : 65535 /
45 = 1456 bytes/sekunde = 1.42 kbytes/s = 11.37 kbits/s. Die erträumten
32 oder  64 kilobits kann ich also vorrerst vergessen. Entweder lern
ich nun ein bisschen besser Assembler oder überleg mir was anderes :)

MFG Nik

von Benedikt (Gast)


Lesenswert?

Da sieht man mal wie ineffektiv Basic ist...
Auch das normale QBasic auf dem PC (900MHz) ist bei einfachen Befehlen
(also keine Fließkommazahlen usw.) nicht viel schneller als ein uC mit
2MHz CPU Takt...

Daher verwende ich bei uC nur Assembler.

von Nik Bamert (Gast)


Lesenswert?

Hi!

Ich habs nun mal mit Spi schreiben versucht. Ich hab einfach diesselbe
Ziffer(nicht zufallsgeneriert) 65535-mal über spi rausgesendet. Und
zwar über Software-Spi. Ich werde das ganze auch einmal über
Hardware-Spi testen. Ich hoffe auch dass das ganze bei 16 mhz auch
doppelt so schnell wird. Ansonsten ist mein Spi "benchmark" echt
erschrekend. Bascom schaufelt gerademal ca. 10 kbyte in einer Sekunde
raus. Dabei macht das Programm nichts anderes. Es beschäftigt sich 100
% mit dem Spi Zeugs. 10kbytes = 80 kbits. Ich brächte die 96 kbits
nicht mal zustande wenn ich ne Zufalls Mp3 generieren würde. :-( Und
die paar Bytes sind ja nicht so viel-meine normalen Mp3's haben so 192
oder noch mehr kbit/s...tja, ich denke ich muss doch noch C lernen

MFG Nik

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.