Forum: Compiler & IDEs Frage zu Instruktionsbefehlen C-Complier Mplab 5.45


von Rudi R. (microwitsch)


Angehängte Dateien:

Lesenswert?

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?

von Franko P. (sgssn)


Lesenswert?

Hi
Pinin_GetValue()

ist kein Befehl, sondern eine Funktion, und die muss irgendwo definiert 
sein und zwar irgendwo in deinem Projekt.
Gruß

von Teo D. (teoderix)


Lesenswert?

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
von Rudi R. (microwitsch)


Lesenswert?

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

von Teo D. (teoderix)


Lesenswert?

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!

von Rudi R. (microwitsch)


Lesenswert?

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??

von Teo (Gast)


Lesenswert?

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".

von Rudi R. (microwitsch)


Lesenswert?

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?

von Teo (Gast)


Lesenswert?

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...

von Franko P. (sgssn)


Lesenswert?

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
von Rudi R. (microwitsch)


Angehängte Dateien:

Lesenswert?

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?

von Horst G. (horst_g532)


Lesenswert?

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.

von Rudi R. (microwitsch)


Lesenswert?

> 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??

von mkn (Gast)


Lesenswert?

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.

von Rudi R. (microwitsch)


Lesenswert?

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]]

von sgssn (Gast)


Lesenswert?

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ß

von Teo (Gast)


Lesenswert?

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!

von Rudi R. (microwitsch)


Lesenswert?

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
Noch kein Account? Hier anmelden.