PIC-Programmierung: Anfänger braucht Hilfe

Gast #2276319
Lesenswert?

Hallo,
ich möchte ein einfaches C-Programm schreiben für den PIC 12F675.
Habe MPLab installiert, und sowohl den HIGH-TECH-Compiler als auch den 
CCS-Compiler(Demo).
Ich bin ganz neu auf dem Gebiet, also bitte nicht über meine Fragen 
wundern. Hier ist der Code meines bisherigen Programms:
1
#include "12F675.h"
2

3
while(TRUE)
4
{
5
Output_high(PIN_A0);
6
Output_low(PIN_A1);
7
Output_high(PIN_A2);
8
Output_low(PIN_A5);
9
}
10
}


So lässt es sich auch compilieren (zumindest mit dem CCS-Compiler), 
funktioniert aber noch nicht. Es fehlt wahrscheinlich noch die 
Konfiguration des PICs, aber wie mach ich das? Viele 
Konfigurationsbefehle, die ich im Internet gefunden habe, sind dem 
Compiler unbekannt. Überhaupt kennt der Compiler kaum einen Befehl, also 
irgendwas stimmt da noch nicht. Braucht man noch andere Header-Dateien?

Könnt ihr mir helfen?
#2276335
Lesenswert?

Normalerweise dürfen in C implementierungen doch nur in Funktionen sein, 
oder ist das hier anders?

Versuche mal um die While-Schleife die "main"-Funktion zu schreiben. 
Dann müsste das auch kompilieren. Die Konfiguration stellst du in MPLAB 
direkt ein - in der Menüleiste unter "Configure"->"Configuration 
Bits..."

Das Häkchen bei "Configuration Bits set in code." entfernen und in dem 
Fenster dann die Einstellungen vornehmen.
Gast #2276357
Lesenswert?

Ups, das mit dem
1
void main() { }
 hatte ich versehentlich rausgeschnitten, das habe ich drin.

Wenn ich bei den Configuration Bits was umstelle, stellt sich das beim 
compilieren automatisch zurück! Ich müsste doch wahrscheinlich bei den 
Oscillator Bits auf INTOSC umstellen, oder?
Gast #2276394
Lesenswert?

Picky schrieb:
> Ich bin ganz neu auf dem Gebiet, also bitte nicht über meine Fragen
> wundern.


Nein Picky, wundern tue ich mich nicht, aber ärgern.

Du bist also ganz neu auf dem Gebiet und fängst als allererstes an, 
irgendein C-Programm zu schreiben. Lies dir lieber die Doku zu dem 
Controller durch, lerne wie das Ding von INNEN funktioniert, lerne 
dessen Assemblersprache, lerne, wie die grundlegenden Dinge wie Ports, 
Register, Bits in den Registern, Registerseiten und so weiter 
funktionieren - aber fang nicht als allererstes so ein C-Programm an und 
frag dann den anderen ein Loch in den Bauch, bloß weil es dir zu 
mühselig ist, das was du eigentlich wissen solltest SELBST zu erlernen.

W.S.

Manchmal wünch ich mir, daß ein jeder, der irgend etwas in irgendeiner 
verdammten Programmiersprache zusammenschreiben will, erstmal eine Runde 
in Assembler zu absolvieren hätte, damit er lernt, auf was für einer 
Basis er sich überhaupt zu bewegen gedenkt.
Gast #2276456
Lesenswert?

Okay, danke! Jetzt klappts fürs erste.
Habe zum einen die Pins als Ausgänge definiert, zum anderen musste ich 
bei der Konfiguration nach dem Kompilieren und vor dem Brennen auf den 
internen Oszillator umstellen.
Gruß
Gast #2276460
Lesenswert?

Oh, da sind ja noch neue Antworten dazugekommen.
@W.S. Im Grunde hast du Recht, aber wenn man schon C-Erfahrung hat, aber 
noch nie was mit Assembler zu tun hatte, bleibt man halt lieber bei C.
Wenn ich ein komplizierteres Projekt versuchen sollte, dann werd ich mir 
das auch mit Assembler versuchen.
#2276526
Lesenswert?

Picky schrieb:
> @W.S. Im Grunde hast du Recht, aber wenn man schon C-Erfahrung hat, aber
> noch nie was mit Assembler zu tun hatte, bleibt man halt lieber bei C.

