mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT89C51SND1C Programmieren Interruptproblem


Autor: Christof (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
bin dabei mir einen Mp3 Player zu basteln. Nun habe ich ein kleines 
problem und zwar kriege ich meinen AT89C51SND1C nicht zum abspielen. 
Besser gesagt ich kriege ich nicht zum Interrupt. Hier mein Code.
#include <stdio.h>
#include <at8xc51snd1.h>

code unsigned char *Adresse;

extern void initlcd (void);
extern void loeschenlcd (void);
extern void textlcd (unsigned char *text, unsigned char zeile);

void InitMP3();
void InitAudio();
void InitPLL();

void MP_ISR(void) interrupt 5;

unsigned char zeile1[16];
unsigned char zeile2[16];
  
void main (void)
{
  initlcd();
  loeschenlcd();
  Adresse=0x2000;

  InitMP3();
  InitAudio();
  InitPLL();
  
  P5_3=1;
  
  //Interrupt & MP3 Interrupt ein
  EA = 1;
  EMP3 = 1;
  
  //Bit MSKREQ löschen
  MP3CON = 0b10011000;

  AUDCON1 = AUDCON1&&0b00000001;
  
  IPH0 = IPH0&&0b00100000;
  IPL0 = IPL0&&0b00100000;

  while(1)  
  {
    sprintf(zeile1, "NO Interrupt");
    textlcd (zeile1,1);
  }
}

void InitMP3()
{
  MP3CLK=3;
  MP3VOL = MP3VOR = 0x0F;
  //MP3CON=0xA0;
}

void InitAudio()
{
  AUDCLK=7;
  AUDCON0=0x86;
  AUDCON1=0x41;
}

void InitPLL()
{
  PLLNDIV=125;
  PLLRDIV=0x8E;
  PLLCON=0b00000010;
}

void MP3_Decoder_ISR(void) interrupt 5
{
  sprintf(zeile2, "Interrupt OK");
  textlcd (zeile2,2);
  if(MP3STA1&&0b00001000)
  {
    MP3DAT = *Adresse;
    Adresse++;
  }
    
}

Hoffe ich könnt mir helfen!!

gruß
Christof

Autor: Robert S. (razer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>  AUDCON1 = AUDCON1&&0b00000001;

Das ist so nicht richtig. Ich nehme an du willst bitweise verunden.

Dann muss es so lauten:   AUDCON1 = AUDCON1&0b00000001;

Bei den anderen dann auch so

Autor: Christof (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die hilfe!
mein problem besteht weiterhin, der interrupt wird nicht aufgerufen.

Ich bitte um weitere Hilfe. Vielleicht hat jemand von euch schon mit dem 
SND1C gearbeitet der mir dann helfen kann.

Autor: Günter W. (bojar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

kommentier mal das while(1) aus, so wie es ausschaut sollte das zum test 
eh nicht nötig sein...

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.