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:
Ich habe auch schon Die datenblätter studiert komme aber nicht weiter!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.
http://www.ikhf.de/files/BasicTRX_Datenblatt_050902.pdf
und
http://www.infineon.com/upload/Docum...A5250_V1.6.pdf
Meine Versuche????:
Sender:
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 = "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
Bitte um Hilfe! Dringend!!!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
Mfg
Thorsten
Lesezeichen