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