Forum: Mikrocontroller und Digitale Elektronik PIC16 external RAM


von Tom Kurmann (Gast)


Lesenswert?

Hallo zusammen
Ich bin einen Mp3 Player am machen mit SD / MMC Karten und einem 
PIC16f87x. Da der PIC nicht viel internal RAM hat (vorallem für das 
FAT16 system) besorgte ich mir ein SPI fähiges externes flash ram von ST 
(M25P80 8mbit um genau zu sein), nun lesen kann ich ohne problem, ich 
kann auch schön das Status register auslesen, und es macht auch sinn. 
Doch das schreiben bereitet mir noch mühe, wenn ich einlese bekomme ich 
immer auch für das byte das geschrieben werden sollte 0xFF zurück. 0xFF 
ist der Anfangs zustand des Speichers. Ich wäre sehr dankbar wenn jemand 
mir ein ratschlag geben könnte oder schnell in den Source und das 
Datasheet zu schauen!

Vielen Dank!

Grüsse Tom


link zum datasheet
http://www.alldatasheet.com/datasheet-pdf/pdf/103477/STMICROELECTRONICS/M25P80-VMW6G.html

von Rooney B. (rooney)


Lesenswert?

Lesen kannst du? Bist du dir da sicher? Wenn du nur 0xFF liest, dann 
heißt das noch lange nicht, dass es korrekt ist.

Ich habe das gleiche Flash in einem Biosignal Generator verwendet. Soll 
ich dir den Code schicken?

Aber ich würde kein Flash zum Speichern des FAT Systems verwenden, es 
sei denn du liest es nur einmal aus und schreibst es nur einmal... Flash 
Bausteine kann man zwar recht häufig beschreiben, aber irgendwann ist 
Schluss... Aber abgesehen davon sind Flash sehr langsam, vor allem beim 
Schreibzyklus. SPI Flash sowieso. Ich habe mir auch einen MP3 Player 
gebaut und ich verwende 1MB externes SRAM und 512kB Flash. Alles mit 
separatem Adress- und Datenbus. Ich lese die FAT32 Einträge nur Ordner 
weise aus und das soll relativ schnell gehen, also wirds im SRAM 
gespeichert. "Gleichzeitige" Ansteuerung von Display, Codec und 
Festplatte ist bereits in diesem Fall eine Herausforderung und stößt an 
seine Grenzen. Verwende jedoch einen PIC der größer, schneller und 
besser ist als deiner.
Das Flash dient als zusätzlicher Programm- und Datenspeicher 
(Konstante...)

von Tom Kurmann (Gast)


Lesenswert?

Ich bin mir ziemlich sicher das ich lesen kann, wenn ich mir das ganze 
mit dem oszilloscop anschaue, dann krieg ich als antwort immer einfach 8 
taktzyklen high am ausgang(dann noch ne welle bis es wieder auf 0 V ist, 
soll ich ein pull down einbauen um dies zu verhindern?)

Ich bin mir auch am überlegen ein neuen processor zu suchen, jedoch bin 
ich mir nicht sicher ob ich ein pic18 oder ein 32bit atmel nehmen 
sollte, was würdest du empfehlen für jemand der sich beim pic16 
auskennt? Und was für ein sram würdest du empfehlen, und mit welcher 
ansteuerung, parallel oder seriel?

Das ganze mit dem mp3 hab ich mir so vorgestellt, ich schreibe alle 
wichtige FAT16 informationen ins Flash, dann noch alle datei namen inkl. 
ID3 tags und cluster location etc. Dann lese ich pro "play - zyklus" 
genau 1 mal das zeugs ein. Das problem mit dem lesen schreiben wäre erst 
gekommen wenn ich dann nach artist etc gesortet hätte. Aber deine lösung 
gefällt mir auch!

Ich wäre sehr intressiert an deinem source für das Biosignal Generator, 
also für den flash!

Vielen dank für deine Hilfe

Grüsse Tom

von Rooney B. (rooney)


Lesenswert?

Ich werd dir den Code erst am Freitag schicken können. Bin jetzt in der 
Arbeit und mach einen 48er...

