www.mikrocontroller.net

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


Autor: Nik Bamert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Nik Bamert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Nik Bamert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Nik Bamert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Nik Bamert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.