Witaj,
Na chwilę obecną funkcja sterująca syntezą wygląda tak
Kod:
void synteza(int frequency_to_dds){
uint8_t Sterowanie;
switch (step_value)
{
case 100:
Sterowanie = 0b00000001;
break;
case 25:
Sterowanie = 0b00000101;
break;
case 1:
Sterowanie = 0b00001001;
break;
}
pinMode(DATA, OUTPUT);
pinMode(CL, OUTPUT);
pinMode(CE, OUTPUT);
digitalWrite(CE, HIGH);
for( uint8_t idx=0; idx<14; idx++ ) //wysyłanie 14 bitów częstotliwości
{
if ( ( frequency_to_dds >> idx ) & 0x0001 )
{
digitalWrite(DATA, HIGH); // Pin DATA ustawiamy na 1
} else
{
digitalWrite(DATA, LOW) ; // Pin DATA ustawiamy na 0
}
zegarek(); // Generujemy impuls na linii CL
}
digitalWrite(DATA, LOW); //wysłanie T0
zegarek();
digitalWrite(DATA, LOW); //wysłanie T1
zegarek();
for( uint8_t idy=0; idy<8; idy++ ) //wysyłanie 8 bitów konfigu
{
if ( ( Sterowanie >> idy ) & 0x0001 )
{
digitalWrite(DATA, HIGH);
} else
{
digitalWrite(DATA, LOW) ;
}
zegarek();
digitalWrite(DATA, LOW);
}
digitalWrite(CE, LOW);
}
void zegarek(){
digitalWrite(CL, LOW);
delayMicroseconds(3);
digitalWrite(CL, HIGH);
delayMicroseconds(3);
digitalWrite(CL, LOW);
delayMicroseconds(3);
}
Została wypisana do Złomka z forum, głównie dlatego, że miałem podobną infrastrukturę, oraz chciałem złożyć próbny układ
Oczywiście się nie synchronizował.
Rzecz jasna książkę Pana Kardasia zamawiam jeszcze w tym tygodniu.