Ich bin PIC Fan, weil ich dafür sämtliche Entwicklungstools besitze. 
Debugger, Compiler, Evalkits... free samples.

Wenn du mehr Leistung brauchst würde ich einen PIC24 oder DSPic nehmen 
oder einen ATMEL. Wenn ATMEL dann gleich einen SAM7 oder ähnliches.
Ich verwende einen PIC18F8722 und steuere das SRAM über das externe 
Speicherinterface an. ATMEL hat so etwas nicht, da muss man eben mit den 
Pins "manuell" toggeln. Da es aber nur Speicher für FAT Einträge sind 
ist das sicherlich nicht so ein großer Nachteil. Was du brauchen wirst 
ist viel Programmspeicher. Mein MP3 Player ist high-sophisticated und 
sicherlich Top was Funktionsumfang betrifft. Mit 128k Programmspeicher 
wird’s da auch schon recht knapp.

Parallel oder seriell? Natürlich parallel, ist schneller… außerdem weiß 
ich nicht, ob es serielle SRAMs überhaupt gibt. Sollte es so etwas 
geben, dann ist das teuer und schwer erhältlich.

Warum FAT16? Würde FAT32 nehmen, dann ist es wenigstens mit den neueren 
Betriebssystemen kompatibel.

Wie bringst die Daten auf die Festplatte?

Ich würde aus Performancegründen immer nur das lesen was du wirklich 
brauchst. Wenn du also im Root Verzeichnis bist, wäre es nicht sehr 
sinnvoll, wenn du auch sämtliche Einträge von den Unterverzeichnissen 
liest. Folglich musst du relativ oft die FAT Table auslesen und 
abspeichern. Deswegen Finger weg vom Flash. Flash Speicher kannst du 
verwenden um irgendwelche Einstellungen des Players zu speichern. Z.b. 
Kontrasteinstellung fürs Display, Treble/Bass Einstellung… Die meisten 
PICs haben ein internes EEPROM, dieses kannst du für diese Zwecke 
anstelle des Flash verwenden (vorausgesetzt du kommst damit aus). Aber 
für die FAT G’schichten und ID3 Sachen definitiv nur SRAM verwenden.

ID3 musst du aber nicht speichern. Wenn du dein Verzeichnis auflistest 
und am Display ausgibst, ich nehme an, dein Player hat so etwas, dann 
willst ja nur die Dateinamen angeben oder ID3 auch? Wenn nicht, dann 
solltest du ID3 erst auslesen wenn du die Datei zum Decoder schickst.

Hier mein MP3 Player
http://www.poms-engineering.at/html/index.php?lang=de&inc=projects_mp3_player


Einen MP3 Player zu bauen ist nicht so trivial wie jeder sagt. Wenn du 
etwas Besonderes haben möchtest dann musst du dir vorher sehr viele 
Gedanken machen. Mein Player z.B. ist für den Batteriebetrieb absolut 
untauglich. Seine Größe ist für portable Dinge unbrauchbar. Ich wollte 
einen MP3 Player für Heim und Auto, der nicht nur MP3 abspielen kann 
sondern auch als Steuergerät für irgendwelchen Zusatzschnickschnack 
verwenden werden kann. Und genau das habe ich mir gebaut…

Wenn du Hilfe brauchst, ich unterstütze dich gerne.

von Tom Kurmann (Gast)


Lesenswert?

Hab gerade das Datasheet vom PIC18F8722 angeschaut und ich muss sagen, 
ich bin begeistert! Du hast geschrieben das es eval boards gibt, welches 
kannst du mir empfehlen? Sollte wenn möglichst in Europa sein, da ich in 
der Schweiz wohne.

Die I/Os gehen verloren wenn man ein SRAM anschliesst nehm ich mal 
schwer an, oder hast du die pins doppelt verwendet? Dann zum downloader, 
was hast du benutzt? Für den PIC16 benutze ich im moment ein PPF87x 
downloader, der für den PIC16f87x gemacht wurde, kann es auch sein das 
der gehen würde für den 18er?

