www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I/O Pin beim LPC2294


Autor: Hotte Meyer (marvinthevirus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich habe einen LPC2294 und programmiere mit uVersion3 von Keil. Wie man 
einen Ausgang belegt und beschaltet ist kein Problem. Aber wie mache ich 
es bei einem Eingang?
Ich möchte einen Eingang auf den Zustand high in einer if-Anweisung 
abfragen.
Und wie kann ich den diesen Eingang im Debugmodus bei Keil setzen.

MFG
Hotte

Autor: Robert Teufel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hotte,

wenn Du weisst wie man die Port als Ausgang programmiert, dann tue genau 
das nicht ;-) Default nach Reset ist Eingang. All die Bits, die gesetzt 
werden in IODIR bleiben eben low (0). Dann ist der Eingang hochohmig. 
Der High-pegel muss somit von aussen getrieben werden und mehr als den 
max. leakage (ich glaub das war 1 uA), treiben koennen.

Hoffe das hilft ein wenig, Robert

Autor: Hotte Meyer (marvinthevirus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort Robert,
aber irgendwie habe ich jetzt ein Verständnisproblem. Ich dachte mit 
IODIR setze ich einen PIN als Ausgang und wenn ich IODIR nicht sezte 
habe ich einen Eingang. Mit welchem Befehl rufe ich diesen Eingang denn 
nun auf? Ich steh im Moment auf dem Schlauch.

Autor: let (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
IOPIN ist dafür zuständig.

Um zu prüfen ob z. B. P0.3 auf high liegt kannst du folgendes
schreiben:
if (IO0PIN & (1 << 3))
{
}

Autor: Hotte Meyer (marvinthevirus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also langsam habe ich nun doch Verständnisprobleme mit dem Eingang beim 
LPC2294.

Wenn ich nun Port14 abfragen möchte befindert der sich doch bei Pinsel0 
und ist im 4 Byte die bits 6 und 7.
Ich habe keine Ahnung wie ich dieses denn dann schreiben soll und 
abfragen soll.

...
if (( IOPIN0 &(4 << 6)) && (( IOPIN0 &(4 << 7)))
{
;
}

Autor: 11833 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Hotte Meyer (marvinthevirus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mag ja schon sein das das im Artikel AVR steht. Aber irgendwie habe 
ich Anpassungsprobleme von AVR auf ARM? So leid wie mir das tut!

Autor: let (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kommst du auf PINSEL? Die sind dazu da um zwischen normalem
IO (GPIO) und der übrigen Peripherie (UART, I2C, ...) umzuschalten.

Port 0.14 wird so abgefragt:
if (IO0PIN & (1 << 14)) { }

Um den EINT1 (ext. interrupt 1) auszuwählen der sich mit IO Port
0.14 einen gemeinsamen Pin teilt ist folgendes zu tun:
PINSEL0 = (PINSEL0 & ~(3 << 28)) | (2 << 28);

Die linke Seite vom OR liefert den aktuellen Wert von PINSEL0 ohne
die Bits 28 u. 29 zurück und die rechte Seite schreibt 0b10 an
diese Stelle.
Wenn man die PINSEL Register nach der Initialisierung nicht mehr
anfaßt reicht auch
PINSEL0 |= (2 << 28);
.

Autor: Hotte Meyer (marvinthevirus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verstehen tu ich es nicht, da ich bei Port 14 Spannung drauf geben kann, 
aber nichts passiert. Bei anderen Ports wie zum Beispiel Port 13 
funktioniert es. Besten Dank an let.

Also prüfen ob ein Eingang kommt:
if (IOPIN0 & (1<< 13))
{}
oder was auch geht
val = 0x00002000;
if (IOPIN0 & val)
{}

Autor: let (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie testest du denn den P0.14? Gerade dieser Pin entscheidet ob
nach einem Reset der Bootloader gestartet werden soll oder nicht.
Wenn da beim Start 0 anliegt, läuft das Programm gar nicht los.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.