Forum: Mikrocontroller und Digitale Elektronik PIC-Programmierung neu erlernen?


von Lt. Data (Gast)


Lesenswert?

Hallo zusammen!

Gleich vorweg, die Frage ist bestimmt schon 1000* gestellt worden,
habe sie aber hier nicht gefunden.
Und! Ich bin nicht so ganz der Foren-Typ. (Probieren geht über ..)

Ich bin normalerweise in der analog Elektronik tätig, stehe aber im 
Moment
vor dem Problem das ich die einzelnen Funktionen zur Veränderung einer
Kennline (je nach Temp.) nur unzureichend realisieren kann.
Erschwerend kommt noch hinzu daß das letztendliche Ausgangssignal
Impulsbreiten gesteuert ist.

Da ich mittelmäßig Kenntnisse in Basic und C habe, dachte ich mir das
dies vielleicht mit einem PIC realisierbar sein müßte.
Für einen Kunden verbauen wir den 16F676, ob der geht?
Bräuchte wahrscheinlich anal.-Eingänge für Fühler und Einstellregler.

Und der Hammer zum Schluß. Ich habe keinen Schimmer
wie ich jetzt anfangen soll!
Wie lauten die Befehle(Objekte) in den einzelnen Sprachen
zum Steuern der Ausgänge, in wie weit sind math. Algorythmen möglich?

Durchsuche das Internet schon lange, aber nichts gefunden.

Es muß doch möglich sein Information herzubekommen um auch von Null
sich das Wissen anzueignen.

Würde mich über Hilfe sehr freuen.

Danke!  Schon im Vorraus

von holger (Gast)


Lesenswert?

>Gleich vorweg, die Frage ist bestimmt schon 1000* gestellt worden,
>habe sie aber hier nicht gefunden.

Stell die Frage doch mal anders.

>Ich bin normalerweise in der analog Elektronik tätig, stehe aber im
>Moment
>vor dem Problem das ich die einzelnen Funktionen zur Veränderung einer
>Kennline (je nach Temp.) nur unzureichend realisieren kann.
>Erschwerend kommt noch hinzu daß das letztendliche Ausgangssignal
>Impulsbreiten gesteuert ist.

Ja, und?

>Da ich mittelmäßig Kenntnisse in Basic und C habe, dachte ich mir das
>dies vielleicht mit einem PIC realisierbar sein müßte.

Kein Problem.

>Für einen Kunden verbauen wir den 16F676, ob der geht?

Ja.

>Bräuchte wahrscheinlich anal.-Eingänge für Fühler und Einstellregler.

Mach dich da erst mal schlau. Brauchst du oder brauchst du nicht.

>Und der Hammer zum Schluß. Ich habe keinen Schimmer
>wie ich jetzt anfangen soll!

Ganz schlechte Vorbedingungen.

>Wie lauten die Befehle(Objekte) in den einzelnen Sprachen
>zum Steuern der Ausgänge, in wie weit sind math. Algorythmen möglich?

Es gibt nicht DIE Befehle.
Darfst du alles schön selber programmieren.

>Durchsuche das Internet schon lange, aber nichts gefunden.

Kein Wunder.

>Es muß doch möglich sein Information herzubekommen um auch von Null
>sich das Wissen anzueignen.

Lies das Datenblatt zum PIC. Da steht alles drin.

Programmieren musst du schon selber lernen.

von chris (Gast)


Lesenswert?

Hallo, schau dir mal den Basic Stamp I an. Einfache Befehle, und auch
große Codebase, wo schon vieles realisiert wurde.
Wenn du interesse hast, kann ich dir einen gratis Compiler dafür
mailen, nur der Befehl "pulsin" fehlt.

von Stefan (Gast)


Lesenswert?

Hier hast du was zu lesen:

http://www.mikroe.com/
http://www.sprut.de

von Hannes (Gast)


Lesenswert?

Hallo,

das Problem hat jeder mal, es ist die Frage wie man damit umgeht. Ein 
Tip zum strukturierten Arbeiten:

mache es wie bei einem Puzzle, erst den rand, dann den Inhalt. Alles was 
du schon wissen könntes strukturiert aufschreiben.