FAT16 sollte bei mir reichen, da es noch keine SD Karten gibt mit über 2 
Giga Speicher.

Wenn es keine gescheite eval kits gibt, werde ich mal versuchen das 
ganze zu verdrahten, dafür bräuchte ich aber noch  TQPF adapter, gibt es 
sowas in Europa, am besten nicht bei reichelt, könnte man solche sachen 
über dich beziehen?

Grüsse und vielen dank für deine Hilfe!!!!

Tom

von Rooney B. (rooney)


Lesenswert?

Also kommt drauf an was du haben möchtest. Ich habe ein Evalboard für 
den PIC18LF8722 selbst entwickelt. Obwohl entwickelt kann man das nicht 
nennen...

Das Board besitzt eine 3.3V und 5V Versorgung. Über Jumper läßt sich der 
Controller also unterschiedlich betreiben.
Es ist sowohl eine ICD Schnittstelle drauf als auch eine herkömmliche 
Programmierschnittstelle.
Resetbeschaltung und sämtliche Pins auf Stiftleisten geführt. Also nix 
aufregendes. Den ganzen Schnickschnack wie Displays, Taster... hab ich 
auf einem Steckboard und schließ es über Kabel an die Stiftleisten des 
Boards.

http://www.poms-engineering.at/images/shop_microcontroller_pic18f8x2x_evalboard_assembled.jpg

Ich könnte dir auch ein Evalboard mit VS1002 (MP3 Decoder) anbieten. 
Sämtliche Steuersignale sind über eine Stiftleiste abgreifbar und kann 
somit direkt an das PIC18LF8722 Board angeschlossen werden.

Oder den gesamten MP3 Player... jedoch willst du diesen ja selbst 
entwickeln.

IOs gehen natürlich verloren wenn du es fürs SRAM verwendest, aber die 
IOs brauchst sowieso zum HDD ansteuern und über etwas externe Logik kann 
man SRAM und HDD am gleichen Bus betreiben.

Was ist das für ein Downloader?

Ich lade es via FTP runter (noch in Entwicklung), sagte doch 
high-sophisticated.

Achso du verwendest SD... ich habe eine Festplatte.
Wenn du eine SD Karte hast, dann kannst die ganzen Flash-basierenden 
Dinge doch in die SD Karte pfuschen!?

von Tom Kurmann (Gast)


Lesenswert?

Genau sowas wie das Eval board hab ich gesucht! Falls du eins loswerden 
willst dann schreib mir doch ne emal an tkurmannATgeosig.com und schreib 
doch bitte gleich wieviel du dafür verlangst, und wieviel das board mit 
dem VS1002 kosten würde! Ein neuen downloader zu finden ist 
warscheinlich kein problem, als compiler brauch ich ein CC5X, welches 
ein gängiges standard hex kreiert.

Das mit der SD Karte war meine 2 Idee, doch ich hatte noch ein Flash ram 
im geschäft rumliegen, und wolltes mal probieren.

Vielen dank nochmals

Grüsse

Tom

von Rooney B. (rooney)


Lesenswert?

Okay mach ich. Morgen Abend bzw. Freitag früh genug?

Bestückt oder unbestückt? Teilweise bestückt?
Lieferbar wäre alles sofort. Von Österreich in die Schweiz etwa 7 
Werktage.

von Tom Kurmann (Gast)


Lesenswert?

Also am liebsten bestückt, und morgen Abend oder Freitag morgen ist früh 
genug.

Vielen Dank

Grüsse
Tom

von Rooney B. (rooney)


Lesenswert?

Kein Interesse mehr?

Hast das Flash jetzt zum Laufen gebracht?

von willivonbienemaya (Gast)


Lesenswert?

"
Ich verwende einen PIC18F8722 und steuere das SRAM über das externe
Speicherinterface an. ATMEL hat so etwas nicht,
"

Mega8515 hat das.

von Rooney B. (rooney)


Lesenswert?

64k maximaler externer Speicher ist halt sehr wenig. Bietet ATMEL auch 
noch was anderes an?

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.