atmega+isd4002
HyGy
hygylista at szocimotoros.hu
Sat Feb 4 09:57:51 CET 2006
Hi!
Hasznalt mar valaki ilyet? Az van, hogy nem akar felvenni.
Kikuldjuk a power on parancsot, arra mintha reagalna mert altalaban
pattan a rakotott hangszoro.
A procyon vagy mifele spi.c-t hasznaljuk.
------------
#include "spi.h"
Ez a record:
----------------------------------------------
void isd_rec(void)
{
int c;
uint16_t addr;
rprintf("isd record called\r\n");
cbi(PORTB, PB4); // ss lab elengedese
spiTransferWord(0x2000);
sbi(PORTB, PB4); // ss lab felhuzasa
_delay_ms(25);
cbi(PORTB, PB4); // ss lab elengedese
spiTransferWord(0x2000);
sbi(PORTB, PB4); // ss lab felhuzasa
_delay_ms(50);
cbi(PORTB, PB4); // ss lab elengedese
spiTransferWord(0xA000); // SETREC ADDR=0
sbi(PORTB, PB4); // ss lab felhuzasa
while ((c = uartGetByte())!='q') {
if (c=='s') {
cbi(PORTB, PB4); // ss lab elengedese
addr = spiTransferWord(0x3000); // STOP
sbi(PORTB, PB4); // ss lab felhuzasa
rprintf("\r\nstopp addr:");
rprintfu16(addr);
rprintf("\r\n");
} else if (c=='r') {
cbi(PORTB, PB4); // ss lab elengedese
addr = spiTransferWord(0xB000); // REC
sbi(PORTB, PB4); // ss lab felhuzasa
rprintf("\r\nrecord addr:");
rprintfu16(addr);
rprintf("\r\n");
}
}
rprintf("RECORDING SESSION ENDED\r\n");
cbi(PORTB, PB4); // ss lab elengedese
spiTransferWord(0x0000); // power down
sbi(PORTB, PB4); // ss lab felhuzasa
}
-----------------------------------------------
Ez a play:
---------
void isd_play(uint8_t msg)
{
uint16_t addr;
uint16_t msg_addr[] = {0x0000, 0x0010, 0x0020, 0x0030};
rprintf("isd_play called\r\n");
addr = msg_addr[msg];
cbi(PORTB, PB4); // ss lab elengedese
spiTransferWord(0x2000);
sbi(PORTB, PB4); // ss lab felhuzasa
_delay_ms(25);
cbi(PORTB, PB4); // ss lab elengedese
spiTransferWord(0xE000 | (addr & 0x03ff));
sbi(PORTB, PB4); // ss lab felhuzasa
cbi(PORTB, PB4); // ss lab elengedese
spiTransferWord(0xF000);
sbi(PORTB, PB4); // ss lab felhuzasa
/* TODO
cbi(PORTB, PB4); // ss lab elengedese
spiTransferWord(0x0000); // power down
sbi(PORTB, PB4); // ss lab felhuzasa
*/
}
------------------------------------------------
A record elvileg vissza adna a cimet ahonnan elkezdte rogziteni a
cuccot. Gyakorlatilag altalaban 0000-at ad vissza :)
bye
HyGy
More information about the Elektro
mailing list