Ik ben even helemaal de weg kwijt. Ik ben bezig met een ogenschijnlijk" simpel" programma voor de LPC2103. Deze maak ik op dit ontwikkelbord: iARM-2103 Board van Imagecraft. Ik ben hiermee begonnen omdat ik mezelf wat wilde leren met de LPC2103, maar het gaat nog niet zo simpel als ik hoopte.
Ik ben nu een tijd aan het code tikken en analyseren maar de problemen worden steeds vager. Eerst kreeg ik, wat ik ook deed in mijn code, een externe interrupt die "hoog" was (3.3 Volt) zonder er een signaal of iets op te zetten. Nu heb ik dat verholpen, echter welke output ik nu ook maar "hoog" maak, gebeurt er niks. Behalve bij de ledjes die erboven op zitten. Die werken wel goed
Ik probeer om 1 output pin hoog te maken en een andere als externe interrupt te laten werken. Als op de externe interrupt GEEN signaal komt van de hoge output, dan moet het groene ledje branden. Is er wel een externe interrupt, dan moet het groene ledje uitgaan en de rode led aan.
Mijn code:
Wie o wie kan me helpen, want ik begin nu totaal gek te worden. Heb inmiddels alle interrupt voorbeelden van de LPC2100 serie gezien en kom er nog niet uit.
Ik ben nu een tijd aan het code tikken en analyseren maar de problemen worden steeds vager. Eerst kreeg ik, wat ik ook deed in mijn code, een externe interrupt die "hoog" was (3.3 Volt) zonder er een signaal of iets op te zetten. Nu heb ik dat verholpen, echter welke output ik nu ook maar "hoog" maak, gebeurt er niks. Behalve bij de ledjes die erboven op zitten. Die werken wel goed
Ik probeer om 1 output pin hoog te maken en een andere als externe interrupt te laten werken. Als op de externe interrupt GEEN signaal komt van de hoge output, dan moet het groene ledje branden. Is er wel een externe interrupt, dan moet het groene ledje uitgaan en de rode led aan.
Mijn code:
C: MAIN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
| #include <NXP/iolpc2103.h> #include "arm_interrupt.h" int main(void); void init_devices (void); void pll_init (void); void power_init (void); void mam_init (void); void apb_init (void); void port_init (void); void ExtInt1_init (void); __irq __arm void ExtInt1_isr (void); int main() { init_devices (); do { FIOCLR2_bit.P0_17 = 1; // Groene LED aan FIOSET2_bit.P0_18 = 1; // Rode LED uit } while(1); // Lege eindeloze lus } void init_devices (void) { pll_init(); //Standaard instellingen voor iARM-2103: ~60MHz power_init(); //Alle functies uitschakelen mam_init(); //MAM volledig ingeschakelen apb_init(); //APB klok = PLL klok/4 port_init(); //Standaard instellingen voor iARM-2103: LED's uit ExtInt1_init (); //Initialisatie's voor de externe interrupt EINT1 } void pll_init (void) { PLLCON = 0x01; PLLCFG = 0x23; PLLFEED = 0xAA; PLLFEED = 0x55; while (!(PLLSTAT&0x0400)); PLLCON |= 0x02; PLLFEED = 0xAA; PLLFEED = 0x55; } void power_init (void) { PCONP = 0x00000000; } void mam_init (void) { MAMTIM = 0x04; MAMCR = 0x02; } void apb_init (void) { APBDIV = 0x00; } void port_init (void) { SCS_bit.GPIO0M = 1; // highspeed GPIO FIODIR2_bit.P0_17 = 1; // Groene LED als uitgang FIODIR2_bit.P0_18 = 1; // Rode LED als uitgang FIODIR1_bit.P0_15 = 1; // P0.15 als uitgang FIOSET2_bit.P0_17 = 1; // Groene LED uit FIOSET2_bit.P0_18 = 1; // Rode LED uit FIOCLR1_bit.P0_15 = 1; // P0.15 HOOG maken (3.3 Volt) PINSEL0 = 0x20000000; // P0.14 in de stand van EINT1 zetten } void ExtInt1_init (void) { EXTMODE = 1; // EINT1 in de "level" schakel modus EXTPOLAR = 2; // EINT1 = positief bij opgaande flank van puls VICVectAddr1 = (unsigned long)ExtInt1_isr; VICVectCntl0 = 0x21 | 15; // VIC1 gebruiken voor EINT1 interrupt VICIntEnable = 1 << 15; // EINT1 interrupt inschakelen } __irq __arm void ExtInt1_isr (void) { FIOSET2_bit.P0_17 = 1; // Groene LED uit FIOCLR2_bit.P0_18 = 1; // Rode LED aan EXTINT = 2; // EINT1 interrupt flag VICVectAddr = 0x00000000; // Acknowledge Interrupt } |
Wie o wie kan me helpen, want ik begin nu totaal gek te worden. Heb inmiddels alle interrupt voorbeelden van de LPC2100 serie gezien en kom er nog niet uit.
GamePC (AMD Ryzen 5900x - Gigabyte RTX 3070 Gaming OC 8G - Gigabyte Aorus X570 ELITE - 32GB Corsair Vengeance 3600C18 - 1.5TB Samsung 970 EVO NVME - 500GB Samsung 950 EVO Sata - Fractal Design Define 7 - Corsair RM750x - 2x Asus VG27AQ 1440p@144hz)