Hallo zusammen, Nach einem Codebeispiel aus einem Lehrbuch sollte ich folgendes eintragen(im Fotoanhang sind die rot unterlegten Fehler zu sehen) Die Instruktionen werden hier nicht erkannt und stehen als undefiniert in der Fehlerbeschreibung?Ich habe auch schon gegoogelt aber solche Befehle wie hier nirgends finden können!?Kennt hier jemand diese Befehle und weiß vielleicht warum die nicht angenommen werden wollen?
Hi Pinin_GetValue() ist kein Befehl, sondern eine Funktion, und die muss irgendwo definiert sein und zwar irgendwo in deinem Projekt. Gruß
Das sind typische MCC (MPLAB Code Configurator) Defins/Makros (hier alles aus dem File Pin-Manager.h (o.s.ä.)). Die sind alle in einem Ordner "MCC Generator Files" zusammengefasst. Evtl. werden die nicht eingebunden!? MPLAB zickt da bei kopierten Projekten, oft etwas rum (bzw. ich blicks nich). Dann einfach händisch einbinden, irgend wo unter "Projekt Properties".
:
Bearbeitet durch User
jetzt klappt es auch nicht mit dem Timer0! Ich habe alles richtig eingestellt, doch dann das hier!?
1 | mcc_generated_files/tmr0.c:80:: warning: (520) function "_TMR0_StartTimer" is never called |
2 | mcc_generated_files/tmr0.c:86:: warning: (520) function "_TMR0_StopTimer" is never called |
3 | mcc_generated_files/tmr0.c:92:: warning: (520) function "_TMR0_ReadTimer" is never called |
4 | mcc_generated_files/tmr0.c:102:: warning: (520) function "_TMR0_WriteTimer" is never called |
5 | mcc_generated_files/tmr0.c:108:: warning: (520) function "_TMR0_Reload" is never called |
6 | mcc_generated_files/tmr0.c:114:: warning: (520) function "_TMR0_HasOverflowOccured" is never called |
7 | mcc_generated_files/pin_manager.c:130:: warning: (520) function "_PIN_MANAGER_IOC" is never called |
Rudi R. schrieb: > jetzt klappt es auch nicht mit dem Timer0! Was? Rudi R. schrieb: > Ich habe alles richtig eingestellt, doch dann das hier!? > > mcc_generated_files/tmr0.c:80:: warning: (520) function > "_TMR0_StartTimer" is never called Und? .... So nicht!
Die Software ist an irgendeiner Stelle nicht richtig eingestellt. Und ein Experte der schon mal solch einen Fehler bei sich hatte, könnte eventuell wissen woran es liegt? Den Codegenerator mit einer Timer0-initialisierung zu beauftragen war nicht so schwer, doch was kommt dabei raus?? Hier werden die Instruktionen einfach nicht erkannt(rot unterstrichen und diese Fehlermeldung)Und wie kommt man da nun raus??
Rudi R. schrieb: > Hier werden die Instruktionen einfach nicht erkannt(rot unterstrichen > und diese Fehlermeldung)Und wie kommt man da nun raus?? Die vom EDITOR nicht erkannten "Zeugs", nach dem Motto "Kann ich nicht finden...." ist leider normal.... :/ Kann man durch einen Neustart der IDE, meist kurzfristig beheben. Lohnt aber nich, lerne damit zu leben! :´´( Die "Fehlermeldung" ist erstens nur ne "Warnung"! Die ja wohl selbsterklärend ist und nichts anderes bedeutet als: "Unter gewissen Umständen könnte dies eine Platzverschwendung bedingen".
Also ich war ja nun anfangs doch mit Mpasm beschäftigt und ich muss sagen, wenn man da richtig durchsieht, hat man wohl mehr gekonnt. Jetzt habe ich eine IDE mit viel mehr Fenstern und die Übersicht ist nicht besser geworden...also ich weiß nicht... Das Gleiche habe ich mit Seqenzersoftware festsstellen müssen(ich mache Musik über Keyboard und so)Mit einspielen bin ich am Keyboard schneller als wenn das jetzt über Software gemacht werden soll...da gibt es eine gewisse Analogie...weniger ist manchmal mehr.(tausend kleine Regler ist einfach nur irre und machen unproduktiv) Dieser Wechsel jetzt gefällt mir jedenfalls irgendwie gar nicht!Es gibt mehr Beispiele im Netzt die mit Mpasm geschrieben wurden! Leider für den den PIC den ich jetzt habe nicht, ich war dabei umzuschreiben, was auch nicht gleich funktioniert, aber man muss sich mehr mit der Logik dahinter beschäftigen. Aber ich werde das Gefühl nicht los, dass ich, wenn ich Assemblerpogramme verstehe, letztlich viel mehr machen kann!?Auch wenn Codegeneratoren so toll sind,glaube ich das erfahrene Assemblerprogrammierer mehr drauf haben und auf ihren PIC eine bessere Performance erreichen, oder?
Rudi R. schrieb: > Aber ich werde das Gefühl nicht los, dass ich, wenn ich > Assemblerpogramme verstehe, letztlich viel mehr machen kann!? Nö, nich wirklich, den können solltest... musst du Ass auf alle fälle! > Auch wenn > Codegeneratoren so toll sind,glaube ich das erfahrene > Assemblerprogrammierer mehr drauf haben und auf ihren PIC eine bessere > Performance erreichen, oder? Auch nich, is ja nur das rudimentäre Grundgerüst ohne Inhalt. Sollmenge du den MCC im Projekt nutzen willst, solltest du noch nicht aufräumen! Sonnst werden Änderungen lästig. Letzt endlich: Mich zur "Arbeit" mit der IDE zu "zwingen", wär verdammt teuer! :) Andersherum bin ich als Gelegenheits-Programmierer froh über die ganzen "Faulenzer" und der Debuger&Simulator is auch nich zu verachten...
Hallo ich programmiere gelegentlich auch PIC's und konnte mich noch nie an den MCC gewöhnen. Machs immer noch lieber auf die alte Tour, nämlich reinkriechen in den uC. Im datasheet steht ja eigentich alles drin, und wenn man sich mal damit angefreundet hat funktioniert das auch ganz. Die feinheiten findet man sowieso nur raus, wenn man sich mit dem Datenblatt beschäftigt. Einmal muss man das halt durchziehen, beim nächsten Projekt kann man da dann immer schön spicken oder sich gleich die Routinen in nem separaten c-File rüberkopieren. Aber wie gesagt, einmal muss man da durch... Gruß gerhard
:
Bearbeitet durch User
Hallo Gerhard, Der Autor des Buches, welches ich gerdae zur Einarbeitung verwende(aus denen auch die Codebeispiele von mir hier kommen), Ist ebenfalls dafür die Code an einigen stellen zu verbessern und erreicht dadurch wie er im Buch beweist bessere Latenzen bei Interruptangelegenheiten. Und in meinem ersten Anhang ging es sogar um einen fehler den der Codegenerator erzeugt hat,deshalb fügt er dort Sachen hinzu, die er aus den Datenblättern hat! ER misst hier auch mit einem DPO und ich gehe seine Beispiele hier durch. Leider können Lehrbuchautoren ja nichts dafür wenn die Software sich ständig ändert!Und das wird wohl gerade zu meinem Einstiegsproblem.:( Ich habe hier mal wieder ein Beipiel von heute als Screenshot. Ich habe mal rotzfrech auf C90 in den Optionen umgestellt, weil ich davon schon was im Netz gelesen habe...und dadurch war eine Meldung bei debugging schon verschwunden. Er erkennt hier wirklich die Instruktionen nicht, wie man hier sieht und dadurch kommt keine Übertragung zu stande.Mir fehlen hier in der Bibliothek wohl irgendwelche Definitionen?
Rudi R. schrieb: > Ich habe mal rotzfrech auf C90 in den Optionen umgestellt, weil ich > davon schon was im Netz gelesen habe.. Sensationell. Ohne Ahnung einfach auf Verdacht irgendwas umstellen, weil irgendwer irgendwo mal irgendwas davon erwähnt hat... Hammer! > und dadurch war eine Meldung bei > debugging schon verschwunden. Geil! Die Nummer der Meldungen ist also das alleinige Kriterium; eine Unterscheidung zwischen Warnungen und tatsächlichen Fehlern unwichtig, und gar das Durchlesen der Meldungen ist vollkommen überflüssig. In deinem Screenshot steht doch eindeutig drin, was Sache ist: Die Variable currentState ist nicht definiert. Weiterhin gibt es zwei Warnungen, die dir sagen, dass zwei Funktionen nicht sauber deklariert wurden und der Compiler jetzt zu erraten versucht, was du vor hast. Bitte befasse dich erst einmal mit den Grundlagen der C-Programmierung, bevor du versuchst, C zu programmieren.
> Bitte befasse dich erst einmal mit den Grundlagen der C-Programmierung, > bevor du versuchst, C zu programmieren. Ähm,das stand so in dem Lehrbuch,ich habe es so nachgemacht wie es da angegeben ist...leider funktoniert das ja nicht.Irgendwas haut da mit der Wortlänge der Variablen nicht hin, wenn man nachden Fehlermeldungen geht. Doch bei dem Autor des Buches wird es wohl so funktioniert haben. Ich weiß nicht wie der auf diese Code kommt? Das liegt bestimmt an der im Buch verwendeten Version von Mplab X IDE v4.20,da war die Grundeinstellung villeicht etwas anders??
Rudi R. schrieb: > Er erkennt hier wirklich die Instruktionen nicht, Er versucht Dir was zu sagen. Nämlich das die Anweisungen die Du ihm gegeben hast für Ihn nicht ausführbar sind (error) oder es unklar ist ob das so stimmen kann (warning) beides ist nicht die Schuld des Compilers.
Das Dumme ist,es ist so in dem Lehrbuch angegeben und ich müsste jetzt das Wissen dieses Autors in Frage stellen!? Wenn die Instruktionen falsch sind, ist das ist das Buch ja Murks!? Ich kann noch nicht glauben,das diese Angaben von dort falsch sind?? Alles zuvor war mit mpasm ausführbar. Kann der Codegenerator hier Mist gebaut haben? Die Datei die der erzeugt hat, vielleicht nicht die, die ich hier sehe oder wie?? Nee, bis jetzt bin ich noch der Meinung das eine Einstellung in Toolchains dafür verantwortlich sein könnte...das liegt jedenfalls näher als das Wissen des Autors anzuzweifeln. Unter Optionen des Programs könnte was falsch eingestellt sein, doch da jetzt schnell hinterzusteigen ist mein Problem.Da kann man zwischen mehreren Comilern auswählen, da ist XC8cc an gegeben!? [[https://www.weltbild.de/artikel/buch/elektronik-gar-nicht-schwer-mikrocontroller-basics-mit-pic_26484885-1]]
Hi leider ist das ja nicht selten, dass Autoren ein Grundwissen vorraussetzen. Aber hier ist es wohl so, dass der Compiler die definitionder Funktionen nicht findet. PinIn_GetValue() z.B. ist eine Funktion, die in einem deiner C-Quellcodes stehen müsste. Du kannst das auchmal selber machen. Schreibe über main: bool PinIn_GetValue( void ); //Das ist dein Funktionsprototyp, damit der Compiler weiss wie die Funktion auszusehen hat Dann nach main { } bool PinIn_GetValue( void ) { if( PORTAbits.RA0 == 1 ) return( true ); else return( false ); } Und schon ist der erste Fehler weg. Gruß
Rudi R. schrieb: > Das Dumme ist,es ist so in dem Lehrbuch angegeben und ich müsste jetzt > das Wissen dieses Autors in Frage stellen!? > > Wenn die Instruktionen falsch sind, ist das ist das Buch ja Murks!? > > Ich kann noch nicht glauben,das diese Angaben von dort falsch sind?? > Alles zuvor war mit mpasm ausführbar. > Kann der Codegenerator hier Mist gebaut haben? > > Die Datei die der erzeugt hat, vielleicht nicht die, die ich hier sehe > oder wie?? Lass das ma liegen! Dir fehlen einfach die grundlegendsten Kenntnissen von C. Such dir ein C-Grundkurs (Online für lau zB) und lese es dir erst einmal nur durch! Aber Achtung, nach den ersten ~100 Seiten werden dir deine Fragen hier äußerst dümmlich erscheinen!
mkn schrieb: > beides ist nicht die Schuld des Compilers. Leider doch,musste XC8 auf v2.0 downgraden, jetzt frisst er alles...außer die Warnung mit call sind noch.... Doch der PIC funktioniert bei debuggen damit. :)
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.