Forum: Mikrocontroller und Digitale Elektronik MP3 Player von Steffen Buchner und Johannes Schmitz


von Andy (Gast)


Lesenswert?

Hallo liebes Forum,

Ich arbeite momentan an einem MP3 Player. Ich habe dazu eine tolle 
Dokumentation gefunden und wollte das 1 : 1 Nachbauen. Habe dieselbe 
Hardware gebaut und Software heruntergeladen. Mein Problem ist das die 
Software nicht funktioniert. Ich Programmier- auf AVR 6.2 und vermute 
das es auf einer älteren Version programmiert wurde und deshalb nicht 
funktioniert. Ich wäre froh wen mir jemand sagen kann was ich verändern 
muss das es funktioniert.

Der MP3 Player besteht aus einem Decoder (VS1011e) einem Atmega644 und 
einem Grafikdisplay von Siemens S65 (LS020xxx) und einer SD Karte.

Also ich weiß das AVR bei irgend einem Update was an der delay.h 
Funktion verändert hat. Und an dem liegt glaube ich auch das Problem. 
Wenn es nur das eine Problem ist :/ Das Projekt ist von @steffen1337.

Hier zu dem Projekt: Beitrag "AVR MP3-Player mit ganz neuer Siemens S65-LCD-Bibliothek"

Ich habe in meinem AVR6.2 genau die gleiche Software geladen und bei mir 
kam eine Fehlermeldung nach dem anderen. Bitte hier um Hilfe ich habe 
schon im ganzen Internet nach Hilfe gesucht und bin etwas weiter 
gekommen aber hab trotzdem noch viele Fehler.

Bitte um Hilfe

Danke im Voraus, LG Andy

: Verschoben durch User
von LSB (Gast)


Lesenswert?

Andy schrieb:
> Ich habe dazu eine tolle
> Dokumentation gefunden und wollte das 1 : 1 Nachbauen.

Andy schrieb:
> Ich habe in meinem AVR6.2 genau die gleiche Software geladen und bei mir
> kam eine Fehlermeldung nach dem anderen.

Warum flashst Du nicht erst einmal einfach das HEX-File? Wenn das dann 
läuft, kannst Du Dir um eigenmächtighe Eingriffe in das Programm Sorgen 
machen.

von Peter II (Gast)


Lesenswert?

Andy schrieb:
> Ich habe in meinem AVR6.2 genau die gleiche Software geladen und bei mir
> kam eine Fehlermeldung nach dem anderen.

und welche?

von Andy (Gast)


Lesenswert?

LSB schrieb:
> Warum flashst Du nicht erst einmal einfach das HEX-File? Wenn das 
dann
> läuft, kannst Du Dir um eigenmächtighe Eingriffe in das Programm 
Sorgen
> machen.

Weil ich erst Flashen kann wenn ich die HEX-File habe und die HEX-File 
erstelt das AVR erst dann wenn es keine Error melungen mehr bringt.

Peter II schrieb:
> und welche?

"__builtin_avr_delay_cycles expects a compile time integer constant"

Soweit diesen ... mit dem hab ich das Internet durchforstet und noch 
nichts gefunden wo mir wirklich weitergeholfen hat.

von Chris L. (kingkernel)


Lesenswert?

Andy schrieb:
> Weil ich erst Flashen kann wenn ich die HEX-File habe und die HEX-File
> erstelt das AVR erst dann wenn es keine Error melungen mehr bringt.

Dann lad dir das HEX-File von der Webseite runter und flashe erstmal 
das!

von Peter II (Gast)


Lesenswert?

Andy schrieb:
> "__builtin_avr_delay_cycles expects a compile time integer constant"
>
> Soweit diesen ... mit dem hab ich das Internet durchforstet und noch
> nichts gefunden wo mir wirklich weitergeholfen hat.

was willst du da noch suchen? dalay muss mit einer Konstanten aufgerufen 
werden damit es richtig arbeitet - das wird scheinbar hier nicht 
gemacht. Vermutlich hat das früher einfach zu keine Fehlermeldung 
geführt - richtig war es aber noch nie. Fehler beheben und gut ist.

von Andy (Gast)


Lesenswert?

Peter II schrieb:
> Fehler beheben und gut ist.

Ja Fehler Beheben und gut ist aber das Problem ist wen ich doppelklick 
drauf mache und er mir den Fehler anzeigen soll wirft er mich in die 
delay.h von AVR

von Peter II (Gast)


Lesenswert?

