Servus, Ich bin neu auf den Board hier =) Ich hab ein Problem mit meiner Programmierung, es handelt sich hierbei um die Prüfungsschaltung der IHK Sommer 2010, jedoch lass ich das Programm über den neuen µcontroller einschub laufen via adaper. Mein Problem, ich kann die Frequenz nicht richtig aus dem Baustein auslesen :-( Das beschreiben des Bausteins geschieht mittels diesen Funktionen: void PLLWert(long PLL) //longwert für PLL { int Bit; // for(Bit=0;Bit<14;++Bit) //Long in 2 Int verwandeln { if(bit_test(PLL,Bit)==true) //Auslesen der PLL { if(Bit<=7) //unteren 8 Bit bit_set(FMSetup[2],Bit); else //oberen 8 Bit bit_set(FMSetup[1],Bit-8); } else { if(Bit<=7) //unteren 8 Bit bit_clear(FMSetup[2],Bit); else //oberen 8 Bit bit_clear(FMSetup[1],Bit-8); } } } void SetFrequenz_kHz (int32 Frequenz) { int32 temp; //Verarbeitete Frequenz long temp2; //long für PLLwert im PIC if (bit_test(FMSetup[3],4)) //Teste auf Highsideinjection temp = (Frequenz + 225) * 1000; else temp = (Frequenz - 225) * 1000; temp2 = (temp * 4) / 32768; PLLWert(temp2); } Auslesen würde ich die Frequenz, in umgekehrter Reihenfolge: long PLL_lesen () { int16 Bit; int32 PLL =0; for(Bit=0;Bit<14;++Bit) //2 int in ein long verwandeln { if(Bit<=7) { if(bit_test(FMData[2],Bit)==true) bit_set(PLL,Bit); else bit_clear(PLL,Bit); } else { if(bit_test(FMData[1],Bit-8)==true) bit_set(PLL,Bit); else bit_clear(PLL,Bit); } } return(PLL); } void GetFrequenz_kHz () { int32 PLL; int32 temp; //Frequenz die noch angepasst werden muss PLL = PLL_lesen (); //PLLwert auslesen temp = (((PLL * 32768) / 4) / 1000); if (bit_test(FMSetup[3],4)) temp = temp - 225; else temp = temp + 225; freq = temp; } wenn ich die Funktion "PLL_lesen" als Funktion mit void deklariere kann, ich ja mit return keinen wert übergeben. Ich vermute dass das auslesen der Bit's zu zwei Byte zu einer Variable Probleme macht. Das Einstellen der Radiofrequenz funktioniert einwandfrei, aber den wert der vorher beschrieben wurde z.B.: 97.300MHz(Bayern 3) wird nach dem Auslesen als 132.698MHz angezeigt ??? Ich Hoffe ich hab mich verständlich ausgerückt, und es macht sich jemand die mühe sich in der Komplexen programmierung zurecht zu finden. Grüße
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.