Du Glücklicher... ich habe mir zwei http://www.dorji.com/docs/data/DRF4432D20.pdf gekauft. (octamex.de sind keine mehr zu haben)
Zu Deiner Frage:
Ich habe nach meiner Antwort wieder ein wenig gespielt und herausgefunden das der Aufhänger an der Wartezeit liegt zwischen Befehlen und Antwort.
Mit einem Arduino Bord geht das so: (ich hoffe es hilft Dir bei dem Timing Problem)
#define SET_ENABLE 4
#include <Wire.h>
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd(0x27,10,2); // set the LCD address to 0x20 for a 16 chars and 2 line display
unsigned long previousMillis=0;
unsigned long interval=500;
char *s="S0";
char msg[8]="XXXXXXX";
int rssi=10;
int mittelwert=1;
int messungen=11;
int long f_start=44595000L;
int long f_ende=45000000L;
int long f_step=625L;
long int pll=446081250L;
long int freq=0L;
long int fdev=5000L;
long int f_jetzt=0L;
long int s1;
long int s2;
long int s3;
long int s4;
void setup()
{
pinMode(SET_ENABLE,OUTPUT);
digitalWrite(SET_ENABLE,HIGH);
Serial.begin(9600);
Serial.println("PowerUP");
Serial1.begin(9600);
lcd.init();
lcd.setCursor(0,0);
lcd.print("-Firmware-");
lcd.setCursor(0,1);
lcd.print("SK11022013");
setze_freq(pll);
delay(3000);
}
void setze_freq(long int mhz)
{
freq=mhz-fdev;
s4=freq-freq/256*256;
freq=freq/256;
s3=freq-freq/256*256;
freq=freq/256;
s2=freq-freq/256*256;
s1=freq/256;
digitalWrite(SET_ENABLE,LOW);
delay(200);
//Frequenz setzten
Serial1.write(0xAA);
Serial1.write(0xFA);
Serial1.write(0xD2);
Serial1.write(s1);
Serial1.write(s2);
Serial1.write(s3);
Serial1.write(s4);
delay(200);
//9600 TX
Serial1.write(0xAA);
Serial1.write(0xFA);
Serial1.write(0xC3);
Serial1.write((byte)0x00);
Serial1.write((byte)0x00);
Serial1.write(0x25);
Serial1.write(0x80);
delay(200);
//TX Power 1dBm
Serial1.write(0xAA);
Serial1.write(0xFA);
Serial1.write(0x96);
Serial1.write(0x01);
delay(200);
//devitation 10KHz
Serial1.write(0xAA);
Serial1.write(0xFA);
Serial1.write(0xA5);
Serial1.write((byte)0xA);
delay(200);
//reciver bandwitch 100KHz
Serial1.write(0xAA);
Serial1.write(0xFA);
Serial1.write(0xB4);
Serial1.write((byte)0x00);
Serial1.write(0x1E);
delay(200);
digitalWrite(SET_ENABLE,HIGH);
}
void loop()
{
f_jetzt=f_start-fdev;
for(int a=0;a<30;a++)
{
setze_freq(f_jetzt);
delay(200);
hole_rssi();
f_jetzt=f_jetzt+f_step;
sende_daten("TESTPAKET");
}
}
void sende_daten(char* daten)
{
lcd.setCursor(8,0);
lcd.print("TX");
int anz=10;
while(anz>0)
{
Serial1.println(daten);
Serial1.println(rssi);
Serial1.flush();
anz--;
}
lcd.setCursor(8,0);
lcd.print("_X");
}
void hole_rssi()
{
digitalWrite(SET_ENABLE,LOW);
delay(100);
Serial1.write(0xAA);
Serial1.write(0xFA);
Serial1.write(0x7;
delay(120);
digitalWrite(SET_ENABLE,HIGH);
while(Serial1.available()>0)
{
rssi = Serial1.read();
}
Serial.print(f_jetzt+fdev,DEC);
Serial.print(",");
Serial.println(rssi,DEC);
lcd.setCursor(0,0);
lcd.print(rssi,DEC);
lcd.print(" ");
lcd.setCursor(8,0);
lcd.print("_X");
lcd.setCursor(0,1);
lcd.print(f_jetzt+fdev,DEC);
}
Lesezeichen