Forum: Mikrocontroller und Digitale Elektronik Einfache PIC-IDE für Anfänger


von Jonas G. (fallobst)


Lesenswert?

Hallo,
ich suche eine einfache und unkomplizierte IDE zur Programmierung von 
PIC Mikrocontrollern. C-Code rein und Hexfile raus. Am besten noch unter 
Debian lauffähig. Wenn es nur unter Windows läuft ist das auch nicht 
schlimm. Kennt da jemand was?

Vielen Dank
fallobst

von Peter II (Gast)


Lesenswert?

warum dann dann eine IDE?

Ein Compiler macht das was du suchst.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Wieso nicht MPLab von Microchip?

von Max H. (hartl192)


Lesenswert?

Ich habe zum Anfange eine Demo von mikroC for PIC verwendet, bin dann 
aber zu MPLAB IDE mit C18 gewechselt, weil mikroC keine Quelloffenen 
Bibliotheken hatte, man direkt vom MPLAB aus mit dem PICkit 
programmieren kann und die dem von mikroC eine Codegrößenbeschränkung 
hat. MikroC hat aber den Vorteil für Anfänger, dass die ganzen 
Bibliotheken in der Hilfe gut und auch mit Beispielen dokumentiert sind 
und dass man die config nicht im Code eingeben muss, sondern in einem 
Fenster mit einigen Dropdown-Listen auswählen kann.
Ob die Software unter Debian läuft habe ich keine Ahnung.

Ich würde aber direkt in MPLAB einsteigen. Ich würde jetzt nicht MPLAB 
und C18 nehmen, sondern den Nachfolger MPLABX IDE mit dem XC8 Compiler.
Hier ein Tutorial:
http://pic-projekte.de/wiki/index.php?title=PIC_C_Tutorial
Darin steht auch viel zu C selbst, wenn du da schon kannst, kannst du 
diesen Teil überspringen und dich nur mit dem PIC spezifischen Teil 
beschäftigen.

Hier steht, dass MPLAB X IDE auch unter Linux läuft:
http://www.microchip.com/pagehandler/en-us/family/mplabx/

: Bearbeitet durch User
von Max H. (hartl192)


Lesenswert?

Nachtrag:
Beim MPLAB X IDE kann man sich die configs generieren lassen.

von Johannes (Gast)


Lesenswert?

Hier gibt es übrigens eine neue Version des PIC-Tutorials:
http://pic-projekte.de/wordpress/?p=133

Scheinbar wird dort gerade das CMS System gewechselt..

Schönen Gruß, Jo

von Johannes (Gast)


Lesenswert?

...und hier das PIC-Tutorial (nicht C) dazu:
http://pic-projekte.de/wordpress/?p=31

von A+B = C (Gast)


Lesenswert?

Jonas G. schrieb:
> ich suche eine einfache und unkomplizierte IDE zur Programmierung von
> PIC Mikrocontrollern.

Mikroe C compiler. Bis 2k Codegröße for free.

Funzt gut, Biblitheken und Beispiele sind praxisnah und Support ist auch 
ok

Eine durchgängige Serie von simpel Pic bis dsPic, ARM und AVR

Nachteil für dich: nur Windows, für mich: Macht süchtig weil so schön 
einfach

von Jonas G. (fallobst)


Lesenswert?

A+B = C schrieb:
>
> Mikroe C compiler. Bis 2k Codegröße for free.
>
> Funzt gut, Biblitheken und Beispiele sind praxisnah und Support ist auch
> ok
>
> Eine durchgängige Serie von simpel Pic bis dsPic, ARM und AVR
>
> Nachteil für dich: nur Windows, für mich: Macht süchtig weil so schön
> einfach
Das Programm wirkt bis jetzt recht gut. Vor allem ist es einfach. Vielen 
Dank!! Kennst jemand eine Funktion, mit der man die Laufzeit des 
laufenden Programms ermitteln kann?

Vielen Dank auch an alle anderen, die mir geantwortet haben. Auch die 
Varianten werde ich spätestens wenn 2k Codegröße voll sind testen.

von Max H. (hartl192)


Lesenswert?

Jonas G. schrieb:
> Kennst jemand eine Funktion, mit der man die Laufzeit des
> laufenden Programms ermitteln kann?
Was meinst du damit? Wie lange das Programm dann auf dem PIC brauch?

