Hallo, ich wollte mir eine Delayfunktion über den TimerA basteln. In meinem Beispiel soll das Delay 1 Sekunde betragen. Der Timer funktioniert Interrupt gesteuert. Solange ich den Timer in der main.c initialisiere und dort auch die Routine abgearbeitet wird, läuft das alles. Wenn ich jetzt die Timer-Initialisierung und die Routine auslagere, habe mir eine Datei TIMER.c und TIMER.h angelegt, dann funktioniert das ganze nicht mehr. Ich vermute das es etwas mit der Variable "timer" zu tun hat. Habe Sie als extern und volatile deklariert, trotzdem funktioniert es nicht. Würde mich freuen, wenn Ihr mir etwas auf die Sprünge helfen könntet. PS: - verwendet wird der MSP430f169 - Software Code Composer Studio 4_1_3 - im Anhang der Quellcode
vielleicht kannst du die Variable nur im Hauptprogramm deklarieren ? mfg Erik
Ahso, habe ich ja ganz vergessen zu schreiben was nicht funktioniert. Also wenn ich alles in der Main compiliere, dann funktioniert die Funktion wie gewünscht. Das heißt ich komme auf ein Delay, von ca einer Sekunde und somit wird der Text "Test123456" auch nur jede Sekunde gesendet. Baue ich das Programm aber so auf, wie in den Dateien gezeigt. Das heißt die Funktion für die TimerA-Initialisierung und auch die Auswertung der Timervariable in TIMER.c lege. Dann sendet er die ganze Zeit (ohne 1 Sekunde Pause) "Test123456". Das heißt er springt gar nicht in die Delay-Funktion rein. Ich kann mir das nicht erklären, denn ich habe ja den selben Code, welcher ja funktioniert, nur in TIMER.c ausgelagert. Seht Ihr vielleicht mein Fehler, oder habe ich vergessen eine Headerdatei einzubinden? Aber dann würde der Compiler, ja beim compilieren meckern... Schon mal vielen Dank.
Das hier
1 | while(1) |
2 | {
|
3 | senden_String_UART1("Test123456\n"); |
4 | |
5 | void timera_1sek(); |
ist kein Funktionsaufruf. Das deklariert, das es eine Funktion namens timera_1sek gibt, dass über die Argumente nichts näher bekannt ist und dass sie nichts zurückliefert. Das hier
1 | while(1) |
2 | {
|
3 | senden_String_UART1("Test123456\n"); |
4 | |
5 | timera_1sek(); |
wäre ein Funktionsaufruf.
Hallo, ja das macht Sinn. Werde ich am Montag gleich mal testen und anschließend eine Rückmeldung geben. Ich wünsche euch ein schönes Wochenende.
Guten Morgen, ja es war genau das void. Irgendwann sieht man den Wald vor lauter Bäumen nicht mehr... :-( Danke für die Hilfe. Gruß, Daniel.
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.