Welche anteile sind analog
Welche könnten digital sein
Vor allem wieviele
Was genau soll alles gemacht werden

Wenns möglich ist, würde ich dir eher einen avr als einstiegpunkt 
empfehlen. Vorteil: der Programmer ist günstiger, entwicklungsumgebung 
ausgegohrener, und es gibt eine Hochsprache (C) dazu, welche von 
Vorteil, bei einem Einstieg sein kann.

Gruß,
Hannes

von Peter D. (peda)


Lesenswert?

Lt. Data schrieb:
> Für einen Kunden verbauen wir den 16F676, ob der geht?

Weiß ich nicht, ich nehme AVRs.


> Bräuchte wahrscheinlich anal.-Eingänge für Fühler und Einstellregler.

Du bräuchtest erstmal Wissen, was das Ding überhaupt machen soll, also 
schreib es auf:
Was geht rein, welche Verarbeitung soll damit erfolgen, was geht raus.


> Und der Hammer zum Schluß. Ich habe keinen Schimmer
> wie ich jetzt anfangen soll!

Am besten wie alle, mit den Grundlagen:
LED einschalten, LED blinken, Tasten entprellen, UART, LCD, ADC, PWM, 
...


> Wie lauten die Befehle(Objekte) in den einzelnen Sprachen
> zum Steuern der Ausgänge

Die Peripherie eines MC ist üblicher Weise im Datenblatt beschrieben.
Alles geschieht über Register, die man lesen oder setzen kann.

Die AVR-Datenblätter finde ich sehr gut aufgebaut, man kann schnell und 
zielgenau die nötigen Register finden, welche Bits darin welche 
Bedeutung haben.

> in wie weit sind math. Algorythmen möglich?

In C gibts die Grundrechenarten und mathematische Funktionen (math.h).


> Durchsuche das Internet schon lange, aber nichts gefunden.

Das ist merkwürdig.
Tutorials über MCs und die C-Sprache gibts doch zuhauf.
Gleich hier gibts z.B. ein AVR-Tutorial.


Peter

von Thomas (Gast)


Lesenswert?

Wnn ihr schon PICs verbaut muss sich doch jemand damit auskennen?
Sprut.de ist eine gute Seite aber der arbeitet viel mit Assembler. Kommt 
drauf an ob dir das liegt.

von Sven P. (Gast)


Lesenswert?

Ich weiß auch nicht, was soll denn an einem PIC nicht gehen?

Gut, die Architektur und der Instruktionssatz bei den älteren und 
kleineren ist Hirnkrampf, da gibts günstigeres, auch preislich, aber das 
war halt damals so eingerichtet.

Warum sollten die denn nicht gehen?

von Peter D. (peda)


Lesenswert?

Sven P. schrieb:
> Ich weiß auch nicht, was soll denn an einem PIC nicht gehen?

Wie kommst Du darauf?
Das hat doch keiner behauptet.

Oder hast Du Dich im Thread geirrt?


Peter

von Sven P. (Gast)


Lesenswert?

Der Autor hat doch gefragt:
> Für einen Kunden verbauen wir den 16F676, ob der geht?

Naja..

von Meik D. (meik)


Lesenswert?

Mein persönlicher Favorit ist der Proton-Compiler. picbasic.org ist da 
die Adresse. Dort gibt es auch eine Demo Version mit glaube ich 40 
Zeilen Basic Code und 4 PIC's zur Auswahl. Da war der 16F876 dabei. Der 
Compiler unterstützt auch recht viel Mathematik. Versuch den doch mal. 
Ports lassen sich einfach schalten: portb.1=1, portc.5=0 usw. Ausserdem 
unterstützt der HW/SW-SPI, I2C, RS232 und SW-oneWire Bus.
Zur Zeit versuche ich mich außerdem an Bascom und den AVR's. Aber 
bequemer finde ich die Arbeit mit PIC und Proton.

Gruß Meik

von Gast XIV (Gast)


Lesenswert?

Einen Pic kannst du in basic programmieren (oder auch in C)