Andy schrieb:
> Ja Fehler Beheben und gut ist aber das Problem ist wen ich doppelklick
> drauf mache und er mir den Fehler anzeigen soll wirft er mich in die
> delay.h von AVR

dann suche einfach im quellcode nach delay

von Andy (Gast)


Lesenswert?

Hab jetzt im AVR versucht die HEX-File zu flashen aber es kommt immer 
die Fehlermeldung "Unable to open file" und "File does not exist"
Hab einfach avr gestartet und dan auf "Tools" "Device Programming" und 
dan File laden und "Programm".

von Chris L. (kingkernel)


Lesenswert?

Hast du versucht das aus dem Internet heruntergeladene HEX-File zu 
flashen? Wo liegt denn die Datei auf dem rechner? Darf das AVR-Studio in 
dem Verzeichnis vielleicht nicht lesen?

von Andy (Gast)


Lesenswert?

Chris L. schrieb:
> Hast du versucht das aus dem Internet heruntergeladene HEX-File zu
> flashen?

Ja die Hex-File von seiner Seite.

Chris L. schrieb:
> Wo liegt denn die Datei auf dem rechner?

Beim Ersten versuch auf dem USB-Stick und beim zweiten versuch auf einem 
Server.

Chris L. schrieb:
> Darf das AVR-Studio in
> dem Verzeichnis vielleicht nicht lesen?

Normalerweise schon wüsste nicht wiso…

von Günter (Gast)


Lesenswert?

Andy schrieb:
> Hab jetzt im AVR versucht die HEX-File zu flashen aber es kommt immer
> die Fehlermeldung "Unable to open file" und "File does not exist"
> Hab einfach avr gestartet und dan auf "Tools" "Device Programming" und
> dan File laden und "Programm".

Hallo Andy hasst du auch den Programmer eingesteckt ?

von Andy (Gast)


Lesenswert?

Günter schrieb:
> Hallo Andy hasst du auch den Programmer eingesteckt ?

^^ Ja sonst könnte ich die spannung ja nich auslesen auf dem Atmega...

von Karl H. (kbuchegg)


Lesenswert?

Andy schrieb:

> Hab einfach avr gestartet und dan auf "Tools" "Device Programming" und
> dan File laden und "Programm".

Wenn du 'File laden' anklickst, dann wird er dich ja wohl fragen, 
welches HEX-File du haben möchtest. Da wählst du dann das 
heruntergeladene aus (egal wo es liegt) und dann wird geflasht. Wie kann 
ein 'File does not exist' kommen, wenn du doch selbst in der 
Datei-Auswahlbox die Datei ausgewählt hast?

Wenn dich der im AVR-Studio integrierte Brenner die Datei nicht 
auswählen lässt, dann verwende eben ein anderes Brennprogramm. Das kommt 
manchmal schon vor, dass eine in eine IDE integrierte Software zu sehr 
eingeschränkt wird, so dass man zwar die Standardfälle damit wunderbar 
abarbeiten kann, aber eben in Ausnahmefällen nichts mehr damit anfangen 
kann. Der Standardfall ist eben: das Programm wird im Studio übersetzt, 
dort wird ein HEX-File erstellt und genau dieses HEX-File wird im 
Normalfall dann auch gebrannt. Will man insbesondere von der letzten 
Annahme abweichen, dann muss das Brennprogramm eine Möglichkeit haben, 
selbst abweichend von der Standardannahme ein HEX-File auswählen zu 
können.

Disclaimer: Ich verwende 6.2 nicht wirklich, weil mir die IDE zu 
überladen ist. Daher weiss ich nicht mit Sicherheit, wie sich hier das 
Brennmodul verhält.

: Bearbeitet durch User
von Andy (Gast)


Lesenswert?

Karl H. schrieb:
> ein anderes Brennprogramm

Hast du ein Tipp für ein gutes? Das ich ohne Probleme installieren kann?

von Karl H. (kbuchegg)


Lesenswert?

Andy schrieb:
> Karl H. schrieb:
>> ein anderes Brennprogramm
>
> Hast du ein Tipp für ein gutes? Das ich ohne Probleme installieren kann?

Ich verwende den 'extreme Burner'. Aber es gibt auch noch viele andere.
http://extremeelectronics.co.in/avr-tutorials/gui-software-for-usbasp-based-usb-avr-programmers/

von sb1337 (Gast)


Lesenswert?

1. Installation von WinAVR

