Witam.
Napisałem programu do sterowania dds'a ad9834. Program oparłem na sprawdzonej już metodzie stosowanej przeze mnie do podobnego układu niestety mimo wielu prób nie udało mi się z nim dogadać. Obecna wersja programu do wysłania słowa danych. Wysyła on dane od LSB a więc na odwrót ale to w podawaniu danych uwzględniałem. Nie próbowałem wysyłać danych od drugiej strony aby puki co nie komplikować. Dokumentacja techniczna do tego układu jest dla mnie nie bardzo przejrzysta i nie jestem pewien jakie dane muszę konkretnie wysłać żeby go wystartować. Zależy mi wyłącznie na zadaniu jednorazowo jednej częstotliwości. Hardware jest raczej pewny, sprawdzany kilka razy. W programie napisanym jest zawarte wysłanie tylko jednego słowa. Próbowałem wysyłać kolejno Dane konfiguracyjne, Dane częstotliwości, dane fazy jednak to nie przyniosło skutku. DDS Device Configuration Assistance
http://designtools.analog.com/dt/ad98334/ad9834.html
generuje mi dane niebagatelnej długości 128 bitów mimo próby wysłania tych danych i tak nie przyniosło skutku. Jak ktoś z forumowiczów spotkał się z tym generatorem proszę o podpowiedz co robię źle ewentualne błędy w programie. Słyszałem że ten dds jest kłopotliwym układem ale nie spodziewałem się że aż tak. Poniżej zamieszczam swój program. pozdrawiam.
Napisałem programu do sterowania dds'a ad9834. Program oparłem na sprawdzonej już metodzie stosowanej przeze mnie do podobnego układu niestety mimo wielu prób nie udało mi się z nim dogadać. Obecna wersja programu do wysłania słowa danych. Wysyła on dane od LSB a więc na odwrót ale to w podawaniu danych uwzględniałem. Nie próbowałem wysyłać danych od drugiej strony aby puki co nie komplikować. Dokumentacja techniczna do tego układu jest dla mnie nie bardzo przejrzysta i nie jestem pewien jakie dane muszę konkretnie wysłać żeby go wystartować. Zależy mi wyłącznie na zadaniu jednorazowo jednej częstotliwości. Hardware jest raczej pewny, sprawdzany kilka razy. W programie napisanym jest zawarte wysłanie tylko jednego słowa. Próbowałem wysyłać kolejno Dane konfiguracyjne, Dane częstotliwości, dane fazy jednak to nie przyniosło skutku. DDS Device Configuration Assistance
http://designtools.analog.com/dt/ad98334/ad9834.html
generuje mi dane niebagatelnej długości 128 bitów mimo próby wysłania tych danych i tak nie przyniosło skutku. Jak ktoś z forumowiczów spotkał się z tym generatorem proszę o podpowiedz co robię źle ewentualne błędy w programie. Słyszałem że ten dds jest kłopotliwym układem ale nie spodziewałem się że aż tak. Poniżej zamieszczam swój program. pozdrawiam.
#include <stdlib.h>
#include <avr/io.h>
#include "lcd.h"
#define Gen_SCLK_DIR DDRC
#define Gen_SCLK_PORT PORTC
#define Gen_SCLK (1 << PC5)
#define Gen_SCLK_PIN PINC
#define Gen_FSYNC_DIR DDC
#define Gen_FSYNC_PORT PORTC
#define Gen_FSYNC (1 << PC4)
#define Gen_FSYNC_PIN PINC
#define Gen_SDATA_DIR DDRC
#define Gen_SDATA_PORT PORTC
#define Gen_SDATA (1 << PC3)
#define Gen_SDATA_PIN PINC
int k;
void delay(unsigned int del)
{
unsigned int i;
unsigned int j;
for(i=0;i<del;i++)
{
for(j=0;j<del;j++)
{
i=i;
}
}
}
void send_freq(unsigned long int f)
{
DDRC=0xff;
Gen_SCLK_PORT &=~Gen_SCLK;
Gen_FSYNC_PORT |=Gen_FSYNC;
delay(2);
Gen_SCLK_PORT |=Gen_SCLK;
delay(2);
Gen_FSYNC_PORT &=~Gen_FSYNC;
k=0;
delay(2);
int i;
for(i=0;i<16;i++)
{
if(f&0x0001)
{
Gen_SDATA_PORT |=Gen_SDATA;
}
else
{
Gen_SDATA_PORT &=~Gen_SDATA;
}
f=f>>1;
Gen_SCLK_PORT &=~Gen_SCLK;
delay(2);
Gen_SCLK_PORT |=Gen_SCLK;
delay(2);
}
Gen_FSYNC_PORT |=Gen_FSYNC;
delay(2);
}
int main(void)
{
delay(1000);
delay(1000);
send_freq(0b0000000000000000);
}
