Ljud i en PIC18 med hjälp av Roman Black BTc?
Ljud i en PIC18 med hjälp av Roman Black BTc?
Hej
Jag arbetar med ett projekt där jag vill spela upp en kort ljudsekvens. Då jag endast (för tillfället) har tillgång till PIC18F2550 och PIC18F4550 vill jag försöka använda mig av dem. Har googlat runt och hittat Roman Blacks hemsida, har även tittat på gamla trådar här på forumet.
I BTc har jag fått ut min WAV-fil som .c-fil. Den kan jag dock inte kompilera i MPLAB. Jag har faktiskt ingen aning om hur jag skall skriva koden i programmet. Är det någon som har erfarenhet av BTc och som kan ge mig tips och råd?
Tack på förhand
Jag arbetar med ett projekt där jag vill spela upp en kort ljudsekvens. Då jag endast (för tillfället) har tillgång till PIC18F2550 och PIC18F4550 vill jag försöka använda mig av dem. Har googlat runt och hittat Roman Blacks hemsida, har även tittat på gamla trådar här på forumet.
I BTc har jag fått ut min WAV-fil som .c-fil. Den kan jag dock inte kompilera i MPLAB. Jag har faktiskt ingen aning om hur jag skall skriva koden i programmet. Är det någon som har erfarenhet av BTc och som kan ge mig tips och råd?
Tack på förhand
Re: Ljud i en PIC18 med hjälp av Roman Black BTc?
Som vanligt får du bättre hjälp om du anger länkar till allt som du nämner.
-
- Inlägg: 7118
- Blev medlem: 31 augusti 2006, 16:42:43
- Ort: Jamtland
Re: Ljud i en PIC18 med hjälp av Roman Black BTc?
Trodde du hade om inte svart bälte i google så åtminstonne lite google kunskap!
Första träffen:
http://www.romanblack.com/picsound.htm
Håller faktiskt med dig Sodjan, det blir jobbigt när det är så många källor som man ska leta igenom!

Första träffen:
http://www.romanblack.com/picsound.htm
Håller faktiskt med dig Sodjan, det blir jobbigt när det är så många källor som man ska leta igenom!

Re: Ljud i en PIC18 med hjälp av Roman Black BTc?
Det är väl bara att infoga filen i projektet, sedan hanteras den som en vanlig konstant (array) beroende på hur koden är gjord.
Re: Ljud i en PIC18 med hjälp av Roman Black BTc?
Har du lyckats kompilera någon kod alls? d.v.s vet du hur man gör för att ställa in saker såsom projektet så att det använder C-kompilatorn för 18-serien, och kommer åt include-filer och liknande?ImperioN skrev:I BTc har jag fått ut min WAV-fil som .c-fil. Den kan jag dock inte kompilera i MPLAB. Jag har faktiskt ingen aning om hur jag skall skriva koden i programmet. Är det någon som har erfarenhet av BTc och som kan ge mig tips och råd?
Om Roman Blacks kod är skriven för en PIC ur 16-serien kan den behöva skrivas om lite.
Ändring:
Laddade hem programmet nu. Det ger en fil som innehåller en funktion med inline assembler:
Kod: Markera allt
void sound_data1() org (1 * 256)
{
asm retlw 0xBD ;
asm retlw 0xA9 ;
asm retlw 0x21 ;
asm retlw 0x25 ;
asm retlw 0x6E ;
asm retlw 0xEE ;
...
}
Exempel:
Kod: Markera allt
const unsigned char sound_data1[] = {
0xBD,
0xA9,
0x21,
0x25,
0x6E,
0xEE,
...
}
Sedan behöver du skriva ett C-program som använder datan i arrayen enligt algoritmen som Roman Black presenterar på sin hemsida. Är det implementationen av algoritmen du behöver hjälp med?
Implementationen borde se ut nått sånt här:
Kod: Markera allt
static volatile unsigned char bit_pattern, bit;
static volatile unsigned int i;
void timer_interrupt()
{
if ((bit_pattern & bit) != 0)
{
//Set output pin
}
else
{
//Clear output pin
}
bit <<= 1;
if (bit == 0)
{
bit_pattern = sound_data1[i];
i++;
bit = 1;
}
}
Re: Ljud i en PIC18 med hjälp av Roman Black BTc?
Det är implementeringen jag behöver hjälp med, bearing. Har programmerat en del i MPLAB och fått ut en ton på en gammal datorhögtalare med PWM.
Ska pröva din kod och se om jag kan få ut något ljud.
Ska pröva din kod och se om jag kan få ut något ljud.
Re: Ljud i en PIC18 med hjälp av Roman Black BTc?
Hallå igen,
Har suttit under dagen och försökt få fram en fungerande kod, helt utan framgång.
Jag fattar inte alls hur koden skall skrivas. Har läst att det skall vara 'väldigt enkelt' så jag har försökt göra en kod som går igenom den array som skapas av BTc och lägger ut den element för element på en pin som kopplats till en högtalare.
Har dessutom tittat på sidan nedanför och försökt följa göra som personen där, men ska erkänna att jag inte förstår den till fullo.
Är jag helt ute och cyklar?
http://www.mikroe.com/forum/viewtopic.php?f=9&t=25862
Har suttit under dagen och försökt få fram en fungerande kod, helt utan framgång.
Jag fattar inte alls hur koden skall skrivas. Har läst att det skall vara 'väldigt enkelt' så jag har försökt göra en kod som går igenom den array som skapas av BTc och lägger ut den element för element på en pin som kopplats till en högtalare.
Har dessutom tittat på sidan nedanför och försökt följa göra som personen där, men ska erkänna att jag inte förstår den till fullo.
Är jag helt ute och cyklar?
http://www.mikroe.com/forum/viewtopic.php?f=9&t=25862
Re: Ljud i en PIC18 med hjälp av Roman Black BTc?
Varför postar du inte någon kod, eller utgår från min kod? Hur ska vi annars kunna veta ifall du är "ute och cyklar"?!
Såg nu att det står att bitarna ska spelas upp från vänster till höger. Shiftningen ska alltså ske åt andra hållet. Koden är gjord för den enklaste 1-bit varianten, där endast en I/O samt ett enkelt RC-filter används. Har testat en del i programmet, och jag tycker det låter ungefär lika risigt med alla algoritmer.
Såg nu att det står att bitarna ska spelas upp från vänster till höger. Shiftningen ska alltså ske åt andra hållet. Koden är gjord för den enklaste 1-bit varianten, där endast en I/O samt ett enkelt RC-filter används. Har testat en del i programmet, och jag tycker det låter ungefär lika risigt med alla algoritmer.
Kod: Markera allt
void timer_interrupt()
{
if ((bit_pattern & bit) != 0)
{
//Set output pin
}
else
{
//Clear output pin
}
bit >>= 1;
if (bit == 0)
{
bit_pattern = sound_data1[i];
i++;
bit = 128;
}
}