Forum: Mikrocontroller und Digitale Elektronik MPLABX und Hi Tech C Programmschwierigkeiten


von Ferenc (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen

Ich bin neu im Bereich Pic Bereich. Nach einigem lesen, habe ich nun 
mein erstes Programm geschrieben.
Leider bekomme ich den Header mit der Konfiguration nicht hin (PIC Typ, 
Oszillator Typ, ...). Das ganze funktioniert mit
1
__config(...)
nicht.
Beim Building bekomme ich eine riesige Fehlerliste, wobei ich vermute, 
dass das Include File "as12f675.h" defekt ist. Kann mir jemand 
weiterhelfen?
Ich verwende einen PIC 12F675. Das Programm sowie den Output als Anhang.

Die Wartezeit habe ich noch nicht programmiert, da ich noch eine 
passende Programmiermöglichkeit suche.

Besten Dank
Ferenc

von Lorin J. (Gast)


Lesenswert?

Hallo

/usr/hitech/picc/9.83/include/as12f675.h:8: error: "," expected
/usr/hitech/picc/9.83/include/as12f675.h:8: error: ";" expected

Das sind die entscheidenden Fehlerzeilen. Als erstes würde ich int 
rausnehmen, da du ja noch keine int's brauchst. zweitens wo hast du dein 
__config(...)? dritens mach anstelle von main() void main (void), dan 
brauchst du auch kein return 0; mehr.

Liebe Grüsse
Lorin

von Karl H. (kbuchegg)


Lesenswert?

Der erste Fehler ist doch schon recht aussagekräftig

> /usr/hitech/picc/9.83/include/as12f675.h:2 warning:
> #warning: Header file as12f675.h included directly.
> Including <aspic.h> instead

Mach das mal, ehe du was anderes änderst.

von Ferenc (Gast)


Angehängte Dateien:

Lesenswert?

Habe nun
1
#include <aspic.h>
reingemacht. Ist wohl besser so, da damit gleich das richtige Header- 
File genommen wird. Auch habe ich nun
1
void main(void)
Die Config habe ich nach langem üben warscheinlich auch hinbekommen. 
Leider konnte ich die noch nicht testen, da ich immer noch einen haufen 
Fehler zurück bekomme. Kann mir da jemand weiter helfen?
Da einige Fehler auf die "as12f675.h" weisen, habe ich diese nun 
ebenfalls als Anhang hinzugefügt.


Besten Dank
Ferenc

von Chris B. (dekatz)


Lesenswert?

Wozu die
#include </usr/hitech/picc/9.83/include/aspic.h> ???

Unter der Voraussetzung das du den PICC 9.83 mit der MPLAB IDE 
verwendest, der richtige Controller gewählt hast, genügt einfach:

#include <htc.h>
__CONFIG(WDTE_OFF & FOSC_XT & CP_OFF & CPD_OFF & PWRTE_ON);

gefolgt von deiner <main>.
Wird ohne Fehler compiliert!
Ob die <main> funkteoniert hab ich jetzt nicht getestet ;-)

von Chris B. (dekatz)


Lesenswert?

btw: ohne Korrekte Initialisierung des 12F675 wird die <main> nicht das 
tun was sie soll.
Die lautet vollständig:

void main(void)
{
    GPIO = 0;
    CMCON = 0x07;   //Ports auf DIGITAL umschalten, Default = ANALOG!!
    ANSEL = 0;
    TRISIO2 = 0;    //Pin 5 (GP2) auf Ausgang
    GPIO2= 0;       //Pin 5 (GP2) auf LOW

  while(1)
  {
      //Wartezeit (1sek.)
      GPIO2= 1;       //PIN 5 (GP2) auf HIGH
      //Wartezeit (900ms)
      GPIO2= 0;       //Pin 5 (GP2) auf LOW
  }
}

von Chris B. (dekatz)


Lesenswert?

