mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Pin Zustand abfragen: LPC23xx


Autor: Mueller Best's (frankyfarell)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich arbeite gerage mit  dem ARM Bord MBC2300 der Controller ist LPC2378. 
ich möchte der Pin P2.10(INT0)zustand abfragen, ich will nicht mit dem 
Interrupt sondern mit Pollen-Afragen  . kann mir jemanden der Routine 
zum abfragen  geben, ich habe so gemacht aber funktioniert nicht.

 while ( 1 )
{
     if((FIO2PIN &(1<<10))== 1)
     {
   Start(4);
     }else if((FIO2PIN &(1<<10))== 0)
         Stop(4);
     }
} //


Danke

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

if((FIO2PIN &(1<<10))== 1)

oder mal so geschrieben:
FIO2PIN AND 0b0000001000000000

Wie soll da jemals 1 rauskommen?

if((FIO2PIN &(1<<10)) <> 0)
oder
if((FIO2PIN &(1<<10))== (1<<10))

Tipp von mir, der keine Ahnung von C hat unde den Controller nicht kennt
aber logische Verknüpfungen noch mit 0 und 1 gelernt hat. ;-)

Gruß aus Berlin
Michael

Autor: Hotte Meyer (marvinthevirus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Cy Guet's,

farg doch mal dein Eingang so ab

if((FIO2PIN &(1<<10)) != 0) // Abfrage ob Eingang aktuell auf high ist

denn
(1 << 10) == 0    ist immer false
(1 << 10) == 1    ist immer false

Warum schreibst du bei deiner else-anweisung noch if?
Else reicht völlig aus.

MFG
Hotte

Autor: Jean Player (fubu1000)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und noch kürzer :
if(FIO2PIN &(1<<10)){.....}
else {.....}

Gruß

Autor: Mueller Best's (frankyfarell)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke an alle , ihre hilfe hat mir sehr geholfen.

Autor: Mueller Best's (frankyfarell)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich habe ein DC motor  über PWM gesteuert, mit der LPC2378 controller, 
mein Motor läuft immer wieder um ich möchte jedoch  nach 20 umdrehung 
der Motor Stopen das prinzip ist folgendes:

1)- MotorStart();
2)- 20 undrehung sind vorbei;
3)- MotorStop();

PS: Ich kann schon starten mit dem register :

PWM1PCR = (1<<9); /* counter enable, PWM enable */
PWM1TCR = ( 1 << 0 )|(1 << 3);

 und stoppen

PWM1PCR = 0x00; /* counter enable, PWM enable */
PWM1TCR = 0x00;

 aber ich weiß nich ,wie ich  die 20 umdrehung einstellen kann.

hat irgend eine eine Idee , dann währe mir sehr hilfsreich
Danke

Autor: ARM-Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe auch noch einen:
<c>
// aus Bit-Nummer eine 32-Bit-Zahl machen (Bit-Position)
#ifndef BIT
#define BIT(n)              (1UL << (n))
#endif
// PORTxPIN(pin) wird 0 oder 1 je nach Zustand des entsprechenden Pin
#define PORTxPIN(port, bitnum) ( ( (port & bitnum) != 0 ) ? 1 : 0 )
// das nun für jeden Port
#define PORT0PIN(bitnum) (PORTxPIN(FIO0PIN, bitnum))
#define PORT1PIN(bitnum) (PORTxPIN(FIO1PIN, bitnum))
#define PORT2PIN(bitnum) (PORTxPIN(FIO2PIN, bitnum))
#define PORT3PIN(bitnum) (PORTxPIN(FIO3PIN, bitnum))
#define PORT4PIN(bitnum) (PORTxPIN(FIO4PIN, bitnum)=
// hier ein Beispiel für einen Schalter/Taster an Pin 28 von Port 4
#define BUTTON1 (PORT4PIN( BIT(28) ))
// BUTTON1 wird je nach Zustand an Pin 28 von Port 4 -> null oder eins
// Bsp: printf("<Schalter: %d>", BUTTON1); -> Ausgebe: <Schalter: 0> 
oder <Schalter: 1>
</c>

Autor: ARM-Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe auch noch einen:

// aus Bit-Nummer eine 32-Bit-Zahl machen (Bit-Position)
#ifndef BIT
#define BIT(n)              (1UL << (n))
#endif
// PORTxPIN(pin) wird 0 oder 1 je nach Zustand des entsprechenden Pin
#define PORTxPIN(port, bitnum) ( ( (port & bitnum) != 0 ) ? 1 : 0 )
// das nun für jeden Port
#define PORT0PIN(bitnum) (PORTxPIN(FIO0PIN, bitnum))
#define PORT1PIN(bitnum) (PORTxPIN(FIO1PIN, bitnum))
#define PORT2PIN(bitnum) (PORTxPIN(FIO2PIN, bitnum))
#define PORT3PIN(bitnum) (PORTxPIN(FIO3PIN, bitnum))
#define PORT4PIN(bitnum) (PORTxPIN(FIO4PIN, bitnum)) //<- Korrektur :o(
// hier ein Beispiel für einen Schalter/Taster an Pin 28 von Port 4
#define BUTTON1 (PORT4PIN( BIT(28) ))
// BUTTON1 wird je nach Zustand an Pin 28 von Port 4 -> null oder eins
// Bsp: printf("<Schalter: %d>", BUTTON1); -> Ausgebe: <Schalter: 0>
oder <Schalter: 1>

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.