Du musst unter 
http://sourceforge.net/projects/winavr/?source=typ_redirect die Datei 
"WinAVR-20100110-install.exe" runterladen und installieren. Bei der 
Installation solltest du am Besten auswählen: [x] Install Files und [x] 
Add Directories to PATH. Das "Programmers Notepad" benötigst du nicht.

2. Quellcode kompilieren

Den Quellcode bekommst du unter 
http://my404.de/download.php?id=atmusic_sources.zip und entpackst ihn an 
einen beliebigen Ort. Dann musst du die Windows Eingabeaufforderung 
öffnen (Win+R und cmd eingeben). Dort wechselst du per
1
cd <PFAD>
 in den Ordner, wohin du den Quellcode entpackt hast. Anschließend mit
1
cd "Software Quelltext"
 in den Unterordner, in dem der Quellcode ist.

Dann gibst du
1
make
 ein und drückst die Eingabetaste. Die Ausgabe sollte wie folgt 
aussehen:
1
Compile uart/uart.c:
2
avr-gcc -std=gnu99 -Wall -pedantic-errors -Os -mmcu=atmega644 -DF_CPU=20000000UL
3
 -DUART_BAUD=115200 -MMD -MP -MT build/obj/uart.o -MF build/dep/uart.o.d -ffunct
4
ion-sections -c -o build/obj/uart.o uart/uart.c
5
6
.......
7
8
Link:
9
avr-gcc -mmcu=atmega644 -Wl,-gc-sections -o build/mp3-player.elf -Wl,-Map,build/
10
mp3-player.map build/obj/uart.o build/obj/gui.o build/obj/gui_elements.o build/o
11
bj/gui_elements_input.o build/obj/logo.o build/obj/themes.o build/obj/player.o b
12
uild/obj/player_gui.o build/obj/vs1011.o build/obj/fat_file_browser.o build/obj/
13
byteordering.o build/obj/fat.o build/obj/partition.o build/obj/sd_raw.o build/ob
14
j/id3.o build/obj/id3v2.o build/obj/unicode.o build/obj/eeprom.o build/obj/file_
15
browser.o build/obj/global.o build/obj/main.o -l:lcd/liblcd.a
16
17
Create hex file:
18
avr-objcopy -R .eeprom -R .fuse -R .lock -R .signature -O ihex build/mp3-player.
19
elf build/mp3-player.hex
20
21
Build succeeded.
22
23
AVR Memory Usage
24
----------------
25
Device: atmega644
26
27
Program:   64102 bytes (97.8% Full)
28
(.text + .data + .bootloader)
29
30
Data:       1950 bytes (47.6% Full)
31
(.data + .bss + .noinit)
32
33
EEPROM:        8 bytes (0.4% Full)
34
(.eeprom)

von sb1337 (Gast)


Lesenswert?

3. Hex-Datei flashen

Die HEX-Datei gibt es bereits vorkompiliert unter 
http://my404.de/download.php?id=atmusic.hex Diese sollte auf dem Board 
mit einem ATMega644 sofort laufen.

Wenn du den Quellcode selbst kompilierst, solltest du nach dem 
Kompilieren im Order "Software Quelltext" einen Unterorder "build" haben 
mit der Datei "mp3-player.hex". Diese ist normalerweise die selbe Datei, 
wie sie oben zum Download bereitsteht.

Geflasht hatten wir die HEX-Dateien damals mit einem Bootloader, weils 
schneller war. Aber normalerweise sollte es auch mit PonyProg gehen, 
welches man hier runterladen kann: 
http://downloads.sourceforge.net/ponyprog/PonyProg_V207c.zip

von Sebastian K. (basti)


Lesenswert?

Hallo Andy,

lege das Hex-File einfach auf C (oder eine andere lokale! Platte!).
Das Atmel Studio kann die Dateien zum Flashen nicht von einem Server 
laden und bricht dann mit deiner Fehlermeldung ab.
Ich habe die Erfahrung schon mit meinem NAS gemacht, da hat das auch 
nicht funktioniert.

Gruß
Basti

von sb1337 (Gast)


Lesenswert?

Hab's mal noch auf die Webseite geschrieben. :-)
http://my404.de/?dir=002_Software&file=010_ATmusic.htm

Werde es bei Gelegenheit auch noch um eine Anleitung mit PonyProg 
erweitern. Das ganze Mikrocontroller-Zeugs ist allerdings momentan in 
Kartons verstaut, deshalb ist das mit etwas Mehraufwand verbunden.

Gruß, Steffen

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.