Hallo, ich versuche einen Wav player zu programmieren, er sollte mit einem ARM7 LPC2148 laufen, die kleine datei sollte im Speicher sein in einem array z.b. für einen tür gong. die ausgabe soll mit einer PWM ausgegeben werden, dann über ein analog filter auf ein piezo. genutzt wird timer0 für die PWM erzeugung mit 44KHz hat jemand etwas beizutragen ? ein stück mehr code für die interrupt rutine. danke kai /*********************************************************************** **** * init pwm * 44 khz (43,86khz) * ************************************************************************ ***/ void init_pwm(void){ PWMTCR = PWMCR_RESET; // reset PWM counter PWMPR = PWM_PCLK_DIV; // set PWM Prescaler PWMMR0 = PWM_MR0INIT; // set Match0 (for the Single Edge PWM-Channels) PWMLER |= (1<<0); // Enable PWM Match0 Latch PWMMCR |= (1<<1); // reset PWM Timer on PWMMR0 match } void sound_init(void) { PINSEL0 = (PINSEL0 & ~(1<<16)) | (1<<17);//PWM4 function select // PWM Init PWMMR4 = 150; // PWMPCR &= ~(1<<4); // single edge mode for PWM4 PWMPCR |= (1<<12); // enable outputs for PWM4 PWMLER |= (1<<4); // Enable PWM Match4 Latch PWMMCR |= (1<<12); // Interrupt on PWMMR4: An interrupt is generated when PWMMR4 matches the value PWMIR |= PWMIR_MR4I; // clears the interrupt. } /********************************************************************** * PWM Interrupt ***********************************************************************/ //static unsigned short int wert=1; U32 wert=1; U16 pwmzaehler = 0; U16 zaehler2 = 0; void PWM0ISR(void){ switch(PWMIR) { default: break; case PWMIR_MR4I: if(pwmzaehler > 12){ pwmzaehler = 0; // Wert toggeln if (wert == 1) // wert = wert??; else wert = 1; // Wert ausgeben PWMMR4 = wert??; PWMLER |= (1<<4); // Enable PWM Match4 Latch } else { pwmzaehler ++; } break; } PWMIR |= 0xffff; //PWMIR_MR4I; // clears the interrupt. }
Hallo, das was Du suchst hat man früher unter DOS gemacht, da keine Sound-Karte. Such mal im G* nach "wav output on PC speaker" oder "sound output on PC speaker", da findest unter anderem sowas: http://www.gamedev.net/reference/articles/article442.asp BTW, hier sollten bereits die fertigen Projekte eingestellt werden. Mario
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.