von Jonas G. (fallobst)


Lesenswert?

Am Arduino gibt es die millis() Funktion, mit der man die Laufzeit des 
aktuellen Programms seit Aktivierung des Controllers auslesen kann. Das 
kann für Zeitmessung recht sinnoll sein. Ich suche so eine Funktion, 
oder eine andere Möglichkeit, Zeitmessung zwischen zwei Ereignissen zu 
betreiben.

: Bearbeitet durch User
von Max H. (hartl192)


Lesenswert?

Jonas G. schrieb:
> Ich suche so eine Funktion,
> oder eine andere Möglichkeit, Zeitmessung zu betreiben.
Beim MPLAB mit XC8 gibt es die nicht, bei microC weiß ich's nicht, ich 
denke aber, dass es sie nicht gibt. Wenn ich so etwas brauche, würde ich 
je nach erforderlicher Auflösung einen Timer z.B. jede Millisekunde 
überlaufen lassen und eine lange Variable (z.B. 32bit) bei jedem 
Überlauf incrementieren.
Wenn di jetzt aber z.B. Hundertstelsekunden Messen willst würde ich nur 
alle 10ms ein Interrupt erzeugen lassen, um Rechenzeit zu sparen.

: Bearbeitet durch User
von A+B = C (Gast)


Lesenswert?

Jonas G. schrieb:
> Das Programm wirkt bis jetzt recht gut. Vor allem ist es einfach. Vielen
> Dank!! Kennst jemand eine Funktion, mit der man die Laufzeit des
> laufenden Programms ermitteln kann?

F9 Drücken dann läuft der Simulator.

Da kannst du dir alle Zeiten anschauen und auch einzeln durchsteppen 
(außer wenn die Software auf einen Eingang wartet).

von A+B = C (Gast)


Lesenswert?

Jonas G. schrieb:
> Am Arduino gibt es die millis() Funktion, mit der man die Laufzeit des
> aktuellen Programms seit Aktivierung des Controllers auslesen kann. Das
> kann für Zeitmessung recht sinnoll sein. Ich suche so eine Funktion,
> oder eine andere Möglichkeit, Zeitmessung zwischen zwei Ereignissen zu
> betreiben.

Du brauchst doch nur Zählerstand irgendeines Timers deiner Wahl 
auszulesen und vom letzten gelesenen Wert abzuziehen (bei Überlauf halt 
noch den Maxwert des Timers dazuaddieren).

Das funzt mit jedem Controller (mit Timer natürlich).

Alles andere hat Mikroe auch schon für dich erledigt

http://www.mikroe.com/timer-calculator/

und nicht nur für Pic.

von Max H. (hartl192)


Lesenswert?

A+B = C schrieb:
> http://www.mikroe.com/timer-calculator/
Ich wusste gar nicht, dass dafür ein Tool gibt/brauch

von A+B = C (Gast)


Lesenswert?

M. H. schrieb:
> Ich wusste gar nicht, dass dafür ein Tool gibt/brauch

das ist so ca. der zehnte timer calculator den ich nutze.

Bei diesem tCalcer kopierst du den Beispielcode nur in den Compiler 
(natürlich vorzugsweise der vom Hersteller) und bist fertig.

Incl Interrupt handlig und Wertegefummel / Taktfrequenz.


Macht das mal mit der Hand (oder selber in C).

von Max H. (hartl192)


Lesenswert?

A+B = C schrieb:
> Macht das mal mit der Hand (oder selber in C).
Habe es in C und in ASM schon ein paar Mal gemacht. Wobei es in ASM 
einfacher ist, da ich genau weiß wie lange die Kontextsicherung braucht.

Zurück zum Thema:
M. H. schrieb:
> Wenn ich so etwas brauche, würde ich
> je nach erforderlicher Auflösung einen Timer z.B. jede Millisekunde
> überlaufen lassen
Man könnte auch den Timer-Prescaler dann so einstellen, dass der Timer 
jede Millisekunde weiterzählt und wenn das nicht möglich ist den nächst 
kleineren mögliche Wert verwenden. Man müsste dann nur die Überläufe 
mitzahlen, das  verringert die CPU Belastung.

: Bearbeitet durch User
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.