Forum: Mikrocontroller und Digitale Elektronik wie werden genau i/o pins programmiert?


von Gerrit L. (ethan)


Lesenswert?

aloha ihrs...

bis vor kurzem habe ich msp430 in assembler programmiert, aber jetzt 
mache ich ein praktikum und soll einen lpc2378 programmieren. das board 
ist folgendes: 
http://www.thaieasyelec.com/Development-Tools/Development-Board/ARM/ARM7-LPC2378-BlueScreen.html

und damit soll ich das proggen: Keil uVision4
ausserdem habe ich noch das mp3- und das breakout-board dazu. gibts auch 
auf der seite.

leider habe ich von c++ ueberhaupt keine ahnung und im manual steht auch 
nix gescheites drin. also falls sich jetzt wieder jemand aufregt. da war 
das bei ti doch viel besser. da konnte man mit den user's guides 
wenigstens was anfangen. ausserdem kann ich mit den beispielen auch 
nichts anfangen. ich wollte das gern von anfang an lernen und auch gern 
verstehen. gibt es ein gutes buch oder irgendwelche unterlagen wie das 
genau bei dem mc geht? die register sind auch duerftig beschrieben finde 
ich.


ueber etwas hilfe wuerde ich mich sehr freuen.

bis denne g.

von GST=! (Gast)


Lesenswert?

also ich denke ist nicht viel anders als beim MSP

hier das Datenblatt

http://ics.nxp.com/support/documents/microcontrollers/pdf/user.manual.lpc23xx.pdf

auf Seite 172 findest du die jeweiligen Register für ein GPIO.

DIR legt fest ob Eingang /Ausgang

Und bei IOSET kannst du den Ausgang dann LOW/HIGH setzen

Denke wenn du das Datenblatt ließt wird einiges klarer.

Die Sprache ist allerdings C, wie bei den meisten µC

von Rechner... (Gast)


Lesenswert?

Immer diese Praktikanten... also erst lesen, suchen, lesen, verstehen, 
lesen, verzweifeln.... DANN erst DANN fragen
... hier mal was zu lesen:
http://www.nxp.com/#/pip/pip=[pip=LPC2377_78]|pp=[t=pip,i=LPC2377_78]

Übrigens die Beispiele deiner Inder Page sind alle in C Programmiert... 
was sonst... :)

von rantanplan (Gast)


Lesenswert?

Rechner... schrieb:
> Übrigens die Beispiele deiner Inder Page sind alle in C Programmiert...
> was sonst... :)

Schaut mir mehr nach thailändisch aus...

von Jörg S. (joerg-s)


Lesenswert?

Wegen C, würde ich mal hier schauen:
http://de.wikibooks.org/wiki/C-Programmierung

Die I/Os werden im Grunde genau so programmiert wie auch beim MSP. Es 
gibt Register für die Richtung (FIOxDIR), eins für die Daten (FIOxPIN), 
Register für die Funktion (PINSELx) usw.
Etwas komplizierter wird es halt weil das Teil Open Collector Ausgänge 
und Pull-Up/Downs hat. Da kommen deswegen dann noch einige Rigister 
hinzu.

von Lehrmann M. (ubimbo)


Lesenswert?

Gerrit L. schrieb:
> leider habe ich von c++ ueberhaupt keine ahnung

Abgesehen davon, dass es wohl kaum C++ sein wird: Dann musst du halt C 
lernen. Ist nicht so schwer. Aber man muss halt arbeiten. Ohne Fleiß 
kein Preis.

Gerrit L. schrieb:
> im manual steht auch
> nix gescheites drin.

Das wage ich zu bezweifeln. Dass da nicht drin steht wie man C 
programmiert ist ja auch klar. Sowas kann man getrost vorraussetzen wenn 
man sich mit Mikrocontrollern beschäftigt. Auch wenn div. Anfänger immer 
wieder versuchen das zu widerlegen. Geschafft hat's noch keiner.

Gerrit L. schrieb:
> ausserdem kann ich mit den beispielen auch
> nichts anfangen.

Kannst du kein C kannst du auch die Beispiele nicht verstehen.

Gerrit L. schrieb:
> ich wollte das gern von anfang an lernen und auch gern
> verstehen. gibt es ein gutes buch oder irgendwelche unterlagen wie das
> genau bei dem mc geht?

Ein sehr guter Ansatz. Zuerst mal muss man ANSI-C (ganz normales C 
beherrschen). Das macht man am besten mit einem Buch: 
http://openbook.galileocomputing.de/c_von_a_bis_z/
Dieses ist sehr bekannt. Gibt's auch online wie du dem Link entnehmen 
kannst.
Wenn man C kann dann kann man darüber nachdenken auf den Microcontroller 
umzusteigen.

Gerrit L. schrieb:
> die register sind auch duerftig beschrieben finde
> ich.

Es steht alles drin was man braucht. Es ist ein Datenblatt und kein 
Roman. Es gibt kurze & prägnante Informationen.


Viel Erfolg

von Gerrit L. (ethan)


