Hallo Leute, ich schreibe mir gerade ein kleines Programm fürn RFM12. Ich hab die ganzen Routinen in ein eigenes C-File ausgelagert ( RFM12.c ) und möchte diese über ein H-File in mein Main-File einbinden. der AVR-GCC hat auch alles ohne zu meckern compiliert, aber auf dem AVR läuft nur das ab was in der main steht, in die Funktion RFM12_init() springt er nicht und den Rest was anch dem aufruf kommt ignoriert er auch. Könnt ihr mir bitte helfen ich finde den Fehler einfach nicht. Danke
Die extern vor den Funktionsprototypen im Header sind flüssiger als Wasser. Lass sie weg. extern macht nur bei Variablen Sinn. Mich sollte auch wundern, wenn _delay_ms(50) und _delay_ms(200) bei den angegebenen 8 MHz das machen, was Du willst. Oder hast Du eine brandaktuelle Version der AVR-libc? Ich habe gehört, dass in irgendeiner neuen Version die _delay_XX-Funktionen nicht mehr begrenzt sein sollen...
also die delay hab ich geändert die machen das was sie sollen zumindest blinken die LED 3x im "richtigen Takt" (Power-Signal) Aber trot jetzt wo ich das extern weg hab gehts irgendwie immer noch nicht. Sehr merkwürdig.
Du hast in RFM12_init() eine Endlosschleife eingebaut:
1 | for(i=0; 1<10; i++) _delay_ms(20); // Warte 200ms bis RESET fertig |
au das tut weh, das hätte ich eigentlich finden müssen. Vielen Dank!
Eine Frage hab ich noch: Mit
1 | #define RF_FREQ 430.8 // Sendefrequenz in MHz
|
2 | #define RF_FREQSET (430 - RF_FREQ)/0.0025
|
3 | |
4 | ...
|
5 | |
6 | RFM12_com(0xA000| RF_FREQSET); |
Möchte ich die Frequenz des RFM12 schreiben, doch ich bekomme die Fehlermeldung das RF_FREQSET nicht Binär ist, wie kann ich das runden oder "binärisieren" damit ich das so schreiben kann?
Du veroderst da mit einer Fließkommazahl. Die wird wenigstens schon beim Compilieren berechnet, also es werden keine Fließkommabibliotheken eingelinkt. Schreib mal
1 | #define RF_FREQ 430.8 // Sendefrequenz in MHz
|
2 | #define RF_FREQSET ((unsigned int) (430 - RF_FREQ)/0.0025)
|
3 | |
4 | ...
|
5 | |
6 | RFM12_com(0xA000| RF_FREQSET); |
@ lightninglord: Bist du sicher, dass ein negatives RF_FREQSET richtig ist?
@Stefan Nein das ist wieder nen Tippfehler müsste + heißen, danke. Aber mit
1 | #define RF_FREQ 430.8 // Sendefrequenz in MHz
|
2 | #define RF_FREQSET ((unsigned int) (430 - RF_FREQ)/0.0025)
|
gehts auch nede, es kommt immer noch die gleiche Fehlermeldung.
Tschuldigung... klar, Klammer um die Division Dann machs aber noch idiotensicher:
1 | #define RF_FREQSET ( (unsigned int) ((430 - RF_FREQ)/0.0025) )
|
Ok danke jetzt gehts. sieht jetzt so aus:
1 | #define RF_FREQ 430.8 // Sendefrequenz in MHz
|
2 | #define RF_FREQSET (unsigned int) ((RF_FREQ-430)/0.0025)
|
sorry wegen den Doppelposts, aber ich habs jetzt aufn AVR überspielt und er springt immer noch nicht in die Routinen aus dem RFM12.c. Ich hab den neusten SRC mal angehängt. Langsam zweifel ich an meinen C-Kenntnissen.
So letzter Post!!! Es geht alles, ich hab nur vergessen im DDR auch die LED wieder zu aktivierne, weil das DDR wird in der RFM12 neu geschrieben, da fehlte die LED.
lightninglord wrote:
[endlosschleife]
> au das tut weh, das hätte ich eigentlich finden müssen. Vielen Dank!
Der Compiler findet sowas. Man muss sich die Warnungen aber auch
angucken, die er generiert.
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.