Forum: Mikrocontroller und Digitale Elektronik VS1001 Pause


von mr-unbekannt (Gast)


Lesenswert?

Hallo!

Seit neuestens habe ich einen selfmade-mp3-player mit einem vs1001k

bis jetzt habe ich es nicht geschafft eine Pause-Funktion zu schreiben.

Ich möchte gerne wenn ich auf den Play-Button drücke dass der vs1001 in 
einen Pause modus gelangt, und wenn man ein zweites mal drückt wieder an 
der pausierten stelle anfängt.

hat jemand eine ahnung wie mann das realisieren kann?

vielen dank,
mr-unbekannt

von nixversteh (Gast)


Lesenswert?


von nixversteh (Gast)


Lesenswert?

Ergänzung:
In der Software ist 'ne Pausenfunktion, aber nicht so, wie Du es willst.
Ich würde bei Tastendruck immer ein Flagbit mittoggeln lassen.

von Michael U. (amiga)


Lesenswert?

Hallo,

ich habe zwar den VS101 noch nie benutzt, denke aber es wird ähnlich 
sein:
mit der Pausentaste ein Flag in Deinem Programm setzen/löschen und in 
der Routine, die die Daten zum VS1001 (vermutlich SPI-IRQ?) das Flag 
abfragen und wenn Pause ist, eben keine Daten zum VS1001 schicken.

Gruß aus Berlin
Michael

von mr-unbekannt (Gast)


Lesenswert?

das flag ist nicht das problem, sondern wie gesagt die unterbrechung des 
datenstromes...

danke

von Michael U. (amiga)


Lesenswert?

Hallo,

kommt darauf an, wie Du den Kram organisiert hast. Bei mir hat damals 
die Hauptschleife den Buffer im AVR von der HD nachgefüllt, wenn eine 
Hälfte leer war. Dieses Flag hat die IRQ-Riutine vom Decoder (MAS3507 
damals) gesetzt, wenn beim nachfüllen seines internen Buffers die 
Buffermitte überschritten wurde oder vom Ende zum Anfang gewechselt 
wurde.

Bei Pause wurde der Decoder nicht bedient, damit wurde eben nichs 
verändert, bis weiter gespielt wurde oder eine Funktion aufgerufen 
wurde, die hat sowieso jeweils das Abspielen beendet.

Ich weiß jetzt nicht, wie groß der interne Buffer des VS1001 ist, beim 
MAS3507 war das sowieso nicht allzuviel, der hörte sehr recht auf mit 
spielen.

Gruß aus Berlin
Michael

von mr-unbekannt (Gast)


Lesenswert?

so, habs endlich geschafft...

wems interessiert:
1
if (bPause==true) break;
2
        if(!fplay_sector(&fp))
3
        { fclose(&fp);
4
          ps.state = PLAYING_MMC_INIT;
5
          PLAY_LED_OFF;
6
        }

einfach ein break vor die Funktion fplay_sector...

danke!

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.