Witam
Próbuje zrobić odtwarzać wav na atmega8. Pliki wav mam zapisane na karcie sd. Karta działa prawidłowo, bo bajty wyświetlane na wyświetlaczu są poprawne. Głośnik podpięty bezpośrednio do PB1 i PB2. Kod programu:
Mój problem polega na tym, że słychać tylko jakieś dziwne dźwięki, które nie mają nic wspólnego z piosenką zapisaną na karcie. Co robię źle?
Próbuje zrobić odtwarzać wav na atmega8. Pliki wav mam zapisane na karcie sd. Karta działa prawidłowo, bo bajty wyświetlane na wyświetlaczu są poprawne. Głośnik podpięty bezpośrednio do PB1 i PB2. Kod programu:
#include <avr/io.h>
#include <inttypes.h>
#define F_CPU 8000000
#include <util/delay.h>
#include <avr/interrupt.h>
#include "HD44780.c"
#include "mmc_if.c"
unsigned int i=0;
unsigned long sector=0;
char sectorbuffer[512];
char tekst[10];
int main(void)
{
DDRB = 255;
LCD_Initalize();
LCD_Clear();
mmc_init();
mmc_readsector(sector,sectorbuffer);
TCCR2 |= (1 << WGM21); // Ustawia timer w tryb CTC
OCR2 = 15; // Ustawia wartość pożądaną
TCCR2 |= (1 << CS22); // Ustawia timer z preskalerem Fcpu/64
TIMSK |= (1 << OCIE2); // Zezwolenie na przerwania dla CTC
sei(); // Zezwolenie globalne na przerwania
TCCR1A=0xA3;
TCCR1B=0x09;
TCNT1=0x000;
while(1)
{
}
return 0;
}
ISR(TIMER2_COMP_vect)
{
OCR1A = (spi_byte(0xff) << 8 | spi_byte(0xff) )/1000;
OCR1B = ~OCR1A;
if (i == 255)
{
spi_byte(0xff); // ignore dummy checksum
spi_byte(0xff); // ignore dummy checksum
mmc_clock_and_release(); // cleanup
i=0;
sector++;
mmc_readsector(sector,sectorbuffer);
}
else
{
i++;
}
}Mój problem polega na tym, że słychać tylko jakieś dziwne dźwięki, które nie mają nic wspólnego z piosenką zapisaną na karcie. Co robię źle?