Hallo!

Ich habe ein Problem! Ich habe 2 von dem Oben genannten Funk Sender/Empfänger und bekomme es nicht zum laufen!

Ich habe auch ein Beispeil Prog, aber das ist in Pascal und ich bekomme es nicht Übersetzt!

Original Code:
Code:
// Erstellt mit AVR-Pascalcompiler
// Eine Testversion ist unter www.e-lab.de erhältlich

program ProgTDA5250;

{ $BOOTRST $00C00}         {Reset Jump to $00C00}
{$NOSHADOW}
{ $W+ Warnings}            {Warnings off}

// ****  Compiler Schalter
//{$DEFINE ModNR_42200276}
{$DEFINE ModNR_42200425}

Device = mega8515, VCC=3.3;

Import I2Cport;

From System Import ;

Define
        ProcClock   = 7372800;        {Hertz}
        StackSize   = $0060, iData;
        FrameSize   = $0050, iData;
        I2Cport     = PortB;
        I2Cdat      = 1;
        I2Cclk      = 2;

Implementation

  function SendReg(Comand : Byte) : boolean;  forward;
  function TDAControlComplete : Boolean;      forward;

{$IDATA}

{--------------------------------------------------------------}
{ Type Declarations }
type

{--------------------------------------------------------------}
{ Const Declarations }
const
  {--------------------------------------------------------------}
  { Const Declarations }

  // Voreinstellungen TDA5250
  // Mit diesen Registereinstellungen sollte der Großteil der BasicTRx-Module funktionieren.
  
  I2CChipAddr  : Byte = $E0 shr 1;// die Chipadresse ist konstant $E0 -> shr 1 = compilerspezifisch

  Reg00Default : Word = $40F9;    // Power Down Mode

  Reg01Default : Word = $1E1E;    // Frequenz FSK Fine Tuning TX

  Reg02Default : Word = $0028;    // Frequenz FSK Fine Tuning RX

  Reg03Default : Byte = $1A;      // Datenfiltereinstellung RX -> für 9600Baud manchestercodiert
                                  // $xA = 100kHz I/Q-Filter (bitte nicht verändern
                                  // $1x = Datenfilter -> Cut Off Frequency = 7kHz (max. 14400Baud)

  Reg04Default : Word = $FEC0;    // ON-/OFF-Time-Reg. -> nicht benutzt
  Reg05Default : Word = $F380;    // ON-/OFF-Time-Reg. -> nicht benutzt

  Reg06Default : Word = $0000;    // Datenraten Threshold -> nicht benutzt
  Reg07Default : Word = $0000;    // Datenraten Threshold -> nicht benutzt

  Reg08Default : Byte = $40;      // RSSI - Threshold -> nicht benutzt

  Reg0DDefault : Byte = $08;      // Clock Divider -> nicht benutzt

  Reg0EDefault : Byte = $01;      // FSK Ramp Time -> nicht benutzt

  // Modul spezifische Werte
  // Diese Werte werden bei dem Test des Moduls ermittelet
  // und werden Ihnen als EXCEL-Tabelle zur Verfügung gestellt.
  AbglWertHi42200425 : Byte = 17;
  AbglWertLo42200425 : Byte = 13;
  AbglWertRx42200425 : Byte = 32;

  AbglWertHi42200276 : Byte = 16;
  AbglWertLo42200276 : Byte = 18;
  AbglWertRx42200276 : Byte = 32;


{--------------------------------------------------------------}
{ Var Declarations }
var
{$PData}
    // Sende- / Empfangsumschalter
    SW_TXRX[@PIND, 0]    : bit;
    // Schalter für STANDBY
    SW_PWDN[@PIND, 1]    : bit;

    // PORT - ENABLE = 1; Funkmodul EIN
    ENABLE[@PortD, 2]    : bit;
    // PORT - TX_RX = 0; Funkmodul Rx-Mode EIN
    // PORT - TX_RX = 1; Funkmodul Tx-Mode EIN
    TX_RX[@PortD, 3]     : bit;
    // Port Reset
    RESET[@PortD, 4]     : bit;