Es sagt ja auch niemand was gegen C aber du sollst das ganze richtig 
lernen und nicht so einen Schmarren produzieren. Nimm ein vernünftiges 
Buch und lies es von der ersten Seite ab und gib dich nicht der Illusion 
hin dass du das nicht brauchst.

Picky schrieb:
> Wenn ich ein komplizierteres Projekt versuchen sollte, dann werd ich mir
> das auch mit Assembler versuchen.

Das glaube ich eher weniger. Assembler muss man von der Pike auf lernen, 
oder man wird nie ein vernünftiges Programm schreiben. Wenn du ein 
einigermaßen komplexes Projekt (beispielsweise mit LCD-Display und 
Menüführung) realisieren willst, so kannst du das mit C nach geschätzten 
2 Wochen, jeden Tag PIC Programmieren lernen, vernünftig lösen. Für 
Assembler brauchst du sicherlich mehr als 2 Jahre Assemblererfahrung 
bevor du überhaupts an sowas denken kannst. Abgesehen von dem graußamem 
Programmierstil und gänzlicher Ineffizienz der Programme den Unerfahrene 
verursachen.
Gast #2278604
Lesenswert?

Klingt zwar alles ziemlich hart und rau, aber Recht haben sie da;) Es 
gibt ja schließlich auch Dinge, die man in C schreiben muss, obwohl es 
beim normalen C für den Computer vielleicht nicht gebraucht wird.

Und als kleiner Tipp. Wenn du nochmal eine Frage hast und einen Code 
hast (egal ob ASM, C oder sonstwas), poste den KOMPLETTEN Code. Wenn er 
zu lang ist, häng ihn als Datei an. Bei >50% der Fälle, wo jemand eine 
Frage zu seinem Code hat, ergeben sich Missverständnisse oder es wird in 
die falsche Richtung nach Fehlern gesucht, nur weil nicht der ganze Code 
vorlag. Resultat ist dann meist genervte Helfer, rauer Ton, gemotze usw. 
Und bei den Fragen, wo ich mal mitgelesen oder geholfen habe, wird es 
definitiv keine kommerzielle Anwendung sein, sodass der Sourcecode 
Geheim gehalten werden muss.
Ich muss zugeben bei meinen Code auch den Fehler gemacht zu haben. Ich 
hab einfach gedacht, ich poste den Programmteil, der nur laufen dürfte, 
damit sich nicht alle die 300 Zeilen angucken müssen, obwohl nur 20 
"wichtig" sind. Und siehe da, der Fehler war wo ganz anders.
Gast #2278618
Lesenswert?

Schaue dir mal die Seite von Sprut (www.sprut.de) an. Da werden die PICs 
von der Pike an erklärt, Grundlagen, Ports, Oszi, Hardwaremodule und vor 
allem die Assemblerprogrammierung. Meiner Meinung nach sollte jeder 
uC-Programmierer Assembler-Grundlagen für den verwendeten Controller 
besitzen. Nur so versteht man die internen Abläufe und weiß auch bei der 
Fehlersuche, was das Programm gerade macht und wo die Fallstricke sind.
Gast #2287158
Lesenswert?

Hallo, Picky,
PICs in C programmieren zu wollen, heißt, den zweiten Schritt vor dem 
ersten machen. In Assembler gibt es lediglich 32 Befehle, die man 
schnell drauf hat. Der entscheidende Vorteil der 
Assembler-Programmierung ist aber, dass man sehr hardwarenah operiert, 
und dadurch das Funktionieren des Mikrocontrollers bestens verstehen 
lernt. Die Webseite sprut.de ist empfehlenswert und kostenlos. Ich habe 
im vorigen Jahr das Buch
" Programmieren von Mikrocontrollern" (In Assembler) geschrieben, von 
dem ich noch einige Belegexemplare rumliegen habe. Wenn Du willst, 
schenke ich Dir so eins. Meine E-Mail-Adresse: dieter.kohtz@t-online.de. 
Das Buch bezieht sich zwar auf den PIC 16F84A, aber zum Verwenden eines 
anderen Midrange-Typs muss man sich ohnehin mit dem zugehörigen 
Datenblatt vertraut machen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren