Hi
Ich versuche verzweifelnd die Taster meines Entwicklungsboardes
anzusprechen. Beim Evalboard handelt es sich um das LPC-P2124 Board von
Olimex.
Die Taster sind an P0.10(Button1) und P0.11 angeschlossen.
Wenn ich nun an den Stifleisten an P0.10 messe, messe ich knapp 5V.
Wenn ich an P0.11 messe, messe ich 0V. Aber eigentlich sollte ich doch
3.3V messen oder?! Wenn ich bei den Tastern messe, messe ich 3.3V.. bei
beiden.. also mir scheint, da dürfte eine Hardware defekt sein..
Das Programm sollte ja eigentlich auch funktionieren. Ich hab es
simuliert und da scheint es zu passen.. Aber ich füge es mal ein.
1 | #include <stdio.h> /* prototype declarations for I/O
|
2 | functions */
|
3 | #include <LPC21xx.H> /* LPC21xx definitions
|
4 | */
|
5 |
|
6 | #define LED1 0x00001000
|
7 | #define LED2 0x00002000
|
8 |
|
9 | #define Button1 0x00000400
|
10 | #define Button2 0x00000800
|
11 | unsigned long tempbutton;
|
12 |
|
13 | void wait(void)
|
14 | {
|
15 | int i;
|
16 | for (i=0;i<0xfffff;i++)
|
17 | {
|
18 | __asm
|
19 | {
|
20 | NOP
|
21 | NOP
|
22 | NOP
|
23 | NOP
|
24 | NOP
|
25 | }
|
26 | }
|
27 |
|
28 | }
|
29 | void main()
|
30 | {
|
31 |
|
32 | /* initialize the serial interface */
|
33 | PINSEL0 = 0x00050000; /* Enable RxD1 and TxD1
|
34 | */
|
35 | U1LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit
|
36 | */
|
37 | U1DLL = 0x78; /* 9600 Baud Rate @ 14,7546MHz VPB
|
38 | Clock */
|
39 | U1LCR = 0x03; /* DLAB = 0
|
40 | */
|
41 |
|
42 | IO0DIR=0x00003000; /* Einstellen der von P0.11 und P0.12 als
|
43 | Ausgänge*/
|
44 | IO0CLR=0x00003000; /* P0.11 und P0.12 auf 0 Setzt(löschen)*/
|
45 |
|
46 | printf ("Hello World\n"); /* the 'printf' function call
|
47 | */
|
48 | while(1)
|
49 | {
|
50 | printf ("\nIO0PIN:<%xh>\n",IO0PIN);
|
51 | tempbutton = IO0PIN & Button1;
|
52 | printf ("tempbutton:<%xh>\n",tempbutton);
|
53 | wait();
|
54 | if( !(tempbutton == Button1))
|
55 | {
|
56 | IO0SET = LED1|LED2; /* P0.11 und P0.12 auf 1 Setzt(setzen)*/
|
57 | wait();
|
58 | }
|
59 | tempbutton = IO0PIN & Button2;
|
60 | printf ("tempbutton:<%xh>\n",tempbutton);
|
61 | wait();
|
62 | if(!(tempbutton == Button2))
|
63 | {
|
64 | IO0CLR = LED1|LED2; /* P0.11 und P0.12 auf 0 Setzt(löschen)*/
|
65 | wait();
|
66 | }
|
67 | }
|
68 | }
|
Passt bei meinem Code etwas nicht oder hat das Board etwas?
Ich danke euch für die Hilfe.
mfg Schoasch
PS.: Ich programmiere mit µVision3