{$IDATA}
    // TDA5250 Register Variablen
    REG00               : Word;
    REG01               : Word;
    REG02               : Word;
    REG03               : Byte;
    REG04               : Word;
    REG05               : Word;
    REG06               : Word;
    REG07               : Word;
    REG08               : Byte;
    REG0D               : Byte;
    REG0E               : Byte;

    // TDA5250 Register 0 Bitdefinition
    PeakDetector[@REG00, 15]      : bit;
    SoftPowerDown[@REG00, 14]     : bit;
    TDATestmode[@REG00, 13]       : bit;
    TDARegControlled[@REG00, 12]  : bit;
    TDAASKEnable[@REG00, 11]      : bit;
    TDARxTxEnable[@REG00, 10]     : bit;
    CKLON[@REG00, 9]              : bit;
    DataInv[@REG00, 8]            : bit;
    AlwaysDataOut[@REG00, 7]      : bit;
    ADCCont[@REG00, 6]            : bit;
    FreqCont[@REG00, 5]           : bit;
    LNAGain[@REG00, 4]            : bit;
    EnableRxMode[@REG00, 3]       : bit;
    Mode2[@REG00, 2]              : bit;
    Mode1[@REG00, 1]              : bit;
    PAHighPwr[@REG00, 0]          : bit;


// Default Werte in Controller-Register laden
procedure SetTDADefault;
begin
  Reg00 := Reg00Default;
  Reg03 := Reg03Default;
  Reg04 := Reg04Default;
  Reg05 := Reg05Default;
  Reg06 := Reg06Default;
  Reg07 := Reg07Default;
  Reg08 := Reg08Default;
  Reg0D := Reg0DDefault;
  Reg0E := Reg0EDefault;
end;


// einzelne Register an den TD5250 übertragen
function SendReg(Comand : Byte) : boolean;
var DArray : Array[0..1]of Byte;
begin
  // I2Cout Ausgabe-Routine einer Software-I2C -> siehe E-LAB Pascal-Compiler
  // function I2Cout(SlaveAdr, Command : byte[; Data]) : boolean;
  // www.e-lab-de

  case Comand of
  $00: DArray[0] := Hi(Reg00);
       DArray[1] := LO(Reg00);
       return(I2Cout(I2CChipAddr, Comand, DArray));|
  $01: DArray[0] := Hi(Reg01);
       DArray[1] := LO(Reg01);
       return(I2Cout(I2CChipAddr, Comand, DArray));|
  $02: DArray[0] := Hi(Reg02);
       DArray[1] := LO(Reg02);
       return(I2Cout(I2CChipAddr, Comand, DArray));|
  $03: return(I2Cout(I2CChipAddr, Comand, Reg03));|
  $04: DArray[0] := Hi(Reg04);
       DArray[1] := LO(Reg04);
       return(I2Cout(I2CChipAddr, Comand, DArray));|
  $05: DArray[0] := Hi(Reg05);
       DArray[1] := LO(Reg05);
       return(I2Cout(I2CChipAddr, Comand, DArray));|
  $06: DArray[0] := Hi(Reg06);
       DArray[1] := LO(Reg06);
       return(I2Cout(I2CChipAddr, Comand, DArray));|
  $07: DArray[0] := Hi(Reg07);
       DArray[1] := LO(Reg07);
       return(I2Cout(I2CChipAddr, Comand, DArray));|
  $08: return(I2Cout(I2CChipAddr, Comand, Reg08));|
  $0D: return(I2Cout(I2CChipAddr, Comand, Reg0D));|
  $0E: return(I2Cout(I2CChipAddr, Comand, Reg0E));|
  else
    return(False);
  endcase;
end;

// Alle Register an den TD5250 übertragen
function TDAControlComplete : Boolean;
var
  fx : Byte;
begin
  // Register 0..8 senden
  for fx := 0 to 8 do
    if not SendReg(fx) then
      return(False);
    endif;
  endfor;
  // Register $0D senden
  if not SendReg($0D) then
    return(False);
  endif;
  // Register $0E senden
  if not SendReg($0E) then
    return(False);
  endif;
  return(True);