Assembler brauchst du in den seltensten fällen

Melabs oder Picbasic.org haben gute bis sehr compiler.
Demoversionen bis 50 Zeilen kann man runterladen. Die C development 
suite gibts von microchip für lau.

Ein Programmiergerät von microchip kostet keine 50 Euro

Analog (10 bit Auflösung) kein Problem der Befehl lautet Adin Kanal, 
Variable das war's.

Dein 16F676 hat 8 analoge eingänge, PWM gibt es in Software.

Der Rest ist machen und Datenblätter muß du immer erst lesen, dann 
verstehen dann benutzen.

von Lt. Data (Gast)


Angehängte Dateien:

Lesenswert?

Danke für die schnellen Antworten!

Hier mal mein Vorhaben (wenigstens Gedanklich):

Habe 4 Einstellregler   (-> 4 anal. Eingänge + 1x Temp-Fühler = 5)
Der Ausgang mein Impuls (Breiten gesteuert)

Regler 1 - 4 verändern die "Kurve" laut Zeichnung bzw.
R-1 den Punkt A
R-2 die ganze "Kurve"
R-3 den Punkt B
R-4 den Punkt B

Der Fühler selbst ist ein NTC und muß wahrscheinlich durch seine
krumme Kennlinie erst einmal linialiesiert werden.
Dürfte aber letztendlich kein Unterschied im Prg machen.

Wir verbauen den PIC zwar für einen Kunden aber mehr auch nicht.
Den Rest macht der Kunde alleine.

Das mit den Registern ist mir zwar logisch aber ich muß sie doch in 
einem
Prg. mit einem Befehl ansprechen.
-> Werte auslesen, in Variable speichern, nach Formel berechnen,
  Ergebnis dem Ausgang zuweisen.

Einen PIC zu programmieren kann doch nicht so Grundsätzlich verschieden 
sein als ob ich ein Prg für den PC schreibe. Oder?

Wenn ich so darüber nachdenke kann man fast Angst kriegen. AHHH

von Erich (Gast)


Lesenswert?

@ Lt. Data

Die Sache ist so trivial nicht.
Auch deswegen, weil man die Anforderungen deiner Anwendung erst klarer 
erarbeiten muss, um den geeigneten uC rauszusuchen.
Gerade die kleineren "PIC" sind äußerst gewöhnungsbedürftig um haben 
z.T. eigenwillige Einschränkungen, beispielsweise wenn man Tabellen (NTC 
Kennlinie) ablegen will.
Ohne jemand, der dich vorort profund unterstützen kann, wird das 
entweder nichts oder jedenfalls nur in grösseren Zeit, da reden wird 
eher von Monaten als von Wochen.
Ob das dann ein "PIC" oder ein anderer uC ist, wird sich zeigen.
Du brauchst jedenfalls jemanden, der schon funktionierende Entwicklungen 
mit einem uC ähnlicher Funktionalität entwickelt hat. Das Forum hier ist 
nicht ausreichend.

