Forum: Mikrocontroller und Digitale Elektronik Einstieg PIC in C programmieren


von Lukas Häfele (Gast)


Lesenswert?

Hallo zusammen,
ich weiß es sind schon einige Posts zu diesem Thema.

Für ein Jugend Forscht Projekt suche ich einen passenden C Compiler.
Ich verwende den PIC 16F876 in meinem Projekt.

Hab schon mehrere Compiler ausprobiert und hab mich letztendlich
für den CCS entschieden. Doch als ich ihn kaufen wollt fand ich ihn

1. nicht mehr billig (125$ Compiler + Buch 15 $ + 40 $ Versand -> ca.
140 Euro

2. langer Lieferzeit.

Gibt es keine günstigere Studentenversion oder kann man die Ware auch
in einem anderen Shop beziehen.

Falls ihr mir einen anderen Compiler vorschlägt, dann wäre es mir
wichtig, dass es dazu auch ein passendes Buch oder Hilfestellung im
Internet angeboten wird, da ich ein absoluter Neuling in C bin.

Habe lediglich in Assembler programmiert.

mfg Lukas

von Εrnst B. (ernst)


Lesenswert?

schau dir mal SDCC an (http://sdcc.sf.net), steht unter der GPL, und die
sdcc-users Mailingliste ist recht hilfreich.

Buch dafür gibt es meines Wissens nicht, ein "normales" C-Buch ist
sowieso sinnvoller.

/Ernst

von Lukas Häfele (Gast)


Lesenswert?

Hallo Ernst,

den SDCC hab ich auch schon ausprobiert.
Wollte mir aber keine HEX-Datei erstellen.
Kann der Quelltext nur im Editor geschrieben werden, oder
gibt es da auch was übersichtlicheres?

von Schoasch (Gast)


Lesenswert?

Liesse sich nicht der SDCC in MPLAB integrieren?

von Lukas Häfele (Gast)


Lesenswert?

Dann könnt ich den Quelltext in MPLAB schreiben.Hier erstelle ich
dann mein C-File und der SDCC erstellt mir dann aus dieser Datei
mein HEX-File???

Stimmt das so?

von Εrnst B. (ernst)


Lesenswert?

Kenn MPLAB nicht, aber wenn das eine Möglichkeit bietet einen externen
Compiler einzubinden, sollte da auch sdcc gehen.

Ansonsten gibts sicher auch für windows eine Menge Text-Editoren mit
Syntaxhervorhebung für C. Schlimmstenfalls geht dafür auch der Visual-C
editor.

und ja, sdcc erzeugt aus deinem .c file ein .hex file, und zusätzlich
mehrere "Zwischenfiles", in denen du den ASM-Code anschauen kannst.
(Sollte man auch ab und an machen, der Optimierer greift manchmal
ziemlich daneben)

Ich nutz den SDCC mit den neueren 16bit-PICs (pic18f2550 u.ä). Wie gut
der für die 14bitter ist, kann ich nicht beurteilen.

/Ernst

von Lukas Häfele (Gast)


Lesenswert?

Ist der SDCC für den Einstieg empfehlenswert?

Wo finde ich im Internt Lektüren?

Hab den Compiler mal installiert, blicke aber nicht mehr durch.

Die mitgelieferten Handbücher helfen mir auch nicht weiter.

Wie kann ich nun aus meiner c-Datei eine hex-Datei erstellen?

mfg Lukas

von Gerhard Gunzelmann (Gast)


Lesenswert?


von Εrnst B. (ernst)


Lesenswert?

z.B.:
main.c file:
1
#include <pic16f84a.h>
2
void main() {
3
  TRISB=0xFF;
4
  while (1) {
5
    PORTB++;
6
  }
7
}

Kompilieren mit:

sdcc -mpic14 -p16f84a --opt-code-size  main.c
(Später macht da natüerlich ein Makefile Sinn)


ergibt ein main.hex file:
:020000040000FA
:0400000000000C28C8
:06000A00FF3083168600A2
:0A0010008312860A0828080005285C
:00000001FF

und ein main.asm file: (Nur ein Ausschnitt)
_main   ;Function start
; 2 exit points
;       .line   3; "main.c"     TRISB=0xFF;
        MOVLW   0xff
        BSF     STATUS,5
        MOVWF   _TRISB
00106_DS
;       .line   5; "main.c"     PORTB++;
        BCF     STATUS,5
        INCF    _PORTB,F
        GOTO    00106_DS
        RETURN
; exit point of _main


Hier sieht man übrigens auch eine Stelle, die der Optimierer besser
hätte machen können:

  BCF     STATUS,5

Wäre natürlich nicht in jedem Schleifendurchlauf nötig, würde einmal
vor der Schleife reichen.

/Ernst

von Schoasch (Gast)


Lesenswert?

MPLAB ist ja eigentlich nur eine IDE in dem man diverse Compiler und
Assambler einbinden kann. Wie zb.: CCS, IAR, PICC usw...

Achja.. gäbe es nicht vl einen kompatiblen PIC aus der PIC18F Reihe?
Dafür gäbe es den C18.Dieser ist frei erhältlich.

von Schoasch (Gast)


Lesenswert?

AChja... beachte auch die Errata. denn im MSSP-Modul steckt ein Wurm ;-)

von Paule (Gast)


Lesenswert?

Ist beim neuen MPLAB nicht sogar nen CCS Compiler dabei?
Ich weiß jetzt aber nicht welche PICs unterstützt werden oder
ob es irgendwelche beschränkungen gibt.

von Schoasch (Gast)


Lesenswert?

Nana der PCB-Compiler von CCS ist dabei. Der ist für die die
Baseline-PICs.
Hier kannst du nachsehen welche das sind:
http://www.ccsinfo.com/devices.php?page=devices

von PICer (Gast)


Lesenswert?


von Magic-Schnitzel (Gast)


Lesenswert?

Hallo Lukas,
ich hatte vor wenigen Wochen auch das "tolle" Erlebnis mich mit PICs
zu beschäftigen. Da ich bisher andere Controller immer in C
programmiert habe, wollte ich natürlich auch einen C-Compiler für den
zu verwendenden PIC. Leider (ich muss) verwende ich einen sehr kleinen
PIC (12F683), so dass der CCS Compiler ausfiel.
Bei der Suche nach Alternativen fand ich den CC5X Compiler.
Ich arbeite seitdem mit MPLAB und der CC5X Compiler lässt sich sehr
einfach integrieren. Dies heißt nun, dass ich in dieser
Entwicklungsumgebung mein C-Quellcode erstelle, diesen auch in C
debuggen kann und direkt meine Zielapllikation programmieren kann.
Mit einem kleinen Trick kannst du auch größeren Quellcode erzeugen (ist
in Freeware auf 1kB hex-file beschränkt).
Eine ausführliche Anleitung zum Compiler mit dem "C-Befehlssatz"
(kein ANSI C) ist als PDF verfügbar.

Ich hoffe ich konnte dir helfen und wünsch dir viel Spass beim (Jugend)
forschen.

von Lukas Häfele (Gast)


Lesenswert?

Hallo zusammen,

Danke erstmals für die zahlreichen Antworten.

Ich werde den MikroC Compiler einsetzen.

Es ist ein Demo mit einer 2K Beschränkung.

Konnte sonst keine weiteren Einschränkungen feststellen.

Die 2K werden aber mehr als gut für mein Projekt ausreichen.

mfg Lukas

von Tobias (Gast)


Lesenswert?

Ich hab vor einiger Zeit mal was an nem PIC16f877 gemacht und hatte da
den PICC Compiler mit MPLAB. Das ging recht gut. Wende dich doch mal
direkt an die Hersteller. Die sind, wenn es um studentische Arbeit oder
auch so was wie "Jugend Forscht" geht, nach meiner Erfahrung sehr
großzügig.

von Magic-Schnitzel (Gast)


Lesenswert?

Hallo Lukas,
ich möchte dir die MikroC IDE nicht ausreden aber einfach mal meine
Meinung dazu abgeben. Bevor ich den CC5X Compiler mit MPLAB IDE
benutzte (siehe obiges posting), stieß ich auch auf die MikroC IDE.
Jedoch hatte ich einige Probleme mit der IDE an sich, mit dem
(dürftigen) Debugger und das Programmieren (der Zielapllikation)
funktionierte auch nur über ein externes Programm.
Deshalb bin ich bei MPLAB mit CC5X compiler gelandet und bin zufrieden.
Die Vorteile dieser Kombination hatte ich oben schon aufgeführt.
Trotzdem viel Erfolg

von Tom Müller (Gast)


Lesenswert?

Hi Lukas,
Den CC5X Compiler nutze ich auch( in MPLAB). Kann ich Dir nur
empfehlen. Einige Hilfestellungen findest Du auf www.cc5x.de.
Ob der Compiler deinen PIC unterstützt, erfährst Du, indem Du nach
einem passenden Headerfile für deinen PIC im Headerordner suchst.
Bei einem 16Fxxx sollte es da eigentlich keine Probleme geben.

von Achim Gayer (Gast)


Lesenswert?

Lukas,

der CC5X Compiler hat auch mir bereits mehrfach gute Dienste
geleistet.
Produziert stabilen Code. Hatte den 16F877 eingesetzt.
Der MicroC ist noch ziemlich neu. Von den Jungs habe ich mal
das EasyPic Board gekauft. Das ist gut. Aber jetzt machen die wohl in
IDE Software. Da werden sich sicherlich noch ein paar Bugs finden.

von pjtec (Gast)


Lesenswert?

Hallo,
ich hab auch mit dem CC5X angefangen und finde ihn nach wie vor den 
besten Compiler. Auch die Integrierung in Editoren (Visual Studio, 
MPLAB) ist ziemlich einfach.
Der Vorteil des mikroC ist die wirklich umfangreiche 
Bibliothekensammlung, allerdings lässt die Handhabung und das Design der 
Entwicklungsumgebung zu wünschen übrig. Da sind die noch Jahre hinten.
Wenn ich einen Compiler kaufen würde, dann den CC5X (bin bisher mit dem 
Free-Editions ausgekommen und versuche mich jetzt mal mit AVR-GCC).
Grüße,

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.