end;

procedure RxInit;
begin
  incl(ENABLE);      // ENABLE = 1; Funkmodul EIN
   // TDA-Register vorbereiten
  incl(SoftPowerDown);
    // TDA-Register programmieren
  SendReg(00);

  excl(TX_RX);      // TX_RX = 0; Funkmodul Rx-Mode EIN
end;

procedure TxInit;
begin
  incl(ENABLE);      // ENABLE = 1; Funkmodul EIN
   // TDA-Register vorbereiten
  incl(SoftPowerDown);
    // TDA-Register programmieren
  SendReg(00);

  incl(TX_RX);      // TX_RX = 1; Funkmodul Tx-Mode EIN
end;

procedure TDAPowerDown;
begin
    // TDA-Register vorbereiten
  incl(SoftPowerDown);
    // TDA-Register programmieren
  SendReg(00);

  excl(ENABLE);            // ENABLE = 0; Funkmodul Standby
end;

procedure InitPorts;
begin
  PortD := %00000011;      // Pull-Up's für Umschalter setzen
  DDRD  := %00011100;      // Ausgänge definieren
end;

{--------------------------------------------------------------}
{ Main Program }
{$IDATA}

begin
  // Ports initialisieren
  InitPorts;
  
  // Default Werte in Controller-Register laden
  SetTDADefault;
  
  // Reset TDA5250
  excl(RESET);
  MDelay(200);  // 200 ms Verzögerung
  incl(RESET);

   // Fine Tuning Values für Modul 4220276 einstellen
  {$IFDEF ModNR_42200276}
    Reg01 := Word(AbglWertHi42200276) * 256 + Word(AbglWertLo42200276);    // Frequenz FSK Fine Tuning TX
    Reg02 := Word(AbglWertRx42200276);                                     // Frequenz FSK Fine Tuning RX
  {$ENDIF}
   // Fine Tuning Values für Modul 4220425 einstellen
  {$IFDEF ModNR_42200425}
    Reg01 := Word(AbglWertHi42200425) * 256 + Word(AbglWertLo42200425);    // Frequenz FSK Fine Tuning TX
    Reg02 := Word(AbglWertRx42200425);                                     // Frequenz FSK Fine Tuning RX
  {$ENDIF}

  // Alle Register an den TD5250 übertragen
  TDAControlComplete;

 loop
   // Schalter für STANDBY abfragen
   if not SW_PWDN then
      // Sende- / Empfangsumschalter abfragen
     if SW_TXRX then
       TxInit;
     else
       RxInit;
     endif;
   else
     TDAPowerDown;
   endif;

 endloop;
  
end ProgTDA5250.
Ich habe auch schon Die datenblätter studiert komme aber nicht weiter!

http://www.ikhf.de/files/BasicTRX_Datenblatt_050902.pdf
und
http://www.infineon.com/upload/Docum...A5250_V1.6.pdf

Meine Versuche????:
Sender:
Code:
$regfile = "m32def.dat"
$crystal = 16000000                                         'Quarzfrequenz
$baud = 9600

'Definitonen der Variablen

Dim Chip As Word
Dim Reg00 As Word
Dim Reg01 As Word
Dim Reg02 As Word
Dim Reg03 As Byte
Dim Reg00adress As Byte
Dim Reg01adress As Byte
Dim Reg02adress As Byte
Dim Reg03adress As Byte
Dim Text As String * 15

'Declaration Sub's / Funktion


'Config der ports

Config Scl = Portc.0
Config Sda = Portc.1

Config Pinc.3 = Output
Config Pinc.4 = Output
Config Pinc.5 = Output
Config Pinc.6 = Output

'Variablen Setzten

Chip = $e0
Reg00 = $40f9
Reg01 = $0d10
Reg02 = $0020
Reg03 = $1a
Text = "Hallo Welt"
Reg00adress = $00
Reg01adress = $01
Reg02adress = $02
Reg03adress = $03

'Ports Schalten

