[c]:0:: error: (499) undefined symbol: _myTimerIsr(dist/default/production\Interrupt_TMR1.X.production.o) make[2]: *** [dist/default/production/Interrupt_TMR1.X.production.hex] Error 1 make[1]: *** [.build-conf] Error 2 make: *** [.build-impl] Error 2 [c] Hi, Ich habe alles nach einem Beispiel eingegeben und hier will er bei"void myTimerISR(void)" nicht weiterarbeiten. Die Deklaration steht aber in maib.c über "void main..." so wie man es machen sollte!? Woran kann das denn liegen? Wo muss ich vielleicht im einem Hexfile noch eine Definition zufügen?
Welche Version? CX8 hatte meiner Erfahrung nach, Probleme mit der Implementierung von C99 und hat solche Fehler produziert. Sollte aber seit der vorletzten(?) Version behoben sein.
Teo schrieb: > Welche Version? > CX8 hatte meiner Erfahrung nach, Probleme mit der Implementierung von > C99 und hat solche Fehler produziert. Sollte aber seit der > vorletzten(?) Version behoben sein. Jou, das kann ich mir gut vorstellen,ich habe nämlich schon gedowngraded. Ich habe jetzt v 2.31 und das Beispiel was ich gerade durch wollte wurde mit 1.31 betrieben. Ich glaube ich hau mir wieder Mplab 4.15 rauf und nehme dann auch die alte Version von CX8..die meisten Beispile aus die man im Internet lernen könnte sind natürlich auch auf 8Bit-MCUs basierend. Mir reicht sicherlich auch eine 8-Bitter für das was ich so vorhabe. Ich habe übrigens den PIC16F18877...der kann schon ne ganze Menge...
Rudi R. schrieb: > Ich glaube ich hau mir wieder Mplab 4.15 rauf und Blödsinn Zeig mal (hoch laden) den gesamten Code!
Rudi R. schrieb: > [c]:0:: error: (499) undefined symbol: > _myTimerIsr [...] > "void myTimerISR(void)" Da ist ein Unterstrich, und außerdem ist C case-sensitiv.
Nop schrieb: >> [c]:0:: error: (499) undefined symbol: >> _myTimerIsr > [...] >> "void myTimerISR(void)" > > Da ist ein Unterstrich, und außerdem ist C case-sensitiv. Der Strich ist im Orginal nicht, das macht hier der Compiler dazu!? ich habe im Übrigen auch ein Problem mit der " #include <alloca.h> " Wenn ich der Problemmeldung mit " #include <xc.h> * folge!? Die kann der Compiler hier nicht finden?? Was ist das für ein Tool <alloca.h> ?
Rudi R. schrieb: > Der Strich ist im Orginal nicht, das macht hier der Compiler dazu!? Aber die Groß-Kleinschreibung wird er ja wohl nicht auch noch verändern. > Die kann der Compiler hier nicht finden?? Dann sind Deine Pfade wohl nicht korrekt. > Was ist das für ein Tool <alloca.h> ? Zur Allokation von dynamischen Speicher auf dem Stack. Viel mehr kann man dazu nicht sagen, weil Dein Code halt geheim ist.
Nop schrieb: > Viel mehr kann man dazu nicht sagen, weil Dein Code halt geheim ist.
1 | void myTimerISR(void); |
2 | |
3 | void main(void) |
4 | {
|
5 | // initialize the device
|
6 | SYSTEM_Initialize(); |
7 | TMR1_SetInterruptHandler(myTimerISR); //Define interrupt Handler |
8 | |
9 | // When using interrupts, you need to set the Global and Peripheral Interrupt Enable bits
|
10 | // Use the following macros to:
|
11 | |
12 | // Enable the Global Interrupts
|
13 | INTERRUPT_GlobalInterruptEnable(); |
14 | |
15 | // Enable the Peripheral Interrupts
|
16 | INTERRUPT_PeripheralInterruptEnable(); |
17 | |
18 | void myTimerISR(void); |
19 | {
|
20 | IO_RA2_Toggle(); |
21 | }
|
22 | // Disable the Global Interrupts
|
23 | //INTERRUPT_GlobalInterruptDisable();
|
24 | |
25 | // Disable the Peripheral Interrupts
|
26 | //INTERRUPT_PeripheralInterruptDisable();
|
27 | |
28 | while (1) |
29 | {
|
30 | // Add your application code
|
31 | }
|
32 | }
|
33 | |
34 | /**
|
35 | End of File
|
36 | */
|
Hier issa der main.c...doch was soll da jetzt zu finden sein? Meine Deklaration gefällt dem Compiler ja leider nicht. :( Zur Funktion: Timer 1-Interrupt soll eine LED toggeln.
:
Bearbeitet durch Moderator
Rudi R. schrieb: > void myTimerISR(void); > { > IO_RA2_Toggle(); > } Was soll denn das? Mitten im main? Ist das Pascal?
Rudi R. schrieb: > Meine Deklaration gefällt dem Compiler ja leider nicht. :( Mitten in der main() findet sich das hier:
1 | void myTimerISR(void); |
2 | { |
3 | IO_RA2_Toggle(); |
4 | } |
Du kannst in C keine Funktion in einer anderen Funktion schachteln, und außerdem gehört das Semikolon nur beim Prototypen hinter die Funktion, nicht bei deren Definition.
Nick M. schrieb: > Was soll denn das? Mitten im main? Ist das Pascal? Die Deklaration dafür steht oben bei main!? Also muss auch die Funktion im Programm aufgerufen werden oder?
Rudi R. schrieb: > Also muss auch die Funktion im Programm aufgerufen werden oder? Befaß Dich mal mit den Grundlagen von C, so hat das keinen Zweck.
Rudi R. schrieb: > Also muss auch die Funktion im Programm aufgerufen werden oder? Nur, das ist kein Aufruf, sondern nur wieder eine Deklaration. Irgendwie eine mir unbekannte afterwards-forward? Strichpunkte sind übrigens ein wichtiger Teil der C-Syntax. Grundlagen! Buch kaufen, durcharbeiten.
Probier das mal: (und ja, du musst die C-Grundlagen lernen!) (Aber: Da fehlen noch die includes. Also ein paar Zeilen #include <...> vorneweg. Ich kenn mich aber mit dem PICs nicht so aus...)
1 | void myTimerISR(void) |
2 | {
|
3 | IO_RA2_Toggle(); |
4 | }
|
5 | |
6 | void main(void) |
7 | {
|
8 | // initialize the device
|
9 | SYSTEM_Initialize(); |
10 | TMR1_SetInterruptHandler(myTimerISR); //Define interrupt Handler |
11 | |
12 | // When using interrupts, you need to set the Global and Peripheral Interrupt Enable bits
|
13 | // Use the following macros to:
|
14 | |
15 | // Enable the Global Interrupts
|
16 | INTERRUPT_GlobalInterruptEnable(); |
17 | |
18 | // Enable the Peripheral Interrupts
|
19 | INTERRUPT_PeripheralInterruptEnable(); |
20 | |
21 | // Disable the Global Interrupts
|
22 | //INTERRUPT_GlobalInterruptDisable();
|
23 | |
24 | // Disable the Peripheral Interrupts
|
25 | //INTERRUPT_PeripheralInterruptDisable();
|
26 | |
27 | while (1) |
28 | {
|
29 | // Add your application code
|
30 | }
|
31 | }
|
2⁵ schrieb: > Probier das mal: (und ja, du musst die C-Grundlagen lernen!) > (Aber: Da fehlen noch die includes. Also ein paar Zeilen #include <...> > vorneweg. Ich kenn mich aber mit dem PICs nicht so aus...) Ich bin doch aber nach einem Beispiel von Mikrochip gegangen,welchen man hier auch einsehen kann:[[https://microchip.wikidot.com/projects:mcu1101-project-10]]
Du musst nicht nur C lernen, sondern auch Lesen... Unter Completed main.c steht doch eine funktionierende Version.
Hey ich glaub es nicht! :) nach „2 hoch 5“ (im Iphone mal schlecht mit hoch 5 einzugeben) Es funktioniert!!! Und guckt euch mal nun das Beispiel bei Microchip bitte an!? Was machen die denn da bitte mit mir und uns!?? Man man man...wenn man selbst da nicht alles glauben darf!? Ich danke ihnen Herr 2 hoch 5!Sie haben mir sehr geholfen...bin ich wieder ein kleines Stück schlauer geworden. Und Microchip ist doof...sorry...;o)
Rudi R. schrieb: > Und Microchip ist doof...sorry...;o) So richtig doof bist aber du. Lies nochmal den source von Absatz 11 durch.
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.