Nachtrag: lässt sich auch unter MPLABX 1.60 problemlos Compilieren!

von Ferenc (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen

Vielen Dank für Eure Bemühungen.
Wenn ich die aspic.h bzw. p12f675.h nicht einbinde, ist der Compiler 
zufrieden. Der Grund dafür ist mir noch nicht bekannt.

Was ich jetzt noch nicht ganz hinbekommen habe, ist die Wartezeit. Laut 
Google und verschiedenen Foren sollte das mittels
1
__delay_ms();
 möglich sein. Leider klappt das bei mir nur teilweise. Matlab meldet 
mir da "Unable to resolve identifier __delay_ms". so wie es aussieht, 
hat der Compiler kein Problem damit. Was ist da los?

Kann mir da jemand weiterhelfen?

Besten Dank
Ferenc

von Ste N. (steno)


Lesenswert?

Ferenc schrieb:
> __delay_ms();

Hast du es schon mal mit #include <delays.h> probiert?

von Erich (Gast)


Lesenswert?


von Ferenc (Gast)


Lesenswert?

Hallo zusammen

Leider habe ich beim Hi Tech C Compiler die "delays.h" nicht.
1
#ifndef _XTAL_FREQ
2
      #define _XTAL_FREQ 4000000
3
#endif
habe ich schon drinn.
Leider meldet sich MPLAB immer noch mit "Unable to resolve identifier 
__delay_ms".
Der Compiler meldetbei immer noch keinen Fehler. Daher weiss ich nicht, 
ob er mit dem Befehl zurecht kommt oder nicht.

Eigentlich müsste ich ja #ifndef nicht verwenden, da _XTAL_FREQ ja 
nirgends sonst definiert wurde.

Gruss
Ferenc

von Chris B. (dekatz)


Lesenswert?

Die "delay"-Funktionen sind in <pic.h> definiert und sollten eigentlich 
mit <htc.h> mitgeladen werden!!!

von Ferenc (Gast)


Lesenswert?

Die htc.h habe ich ja eingebunden. Auch der Compiler meldet keinen 
Fehler und gibt am Ende:
1
BUILD SUCCESSFUL (total time: 1s)
2
Loading code from /media/DataCF/Documents/Elektronik/Microcontroller/Pic_Programme/Timer_001.X/dist/default/production/Timer_001.X.production.hex...
3
Loading symbols from /media/DataCF/Documents/Elektronik/Microcontroller/Pic_Programme/Timer_001.X/dist/default/production/Timer_001.X.production.cof...
4
Loading completed
aus. Einzig in MPlab sehe ich den befehl "__delay_ms();" rot 
unterstichen.
Ich konnte das Programm noch nicht in den Pic brennen, da mein velleman 
k8076 mit der Software "Piklab" aus irgendeinem Grund den Pic nicht 
brennen (12F675) kann. Ich werde dann sehen, ob es nun funktioniert.

Besten Dank für Eure Bemühungen.
Ferenc

von Michael S. (rbs_phoenix)


Lesenswert?

Als ich den Vergleich einiger PIC-C-Compiler gemacht habe, hatte ich 
u.a. den Hi-Tech C Compiler und den XC-Compiler. Dort habe ich auch 
gesehen, dass die delay-Funktion rot angestrichen wurde, obwohl es 
funktioniert hat. Beim XC-Compiler war das nicht der Fall. Ich hab aber 
auch nicht rausbekommen, weshalb das so ist.

von Chris B. (dekatz)


Lesenswert?

Ferenc schrieb:
> Ich konnte das Programm noch nicht in den Pic brennen, da mein velleman
>
> k8076 mit der Software "Piklab" aus irgendeinem Grund den Pic nicht
>
> brennen (12F675) kann.

Und der K8076 hängt auch an einer richtigen RS232???
Mit einem USB-RS232-Wandler funkteoniert der nämlich NICHT (lt. 
REICHELT-Katalog und Berichten hier im Forum).

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.