Portc.3 = 1                                                 'Modul aktiv Schalten
Portc.5 = 1                                                 'Sendebetrieb


'Hauptprogramm

      I2cstart
      I2cwbyte Chip                                         'slave address
      I2cwbyte Reg00adress                                  'asdress L of EEPROM
      I2cwbyte Reg00                                        'value to  write
      I2cstop                                               'stop condition
      Waitms 10                                             'wait for 10 milliseconds

      I2cstart
      I2cwbyte Chip                                         'slave address
      I2cwbyte Reg01adress                                  'asdress L of EEPROM
      I2cwbyte Reg01                                        'value to  write
      I2cstop                                               'stop condition
      Waitms 10                                             'wait for 10 milliseconds

      I2cstart
      I2cwbyte Chip                                         'slave address
      I2cwbyte Reg02adress                                  'asdress L of EEPROM
      I2cwbyte Reg02                                        'value to  write
      I2cstop                                               'stop condition
      Waitms 10                                             'wait for 10 milliseconds

      I2cstart
      I2cwbyte Chip                                         'slave address
      I2cwbyte Reg03adress                                  'asdress L of EEPROM
      I2cwbyte Reg03                                        'value to  write
      I2cstop                                               'stop condition
      Waitms 10                                             'wait for 10 milliseconds

Do
   Open "comc.2:9600,8,n,1" For Output As #1
   Print #1 , Text
   Close #1
Loop
End
Empfänger:
Code:
$regfile = "m32def.dat"
$crystal = 16000000                                         'Quarzfrequenz
$baud = 9600

'Definitonen der Variablen

Dim Chip As Word
Dim Reg00 As Word
Dim Reg01 As Word
Dim Reg02 As Word
Dim Reg03 As Byte
Dim Reg00adress As Byte
Dim Reg01adress As Byte
Dim Reg02adress As Byte
Dim Reg03adress As Byte
Dim Text As String * 15

'Declaration Sub's / Funktion


'Config der ports

Config Scl = Portc.0
Config Sda = Portc.1

Config Pinc.3 = Output
Config Pinc.4 = Output
Config Pinc.5 = Output
Config Pinc.6 = Output

'Variablen Setzten

Chip = $e0
Reg00 = $40f9
Reg01 = $0d10
Reg02 = $0020
Reg03 = $1a
Text = ""
Reg00adress = $00
Reg01adress = $01
Reg02adress = $02
Reg03adress = $03

'Ports Schalten

Portc.3 = 1                                                 'Modul aktiv Schalten
Portc.5 = 0                                                 'Empfangbetrieb


'Hauptprogramm

      I2cstart
      I2cwbyte Chip                                         'slave address
      I2cwbyte Reg00adress                                  'asdress L of EEPROM
      I2cwbyte Reg00                                        'value to  write
      I2cstop                                               'stop condition
      Waitms 10                                             'wait for 10 milliseconds

      I2cstart
      I2cwbyte Chip                                         'slave address
      I2cwbyte Reg01adress                                  'asdress L of EEPROM
      I2cwbyte Reg01                                        'value to  write
      I2cstop                                               'stop condition
      Waitms 10                                             'wait for 10 milliseconds

      I2cstart
      I2cwbyte Chip                                         'slave address
      I2cwbyte Reg02adress                                  'asdress L of EEPROM
      I2cwbyte Reg02                                        'value to  write
      I2cstop                                               'stop condition
      Waitms 10                                             'wait for 10 milliseconds

      I2cstart
      I2cwbyte Chip                                         'slave address
      I2cwbyte Reg03adress                                  'asdress L of EEPROM
      I2cwbyte Reg03                                        'value to  write
      I2cstop                                               'stop condition
      Waitms 10                                             'wait for 10 milliseconds

Do
   Open "comc.2:9600,8,n,1" For Input As #1
   Input #1 , Text
   Close #1
   Print Text                                               'Ausgabe empfang an Terminal
   Text = ""
   Wait 2
Loop
End
Bitte um Hilfe! Dringend!!!

Mfg
Thorsten