Lesenswert?

hey das sind doch schon mal einigermaßen gute ansätze.
die datenblätter habe ich schon und die register sind dort zwar 
angegeben, aber eben nicht so gut wie bei ti. das war in assembler viel 
leichter und dort waren auch immer gleich programmierbeispiele. das 
konnte man immer gut einfügen. richtig, das ist thai, denn da bin ich 
für 3 monate und das ist auch mein problem. die wollen, dass ich das 
progge und die haben gesagt in c++. ich hatte das zwar mal im 1. 
semester, aber auch nur oberflächlich und jetzt komme ich eben nicht 
damit klar, wie ich das teil in c proggen soll. hätte man auch an meinem 
link erkannt www.thai.... :) also nix inder. heehee
im netz habe ich auch kein gutes tutorial gefunden, um mal eben schnell 
einen einstieg in c zu bekommen ;) jaja, ich weiß das ist ein langer, 
harter weg, dass lernt man nicht so schnell usw. gg

trotzdem ist dieses forum ja mal richtig gut. da bekommt man wenigstens 
schnell ein paar antworten.

übrigens wollte ich noch ein paar sonnige grüße loswerden. gestern habe 
ich gefroren, da waren nur 28°C.

bis denne g.

von Jörg S. (joerg-s)


Lesenswert?

Gerrit L. schrieb:
> jaja, ich weiß das ist ein langer, harter weg, dass lernt man nicht so
> schnell usw. gg
Also wenn du Assembler kannst, ist C doch ein Klacks. 1000x einfacher :)

von Gerrit L. (ethan)


Lesenswert?

das sagen alle, aber das glaube ich nicht so recht. sonst müsste ich das 
ja hinbekommen, aber ich peil da nix. also wie man mit c überhaupt auf 
die register zugreift usw.

g.

von Lehrmann M. (ubimbo)


Lesenswert?

Jörg S. schrieb:
> Gerrit L. schrieb:
>> jaja, ich weiß das ist ein langer, harter weg, dass lernt man nicht so
>> schnell usw. gg
> Also wenn du Assembler kannst, ist C doch ein Klacks. 1000x einfacher :)

Da muss ich klar widersprechen. Assembler programmieren kann jeder - die 
frage ist nur wie gut. Das anspruchsvolle am Assembler programmieren ist 
effektiv zu bleiben.

Gerrit L. schrieb:
> das sagen alle, aber das glaube ich nicht so recht. sonst müsste ich das
> ja hinbekommen, aber ich peil da nix.

Das liegt aber daran, dass du noch nicht so recht programmiert hast.

Gerrit L. schrieb:
> also wie man mit c überhaupt auf
> die register zugreift usw.

Das bestätigt meinen Verdacht ... Mal ehrlich du hast doch noch keine 
Zeile programmiert ...

Alle Ein und Ausgäng sind wie bei jedem Mikrocontroller mit einem sog. 
SFT (Special Function Register) verbunden.
Je nach dem welchen Wert man in das Register schreibt werden 
entsprechende Pins z.B. high bzw. low

Registername = Wert;

z.B.

Ausgangsregister1 = 208;

Preisfrage: Welche Pins sind jetzt high und welche low ?

von Jörg S. (joerg-s)


Lesenswert?

Lehrmann Michael schrieb:
> Jörg S. schrieb:
>> Also wenn du Assembler kannst, ist C doch ein Klacks. 1000x einfacher :)
> Da muss ich klar widersprechen. Assembler programmieren kann jeder - die
> frage ist nur wie gut.
Es ging nicht darum ob das jeder kann, sondern ob es einfacher ist :) 
Wobei ich auch noch niemanden gesehen habe der an C verzweifelt ist.

von Jörg S. (joerg-s)


Lesenswert?

Gerrit L. schrieb:
> also wie man mit c überhaupt auf die register zugreift usw.

Beispiel aus der Paxis für Pin auf high/low an P0.0:
1
FIO0DIR |= 0x00000001; // P0.0 auf Ausgang, setzen von BIT0 in Register FIO0DIR 
2
3
FIO0SET = 0x00000001; // P0.0 auf high
4
FIO0CLR = 0x00000001; // P0.0 auf low
5
6
// Alternativ mit PIN Register:
7
FIO0PIN |= 0x00000001; // P0.0 auf high
8
FIO0PIN &=~0x00000001; // P0.0 auf low, löschen von BIT0 in Register FIO0PIN

von Peter D. (peda)


Lesenswert?

Dieser Würg-Around mit den Set- und Clear-Registern, um Bits atomar zu 
ändern, ist so ziemlich das schlimmste, was NXP da verbrochen hat.

Wie schön einfach und effizient ist das doch beim guten alten 8051 
gelöst:
SETB Portpin
CLR Portpin
CPL Portpin
JBC Portpin
ANL Portregister
ORL Portregister
XRL Portregister

Der Silabs 8051 kann sogar schneller mit den Pins wackeln, als ein 
ARM7-LPC.


Peter

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.