Autor Tema: problema dac4821 con arduino mega  (Leído 2609 veces)

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

Desconectado luciarv

  • PIC10
  • *
  • Mensajes: 9
problema dac4821 con arduino mega
« en: 16 de Junio de 2013, 06:31:18 »
Tengo un problema he visto una libreria de dac 4821 cn arduino,peroyo teng el mega y necesito hacer una señal triaungular y soy incapaz de adaptar el programa q he visto por que no m sale nada a la salida del dac,necesito ayuda estoy desesperada :(

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: problema dac4821 con arduino mega
« Respuesta #1 en: 16 de Junio de 2013, 08:31:41 »
Tengo un problema he visto una libreria de dac 4821 cn arduino,peroyo teng el mega y necesito hacer una señal triaungular y soy incapaz de adaptar el programa q he visto por que no m sale nada a la salida del dac,necesito ayuda estoy desesperada :(

Te refieres al mcp4821 no??
Postea aqui el codigo para que  veamos donde esta el fallo.

Desconectado luciarv

  • PIC10
  • *
  • Mensajes: 9
Re: problema dac4821 con arduino mega
« Respuesta #2 en: 17 de Junio de 2013, 12:25:30 »
#include <SPI.h>

 
const int PIN_CS = 53;
const int GAIN_1 = 0x1;
const int GAIN_2 = 0x0;
 
void setup()
{
  pinMode(PIN_CS, OUTPUT);
  SPI.begin(); 
  SPI.setClockDivider(SPI_CLOCK_DIV2);
}
 
//assuming single channel, gain=2
void setOutput(unsigned int val)
{
  byte lowByte = val & 0xff;
  byte highByte = ((val >> 8 ) & 0xff) | 0x10;
   
  PORTB &= 0xfb;
  SPI.transfer(highByte);
  SPI.transfer(lowByte);
  PORTB |= 0x4;
}
 
void setOutput(byte channel, byte gain, byte shutdown, unsigned int val)
{
  byte lowByte = val & 0xff;
  byte highByte = ((val >> 8 ) & 0xff) | channel << 7 | gain << 5 | shutdown << 4;
   
  PORTB &= 0xfb;
  SPI.transfer(highByte);
  SPI.transfer(lowByte);
  PORTB |= 0x4;
}
 
void loop()
{
 //high-res triangular wave
 for (int i=0; i < 4096; i+=32)   
 {
  //setOutput(0, GAIN_2, 1, i);
  setOutput(i);
 }
}

este es mi progrmama


 

anything