von Gast (. (reimay)


Lesenswert?

Einen PIC zu programmieren kann doch nicht so Grundsätzlich verschieden
sein als ob ich ein Prg für den PC schreibe. Oder?

Nur mal so ein Gedanke:

API - Docs sind die Axiome der PC- Programmierer.

Datenblätter sind die Axiome der µC - Programmierer.

von chris (Gast)


Lesenswert?

Willst du dir interaktiv die Kurve austesten ?

von Gast XIV (Gast)


Lesenswert?

In Hochsprache Basic oder C kann dir das ganze gefummel mit 
Besonderheiten völlig wurscht sein.


Eine NTC Lookup table ist ein Array und kann mit Data Ntctable [] so wie 
in jeder anderem Basic auch gespeichert werden und mit BitX = PortA.1 
kannst du jeden blöden Port einlesen ob nun beim Pic oder AVR oder Mac 
OS oder ZX81 sonstwas.

Was wo angeklemmt ist entscheidest du, die Hardware musst du halt 
lernen.

Die Angst ist quatsch, fang einfach an. Hier wird aber eher Atmel AVR in 
C supported.

von Lt. Data (Gast)


Lesenswert?

Oh je!

Hätte schon Probleme jemand in meiner Umgebung zu finden der
ein abgeschossenes Windows wiederbeleben kann. Naja fast.

Die Entwicklung als Analog Gerät hat auch schon Monate gedauert, dann 
kann ich doch jetzt nicht erwarten das ich das jetzt in wenigen Wochen 
realisiere.

Nein. Hier geht es um eine echte Regelung von einer Wassertemperatur.
Ausenfühler anschliessen und Ausgang ergibt laut Regler eine gewünschte 
Temperatur. Ach ja, und die Funktion von R-2 ist ein/aus schaltbar.

von gast (Gast)


Lesenswert?

und was möchtest du jetzt ?
Schau ins Datenblatt da steht alles drin.
Der rest mußt du im Compiler lesen, welchen du benutzt.
Jeder ist anders.
Und dann kannst du los legen mit dem Programmieren.
Empfehle dir, fang mit einer LED an. Diese zum blinken
bringen. Da hast du genug zu tun.

von hans (Gast)


Lesenswert?

Hallo LT. Data,

das mit der Regelung ist nicht direkt für den Einstieg
geeignet aber machbar.

Nur die Kurve verschieben ist dabei nicht der optimale
Ansatz, eine richtige Regelung sollte es schon sein.
Hier mal Regelungen, du siehst auch den Zusammenhang zu
den analogen Schaltungen:
http://www.rn-wissen.de/index.php/Regelungstechnik

Auch der Temperaturfühler ist mit einem µC leicht auszuwerten.

Da du nicht auf PIC festgelegt bist kannst du dir ja
erst einmal einen µC mit Hard- und Software aussuchen.
Hier wird Atmel und C bevorzugt, bei RoboterNetz
(http://www.rn-wissen.de/index.php/Hauptseite) etwas mehr Basic.
Es gibt auch Foren für PIC, H08 etc.

Dann stückweise starten also LED blinken, dann Temperaturmessung...

Dann ist auch der Regler machbar;)

avr

von Meik D. (meik)


Lesenswert?

Warum legst du dich eigentlich so auf den NTC mit seiner besch... 
Kennlinie fest? Ein DS18S20 liest die Temperatur von -55 bis +125 °C ein 
und die ist mit wenigen Befehlszeilen im Basic Compiler eingelesen. Das 
Ding kostst bei Pollin z.B. 2,50€

Meik

von Flowcoder (Gast)


Lesenswert?

Hallo ,

ich muss ganz ehrlich sagen dass ich mit den Atmels nie so wirklich warm 
geworden bin .
Ich nutze auch lieber die PICs und zum programmieren Flowcode V4.
Die Programmiersprachen sind mir alle zu komplex um ein paar einfache 
Programme zu schreiben .
Dazu kommt nicht dass man die Syntax genau im Kopf haben muss, macht man 
ein Zeichen falsch , geht gleich garnix mehr . Da ich nur ab und an mal 
etwas einfaches steuern möchte , ist Flowcode eine wirklich gute 
Alternative .
Mir ging es ähnlich als ich das erste Projekt mit einem Mikrocontroller 
machen wollte. Keine Ahnung davon und vom Programmieren ebenfalls nur 
sehr wenig .
Im Flowcode muss man einfach einen Programmablaufplan zeichnen und schon 
hat man fast das fertige Programm .
Dass es nicht flexibel sei ist eine Lüge .
Man kann auch C-Code oder Assembler mit einbauen und es gibt viele 
fertige Bibliotheken .

Natürlich muss man auch hier wissen was der µC kann und was nicht .
Als Entwicklungsumgebung hab ich mir die E-Blocks nachgebaut , natürlich 
angepasst auf meine Projekte .
Wer nicht wirklich im Controller leben möchte und nur ab und an zum µC 
greift , hat mit diesem Programm die meiner Meinung nach die beste 
Alternative zum Rest .

Was auch gut zu beherrschen ist , ist der CCS Compiler für die PICs , 
wenn auch etwas teurer .
Allerdings muss man da natürlich C beherrschen .

von Maik W. (werner01)


Lesenswert?

servus,

wenn du so der analoge bist ,warum machst du das nicht mit op'v?

Bei deinem Vorhaben einen pic16f zu nehmen ,wäre da wohl "picbasic" oder 
so was der kürzeste Weg zum erfolg. ich kann aber auch mplab empfehlen, 
ist auch kostenlos!

von Lt. Data (Gast)


Angehängte Dateien:

Lesenswert?

Schön wenn man sieht wie viele einem helfen wollen. Danke!

Bin sicherlich nicht auf den PIC festgelegt, wäre nur schön wenn wir den
gleichen Typ wie unser Kunde nutzen könnten.

Das mit dem NTC geht leider nicht anderst der ist bereits verbaut.

Der Regler selbst ist wieder eine Neuauflage bzw. Neuentwicklung.
Die alten Pläne existieren nicht mehr so das wir ihn nicht nachbauen 
können. Kennen also auch nur das was ich bereits genannt hatte.
Habe es bereits mit OP's versucht nur leider bekomme ich den Verlauf
laut Kennlinie nicht richtig hin.
Da z.B. mit dem Regler 1 & 4 sowohl der Start,- Endpunkt wie auch die 
Verstärkung zu ändern sind. (Siehe neue Anlage)

Ich hatte mir schon einige Compiler runtergeladen.
mplab u. Pic-Basic sind auch dabei. Auch habe ich schon ein Programmer.
Brauche nur noch den Adapter für den Anschluß.
Nur eben die "Befehle" fehlen mir.
Denke aber die Idee mit einer LED ist nicht schlecht.
Dieses Beispiel ist bei den Compiler teilw. dabei.

von Gast (Gast)


Lesenswert?

Lies dir doch erst mal die Grundlagen zu den PICs bei sprut.de durch. 
Die Beispiele sind zwar meist in Assembler aber das Verständnis zur 
Arbeitsweise der PICs, Speicheraufbau, Bedeutung der Register, Timer, 
ADC, Interupt etc. wird dort gut erklärt. Und wenn man das verstanden 
hat, findet man auch schnell in die Programmierung rein. Du bist bei 
einem µC sehr hardwarenah egal in welche Sprache du die programmierst. 
Das Grundverständnis muss erst mal da sein. Eventuell kommst du ja auch 
mit Assembler zurecht, dann kannst du dein Projekt ja in dieser Sprache 
programmieren. 5 analoge Eingänge und PWM ist kein Hexenwerk, auch nicht 
in Assembler. Du benötigst aber ein paar Wochen/Monate um dich da 
einzuarbeiten.

Ein reines PIC-Forum wäre noch http://www.fernando-heitor.de

von DAC (Gast)


Lesenswert?

@Haku
>Gut, die Architektur und der Instruktionssatz bei den älteren und
>kleineren ist Hirnkrampf, da gibts günstigeres, auch preislich, aber das
>war halt damals so eingerichtet.

Der erste Teil ist weitgehend subjektiv, der Zweite schlicht falsch wenn 
du dich nicht auf Stückzahlen beziehst. Richtig ist das Preis-Argument 
nur bei Kleinstmengen.

von Maik W. (werner01)


Lesenswert?

so jetzt will ich doch mal den hilfebedürftigen ein wenig Mut machen.

so du nimmst den Pic und legst im mplab ein Projekt an.
Mit assembler ist das bestimmt gut zu schaffen sind ja nur 35 Befehle.

den internen Oszillator wählen und erst mal kein memoryprotect. das 
alles geht bei mplab im letzten menupunkt.

und jetzt fängst du mit deinem Programm an.zb:

org(0)

goto   _reset            ;sprungbefehl

org(4 o. 8)              ;das ist die inerruptadresse

bla bla

_reset:

movlw    b'00110011'    ;lade die zahl ins Arbeitsregister
movwf    TRISA          ;schreibe von arbeitsregister in 
Portkonf.-Register
                        ;in TRISA wird auf digital Ein. oder Ausgang
                        eingestellt.


und immer so weiter

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.