Autor Tema: control de ISD1700 por SPI  (Leído 3664 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado hectdiaf

  • PIC10
  • *
  • Mensajes: 18
control de ISD1700 por SPI
« en: 07 de Febrero de 2009, 01:38:34 »
buenas buenas a todos.

les comento que me encuentro probando un ISD1700 y despues de solucionar unos cuantos problemas para grabar ahora intento controlarlo por spi, despues de leer el data sheet parecia que solo tocaba colocar "spi_write(0x00)" la direccion especificada para realizar la operacion, pero resulto que no es tan sencillo como lo pensaba y no tengo ni idea de como hacer el control spi parece que se me acabaron las ideas por eso recurro a utedes en busca de alguna ayuda o documentacion que me pueda ayudar.

un pequeño codigo con lo que pretendia controlar el ISD1730;

#include <16f873a.h>
#fuses xt,nowdt,noprotect,nolvp,nowrt,nobrownout
#use delay(clock=4000000)

#byte port_a=5
#byte port_b=6
#byte port_c=7

#define  PU  0X01
#define  STOP  0X02
#define  RESET 0X03
#define  CLR_INT  0X04
#define  PD 0X07
#define  PLAY  0X40
#define  REC   0X41
#define  ERASE 0X43
#define  FWD   0X48
#define  SET_PLAY 0X80
#define  SET_REC  0X81
#define  SET_ERASE   0X082

#define  SS (pin_C6)

int  i = 10 ;

void main()
{
set_tris_c (0x10);
set_tris_a (0xFF);
setup_spi(SPI_MASTER|SPI_H_TO_L|SPI_CLK_DIV_64);
delay_ms(i);

WHILE (TRUE)
{
   IF (input(pin_a0)==0)
   {
   OUTPUT_LOW(SS);
   delay_ms(i);
   SPI_WRITE(PU);
   delay_ms(i);
   SPI_WRITE(CLR_INT);
   SPI_WRITE(REC);
   delay_ms(12000);
   SPI_WRITE(STOP);
   SPI_WRITE(CLR_INT);
   delay_ms(i);
   SPI_WRITE(PLAY);
   delay_ms(15000);
   SPI_WRITE(CLR_INT);
   SPI_WRITE(PD);
      }
   OUTPUT_HIGH(SS);
}
}

Desconectado r2d2arturo

  • PIC10
  • *
  • Mensajes: 1
Re: control de ISD1700 por SPI
« Respuesta #1 en: 04 de Marzo de 2009, 23:27:34 »
Hey que tal alo mejor te falta hacer esto yo lo eh manejado y tmbn dio muchos dolores de cabeza

unsigned char MSB2LSB (unsigned char aux)
{
   

   aux = (aux & 0xF0) >> 4 | (aux & 0x0F) << 4;
   aux = (aux & 0xCC) >> 2 | (aux & 0x33) << 2;
     aux = (aux & 0xAA) >> 1 | (aux & 0x55) << 1;
   
      return  aux;


}

esa es la funcion que te falta y la forma de usarla seria

SPI_WRITE(MSB2LSB(REC));

prueba esto y debe de funcionar saludos desde mexico

Desconectado mosesito

  • PIC10
  • *
  • Mensajes: 5
Re: control de ISD1700 por SPI
« Respuesta #2 en: 14 de Enero de 2010, 22:34:59 »
hola amigos se puede hacer el control via spi sin switch no encuentro informacion de comandos, solo una tabla de datos de voz y direccionas como puedo controlarlo via spi gracias amigos por su respuesta, seria bueno q publicaras sobre la acotacion que te dio el amigo