Forum: Mikrocontroller und Digitale Elektronik Probleme mit LPC2103 (NXP)


von Sandro (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich habe ein Projekt gemacht mit dem uP LPC2103.
Ich habe eine Leiterplatte gefertigt und die Speisungen und den Quarz 
gemessen, sowie auch die JTAG-Schnittstelle. Alles i.O. (im anhang das 
schema)
Programmiert habe ich mit uVision4 von Keil.

Mein Problem ist nun, mein Test Programm wird zwar auf den uP geladen, 
es passiert jedoch nichts.. (Einfaches LED-Blink-Programm)
komisch ist, dass es zuerst funktioniert hat. als ich jedoch das 
Programm wenig verändert habe und erneut auf dem uP geladen habe, hat es 
nicht mehr funktioniert..

kann das mit den einstellungen von uVision4 zu tun haben?
oder mit dem startup-file, welches automatisch eingebunden wird?

hier der code:
1
//    Testprogramm LPC2103
2
//    Sandro Furter
3
//    19.01.12 
4
5
/*  Includes
6
*/
7
#include <LPC2103.H>
8
9
#define  CPULED  0x00040000
10
#define  Delay  5000
11
12
int main (void)
13
{
14
  int counter=0;
15
  
16
  PINSEL0 = 0x00000000;
17
  PINSEL1 = 0x55400000;    //JTAG Port
18
  IODIR = 0x00380000;        //P0.19=CPULED (output) 
19
20
  while (1)
21
  {
22
    for (counter=0; counter<Delay; counter++)
23
    {
24
      IOSET = 0x00380000;
25
    }
26
    for (counter=0; counter<Delay; counter++)
27
    {
28
      IOCLR = 0x00380000;
29
    }
30
  }
31
}

grüsse und freue mich auf tipps :D

von Omega G. (omega) Benutzerseite


Lesenswert?

Kannst du den Schaltplan etwas hochauflösender anhängen?

Ich habe zwar die PINSEL nicht geprüft aber prinzipiell sollte das 
Programm funktionieren, wenn auch etwas schnell blinken. Eigentlich 
solltest du die PINSEL auch weglassen können, dann wären alle Pins 
einfache GPIOs.

Ich vermute, dass es am startup-code liegt.

von Sandro (Gast)


Angehängte Dateien:

Lesenswert?

hoffe das ist besser.

das ist auch meine vermutung. nur mit einem anderen Projekt, wo ich den 
LPC2138 (selbe prozessor-familie) verwendet habe funktioniert dieser 
startup-code..

im debug-mode tritt immer ein fehler auf bei "; Exception Vectors "

hier der startup code (im assembler):
1
;/*****************************************************************************/
2
;/* STARTUP.S: Startup file for Philips LPC2000                               */
3
;/*****************************************************************************/
4
;/* <<< Use Configuration Wizard in Context Menu >>>                          */ 
5
;/*****************************************************************************/
6
;/* This file is part of the uVision/ARM development tools.                   */
7
;/* Copyright (c) 2005-2007 Keil Software. All rights reserved.               */
8
;/* This software may only be used under the terms of a valid, current,       */
9
;/* end user licence from KEIL for a compatible version of KEIL software      */
10
;/* development tools. Nothing else gives you the right to use this software. */
11
;/*****************************************************************************/
12
13
14
;/*
15
; *  The STARTUP.S code is executed after CPU Reset. This file may be 
16
; *  translated with the following SET symbols. In uVision these SET 
17
; *  symbols are entered under Options - ASM - Define.
18
; *
19
; *  REMAP: when set the startup code initializes the register MEMMAP 
20
; *  which overwrites the settings of the CPU configuration pins. The 
21
; *  startup and interrupt vectors are remapped from:
22
; *     0x00000000  default setting (not remapped)
23
; *     0x80000000  when EXTMEM_MODE is used
24
; *     0x40000000  when RAM_MODE is used
25
; *
26
; *  EXTMEM_MODE: when set the device is configured for code execution
27
; *  from external memory starting at address 0x80000000.
28
; *
29
; *  RAM_MODE: when set the device is configured for code execution
30
; *  from on-chip RAM starting at address 0x40000000.
31
; *
32
; *  EXTERNAL_MODE: when set the PIN2SEL values are written that enable
33
; *  the external BUS at startup.
34
; */
35
36
37
; Standard definitions of Mode bits and Interrupt (I & F) flags in PSRs
38
39
Mode_USR        EQU     0x10
40
Mode_FIQ        EQU     0x11
41
Mode_IRQ        EQU     0x12
42
Mode_SVC        EQU     0x13
43
Mode_ABT        EQU     0x17
44
Mode_UND        EQU     0x1B
45
Mode_SYS        EQU     0x1F
46
47
I_Bit           EQU     0x80            ; when I bit is set, IRQ is disabled
48
F_Bit           EQU     0x40            ; when F bit is set, FIQ is disabled
49
50
51
;// <h> Stack Configuration (Stack Sizes in Bytes)
52
;//   <o0> Undefined Mode      <0x0-0xFFFFFFFF:8>
53
;//   <o1> Supervisor Mode     <0x0-0xFFFFFFFF:8>
54
;//   <o2> Abort Mode          <0x0-0xFFFFFFFF:8>
55
;//   <o3> Fast Interrupt Mode <0x0-0xFFFFFFFF:8>
56
;//   <o4> Interrupt Mode      <0x0-0xFFFFFFFF:8>
57
;//   <o5> User/System Mode    <0x0-0xFFFFFFFF:8>
58
;// </h>
59
60
UND_Stack_Size  EQU     0x00000000
61
SVC_Stack_Size  EQU     0x00000008
62
ABT_Stack_Size  EQU     0x00000000
63
FIQ_Stack_Size  EQU     0x00000000
64
IRQ_Stack_Size  EQU     0x00000080
65
USR_Stack_Size  EQU     0x00000400
66
67
ISR_Stack_Size  EQU     (UND_Stack_Size + SVC_Stack_Size + ABT_Stack_Size + \
68
                         FIQ_Stack_Size + IRQ_Stack_Size)
69
70
                AREA    STACK, NOINIT, READWRITE, ALIGN=3
71
72
Stack_Mem       SPACE   USR_Stack_Size
73
__initial_sp    SPACE   ISR_Stack_Size
74
75
Stack_Top
76
77
78
;// <h> Heap Configuration
79
;//   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF>
80
;// </h>
81
82
Heap_Size       EQU     0x00000000
83
84
                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
85
__heap_base
86
Heap_Mem        SPACE   Heap_Size
87
__heap_limit
88
89
90
; VPBDIV definitions
91
VPBDIV          EQU     0xE01FC100      ; VPBDIV Address
92
93
;// <e> VPBDIV Setup
94
;// <i> Peripheral Bus Clock Rate
95
;//   <o1.0..1>   VPBDIV: VPB Clock
96
;//               <0=> VPB Clock = CPU Clock / 4
97
;//               <1=> VPB Clock = CPU Clock
98
;//               <2=> VPB Clock = CPU Clock / 2
99
;//   <o1.4..5>   XCLKDIV: XCLK Pin
100
;//               <0=> XCLK Pin = CPU Clock / 4
101
;//               <1=> XCLK Pin = CPU Clock
102
;//               <2=> XCLK Pin = CPU Clock / 2
103
;// </e>
104
VPBDIV_SETUP    EQU     0
105
VPBDIV_Val      EQU     0x00000000
106
107
108
; Phase Locked Loop (PLL) definitions
109
PLL_BASE        EQU     0xE01FC080      ; PLL Base Address
110
PLLCON_OFS      EQU     0x00            ; PLL Control Offset
111
PLLCFG_OFS      EQU     0x04            ; PLL Configuration Offset
112
PLLSTAT_OFS     EQU     0x08            ; PLL Status Offset
113
PLLFEED_OFS     EQU     0x0C            ; PLL Feed Offset
114
PLLCON_PLLE     EQU     (1<<0)          ; PLL Enable
115
PLLCON_PLLC     EQU     (1<<1)          ; PLL Connect
116
PLLCFG_MSEL     EQU     (0x1F<<0)       ; PLL Multiplier
117
PLLCFG_PSEL     EQU     (0x03<<5)       ; PLL Divider
118
PLLSTAT_PLOCK   EQU     (1<<10)         ; PLL Lock Status
119
120
;// <e> PLL Setup
121
;//   <o1.0..4>   MSEL: PLL Multiplier Selection
122
;//               <1-32><#-1>
123
;//               <i> M Value
124
;//   <o1.5..6>   PSEL: PLL Divider Selection
125
;//               <0=> 1   <1=> 2   <2=> 4   <3=> 8
126
;//               <i> P Value
127
;// </e>
128
PLL_SETUP       EQU     1
129
PLLCFG_Val      EQU     0x00000024
130
131
132
; Memory Accelerator Module (MAM) definitions
133
MAM_BASE        EQU     0xE01FC000      ; MAM Base Address
134
MAMCR_OFS       EQU     0x00            ; MAM Control Offset
135
MAMTIM_OFS      EQU     0x04            ; MAM Timing Offset
136
137
;// <e> MAM Setup
138
;//   <o1.0..1>   MAM Control
139
;//               <0=> Disabled
140
;//               <1=> Partially Enabled
141
;//               <2=> Fully Enabled
142
;//               <i> Mode
143
;//   <o2.0..2>   MAM Timing
144
;//               <0=> Reserved  <1=> 1   <2=> 2   <3=> 3
145
;//               <4=> 4         <5=> 5   <6=> 6   <7=> 7
146
;//               <i> Fetch Cycles
147
;// </e>
148
MAM_SETUP       EQU     1
149
MAMCR_Val       EQU     0x00000002
150
MAMTIM_Val      EQU     0x00000004
151
152
153
; External Memory Controller (EMC) definitions
154
EMC_BASE        EQU     0xFFE00000      ; EMC Base Address
155
BCFG0_OFS       EQU     0x00            ; BCFG0 Offset
156
BCFG1_OFS       EQU     0x04            ; BCFG1 Offset
157
BCFG2_OFS       EQU     0x08            ; BCFG2 Offset
158
BCFG3_OFS       EQU     0x0C            ; BCFG3 Offset
159
160
;// <e> External Memory Controller (EMC)
161
EMC_SETUP       EQU     0
162
163
;//   <e> Bank Configuration 0 (BCFG0)
164
;//     <o1.0..3>   IDCY: Idle Cycles <0-15>
165
;//     <o1.5..9>   WST1: Wait States 1 <0-31>
166
;//     <o1.11..15> WST2: Wait States 2 <0-31>
167
;//     <o1.10>     RBLE: Read Byte Lane Enable
168
;//     <o1.26>     WP: Write Protect
169
;//     <o1.27>     BM: Burst ROM
170
;//     <o1.28..29> MW: Memory Width  <0=>  8-bit  <1=> 16-bit
171
;//                                   <2=> 32-bit  <3=> Reserved
172
;//   </e>
173
BCFG0_SETUP EQU         0
174
BCFG0_Val   EQU         0x0000FBEF
175
176
;//   <e> Bank Configuration 1 (BCFG1)
177
;//     <o1.0..3>   IDCY: Idle Cycles <0-15>
178
;//     <o1.5..9>   WST1: Wait States 1 <0-31>
179
;//     <o1.11..15> WST2: Wait States 2 <0-31>
180
;//     <o1.10>     RBLE: Read Byte Lane Enable
181
;//     <o1.26>     WP: Write Protect
182
;//     <o1.27>     BM: Burst ROM
183
;//     <o1.28..29> MW: Memory Width  <0=>  8-bit  <1=> 16-bit
184
;//                                   <2=> 32-bit  <3=> Reserved
185
;//   </e>
186
BCFG1_SETUP EQU         0
187
BCFG1_Val   EQU         0x0000FBEF
188
189
;//   <e> Bank Configuration 2 (BCFG2)
190
;//     <o1.0..3>   IDCY: Idle Cycles <0-15>
191
;//     <o1.5..9>   WST1: Wait States 1 <0-31>
192
;//     <o1.11..15> WST2: Wait States 2 <0-31>
193
;//     <o1.10>     RBLE: Read Byte Lane Enable
194
;//     <o1.26>     WP: Write Protect
195
;//     <o1.27>     BM: Burst ROM
196
;//     <o1.28..29> MW: Memory Width  <0=>  8-bit  <1=> 16-bit
197
;//                                   <2=> 32-bit  <3=> Reserved
198
;//   </e>
199
BCFG2_SETUP EQU         0
200
BCFG2_Val   EQU         0x0000FBEF
201
202
;//   <e> Bank Configuration 3 (BCFG3)
203
;//     <o1.0..3>   IDCY: Idle Cycles <0-15>
204
;//     <o1.5..9>   WST1: Wait States 1 <0-31>
205
;//     <o1.11..15> WST2: Wait States 2 <0-31>
206
;//     <o1.10>     RBLE: Read Byte Lane Enable
207
;//     <o1.26>     WP: Write Protect
208
;//     <o1.27>     BM: Burst ROM
209
;//     <o1.28..29> MW: Memory Width  <0=>  8-bit  <1=> 16-bit
210
;//                                   <2=> 32-bit  <3=> Reserved
211
;//   </e>
212
BCFG3_SETUP EQU         0
213
BCFG3_Val   EQU         0x0000FBEF
214
215
;// </e> End of EMC
216
217
218
; External Memory Pins definitions
219
PINSEL2         EQU     0xE002C014      ; PINSEL2 Address
220
PINSEL2_Val     EQU     0x0E6149E4      ; CS0..3, OE, WE, BLS0..3, 
221
                                        ; D0..31, A2..23, JTAG Pins
222
223
224
                PRESERVE8
225
                
226
227
; Area Definition and Entry Point
228
;  Startup Code must be linked first at Address at which it expects to run.
229
230
                AREA    RESET, CODE, READONLY
231
                ARM
232
233
234
; Exception Vectors
235
;  Mapped to Address 0.
236
;  Absolute addressing mode must be used.
237
;  Dummy Handlers are implemented as infinite loops which can be modified.
238
239
Vectors         LDR     PC, Reset_Addr         
240
                LDR     PC, Undef_Addr
241
                LDR     PC, SWI_Addr
242
                LDR     PC, PAbt_Addr
243
                LDR     PC, DAbt_Addr
244
                NOP                            ; Reserved Vector 
245
;               LDR     PC, IRQ_Addr
246
                LDR     PC, [PC, #-0x0FF0]     ; Vector from VicVectAddr
247
                LDR     PC, FIQ_Addr
248
249
Reset_Addr      DCD     Reset_Handler
250
Undef_Addr      DCD     Undef_Handler
251
SWI_Addr        DCD     SWI_Handler
252
PAbt_Addr       DCD     PAbt_Handler
253
DAbt_Addr       DCD     DAbt_Handler
254
                DCD     0                      ; Reserved Address 
255
IRQ_Addr        DCD     IRQ_Handler
256
FIQ_Addr        DCD     FIQ_Handler
257
258
Undef_Handler   B       Undef_Handler
259
SWI_Handler     B       SWI_Handler
260
PAbt_Handler    B       PAbt_Handler
261
DAbt_Handler    B       DAbt_Handler
262
IRQ_Handler     B       IRQ_Handler
263
FIQ_Handler     B       FIQ_Handler
264
265
266
; Reset Handler
267
268
                EXPORT  Reset_Handler
269
Reset_Handler   
270
271
272
; Setup External Memory Pins
273
                IF      :DEF:EXTERNAL_MODE
274
                LDR     R0, =PINSEL2
275
                LDR     R1, =PINSEL2_Val
276
                STR     R1, [R0]
277
                ENDIF
278
279
280
; Setup External Memory Controller
281
                IF      EMC_SETUP <> 0
282
                LDR     R0, =EMC_BASE
283
284
                IF      BCFG0_SETUP <> 0
285
                LDR     R1, =BCFG0_Val
286
                STR     R1, [R0, #BCFG0_OFS]
287
                ENDIF
288
289
                IF      BCFG1_SETUP <> 0
290
                LDR     R1, =BCFG1_Val
291
                STR     R1, [R0, #BCFG1_OFS]
292
                ENDIF
293
294
                IF      BCFG2_SETUP <> 0
295
                LDR     R1, =BCFG2_Val
296
                STR     R1, [R0, #BCFG2_OFS]
297
                ENDIF
298
299
                IF      BCFG3_SETUP <> 0
300
                LDR     R1, =BCFG3_Val
301
                STR     R1, [R0, #BCFG3_OFS]
302
                ENDIF
303
304
                ENDIF   ; EMC_SETUP
305
306
307
; Setup VPBDIV
308
                IF      VPBDIV_SETUP <> 0
309
                LDR     R0, =VPBDIV
310
                LDR     R1, =VPBDIV_Val
311
                STR     R1, [R0]
312
                ENDIF
313
314
315
; Setup PLL
316
                IF      PLL_SETUP <> 0
317
                LDR     R0, =PLL_BASE
318
                MOV     R1, #0xAA
319
                MOV     R2, #0x55
320
321
;  Configure and Enable PLL
322
                MOV     R3, #PLLCFG_Val
323
                STR     R3, [R0, #PLLCFG_OFS] 
324
                MOV     R3, #PLLCON_PLLE
325
                STR     R3, [R0, #PLLCON_OFS]
326
                STR     R1, [R0, #PLLFEED_OFS]
327
                STR     R2, [R0, #PLLFEED_OFS]
328
329
;  Wait until PLL Locked
330
PLL_Loop        LDR     R3, [R0, #PLLSTAT_OFS]
331
                ANDS    R3, R3, #PLLSTAT_PLOCK
332
                BEQ     PLL_Loop
333
334
;  Switch to PLL Clock
335
                MOV     R3, #(PLLCON_PLLE:OR:PLLCON_PLLC)
336
                STR     R3, [R0, #PLLCON_OFS]
337
                STR     R1, [R0, #PLLFEED_OFS]
338
                STR     R2, [R0, #PLLFEED_OFS]
339
                ENDIF   ; PLL_SETUP
340
341
342
; Setup MAM
343
                IF      MAM_SETUP <> 0
344
                LDR     R0, =MAM_BASE
345
                MOV     R1, #MAMTIM_Val
346
                STR     R1, [R0, #MAMTIM_OFS] 
347
                MOV     R1, #MAMCR_Val
348
                STR     R1, [R0, #MAMCR_OFS] 
349
                ENDIF   ; MAM_SETUP
350
351
352
; Memory Mapping (when Interrupt Vectors are in RAM)
353
MEMMAP          EQU     0xE01FC040      ; Memory Mapping Control
354
                IF      :DEF:REMAP
355
                LDR     R0, =MEMMAP
356
                IF      :DEF:EXTMEM_MODE
357
                MOV     R1, #3
358
                ELIF    :DEF:RAM_MODE
359
                MOV     R1, #2
360
                ELSE
361
                MOV     R1, #1
362
                ENDIF
363
                STR     R1, [R0]
364
                ENDIF
365
366
367
; Initialise Interrupt System
368
;  ...
369
370
371
; Setup Stack for each mode
372
373
                LDR     R0, =Stack_Top
374
375
;  Enter Undefined Instruction Mode and set its Stack Pointer
376
                MSR     CPSR_c, #Mode_UND:OR:I_Bit:OR:F_Bit
377
                MOV     SP, R0
378
                SUB     R0, R0, #UND_Stack_Size
379
380
;  Enter Abort Mode and set its Stack Pointer
381
                MSR     CPSR_c, #Mode_ABT:OR:I_Bit:OR:F_Bit
382
                MOV     SP, R0
383
                SUB     R0, R0, #ABT_Stack_Size
384
385
;  Enter FIQ Mode and set its Stack Pointer
386
                MSR     CPSR_c, #Mode_FIQ:OR:I_Bit:OR:F_Bit
387
                MOV     SP, R0
388
                SUB     R0, R0, #FIQ_Stack_Size
389
390
;  Enter IRQ Mode and set its Stack Pointer
391
                MSR     CPSR_c, #Mode_IRQ:OR:I_Bit:OR:F_Bit
392
                MOV     SP, R0
393
                SUB     R0, R0, #IRQ_Stack_Size
394
395
;  Enter Supervisor Mode and set its Stack Pointer
396
                MSR     CPSR_c, #Mode_SVC:OR:I_Bit:OR:F_Bit
397
                MOV     SP, R0
398
                SUB     R0, R0, #SVC_Stack_Size
399
400
;  Enter User Mode and set its Stack Pointer
401
                MSR     CPSR_c, #Mode_USR
402
                IF      :DEF:__MICROLIB
403
404
                EXPORT __initial_sp
405
406
                ELSE
407
408
                MOV     SP, R0
409
                SUB     SL, SP, #USR_Stack_Size
410
411
                ENDIF
412
413
414
; Enter the C code
415
416
                IMPORT  __main
417
                LDR     R0, =__main
418
                BX      R0
419
420
421
                IF      :DEF:__MICROLIB
422
423
                EXPORT  __heap_base
424
                EXPORT  __heap_limit
425
426
                ELSE
427
; User Initial Stack & Heap
428
                AREA    |.text|, CODE, READONLY
429
430
                IMPORT  __use_two_region_memory
431
                EXPORT  __user_initial_stackheap
432
__user_initial_stackheap
433
434
                LDR     R0, =  Heap_Mem
435
                LDR     R1, =(Stack_Mem + USR_Stack_Size)
436
                LDR     R2, = (Heap_Mem +      Heap_Size)
437
                LDR     R3, = Stack_Mem
438
                BX      LR
439
                ENDIF
440
441
442
                END

von Sandro (Gast)


Angehängte Dateien:

Lesenswert?

noch das gesamte schema, falls nötig ;)

von Omega G. (omega) Benutzerseite


Lesenswert?

Leg das BSL Pin mal entweder auf 3,3V oder GND. Ich weiß auswendig nicht 
genau wann der in den Bootloader geht und wann das Programm ausgeführt 
wird.

von (prx) A. K. (prx)


Lesenswert?

Weshalb postest du einen Screenshot vom PDF an Stelle des PDFs selbst?

von Sandro (Gast)


Angehängte Dateien:

Lesenswert?

habe gedacht, pdf geht nicht zum hochladen...

also der DBSEL muss auf 3.3V, damit das Programm ausgeführt wird..
und
kann es an Einstellungen im "Target-Options" liegen?

uVision4 meldet auch immer nach dem download:

Rebuild target 'BoardNTB'
compiling Test_LPC2103.c...
assembling Startup.s...
linking...
Program Size: Code=860 RO-data=16 RW-data=0 ZI-data=1256
"TEST_BoardNTB.axf" - 0 Error(s), 0 Warning(s).

Load "E:\\IDPA 
2011\\Software\\Firmware\\uV4-Projekt_Test\\TEST_BoardNTB.AXF"
Full Chip Erase Done.
Programming Done.
Verify OK.
Application running ...

von Sandro (Gast)


Lesenswert?

Was für Einstellungen verwendet ihr bei den Target-Options?

Ich hatte vorgängig schon Probleme mit dem EW-Board MCB2130 von Keil. 
Dort musste ich im Register "Linker" die Option "Use Memory Layout from 
Target Dialog" anwählen, damit es funktionierte.

Gibt es allenfalls noch andere Optionen, die man beachten muss?
Oder im Startup-Code?

von W.S. (Gast)


Lesenswert?

Du hast wirklich ne komische Art, Schaltungen und die Symbole dazu zu 
machen. Deswegen mein Rat ganz pauschal: Such dir im Manual alle 
Portpins heraus, die sich als I2C Signale benutzen lassen. Wenn du davon 
welche als Outputs benutzt, dann brauchen die nen Hochzieher, weil alle 
OpenDrain. Und das Selectsignal für den Bootlader muß zum normalen 
Betrieb ebenfalls hochgezogen werden.

W.S.

von Sandro (Gast)


Lesenswert?

I2C benötige ich nicht..

und das Select Signal für den Bootloader habe ich hochgezogen.
an dem kann es also nicht liegen...

Die Firmware wird auch auf den Prozessor geladen, deshalb bin ich 
ratlos, an was es liegen kann..

von Sandro (Gast)


Lesenswert?

Ich benötige keine Hilfe mehr, habe die Fehlerquelle in einem anderen 
Artikel gefunden!
Vielen Dank an Omega! :D

Artikel:

Re: Problem mit selbgebauten LPC2103 Board
Autor: Omega G. (omega)
Datum: 23.03.2007 15:21

------------------------------------------------------------------------ 
--------

Ich habe jetzt erst Zeit gefunden mich darum zu kümmern.
Den Schaltplan von Embedded-Artists habe ich schon als Grundlage
verwendet.

Durch weiteres ausprobieren habe ich festgestellt, dass nicht Pin 27
(DBGSEL) darüber entscheidet ob der Controller in den Debugmodus geht
oder normal arbeitet, sondern Pin 44 (P0.14). Zudem habe ich ein paar
verwendete Ausgangspins mit Pull-ups (10 KOhm) belegt. Jetzt
funktioniert es scheinbar problemlos. freu

P.S.: Hat jemand eine Idee wie ich jetzt die SPI1 Schnittstelle
verwende? Denn P0.14, der auch SCK1, ist wird ja benötigt um in den
Normalbetrieb zu kommen.
Beitrag melden | Bearbeiten | Löschen |

von (prx) A. K. (prx)


Lesenswert?

DBGSEL aktiviert den JTAG-Port und P0.14 den Bootloader (ISP), wie bei 
anderen LPC2000 Controllern auch.

P0.14 wird vom Bootloader nur beim oder kurz nach dem Reset ausgewertet, 
jedenfalls bevor das Programm losläuft. Zu diesem Zeitpunkt ist der Pin 
nicht als Ausgang aktiv. Wenn man einen leichten Pullup oder -down 
dranhängt, dann entscheidet dieser, ob der Bootloader aktiv wird. Wird 
später SPI aktiv, dann stört der Widerstand nicht.

von (prx) A. K. (prx)


Lesenswert?

Obacht beim Debugging: Der am JTAG-Port angeschlossene Debugger kann bei 
den LPC2000 nicht direkt aus dem Reset debuggen, er muss den startenden 
Controller erst einmal einfangen. Wenn man nun das eigene Programm ab 
Reset schnell genug in den Tod treibt, dann kann es passieren, dass der 
Core hängt bevor der Debugger ihn einfangen konnte.

Wenn es bei dir einen Zusammenhang zwischen P0.14 und Debugging per JTAG 
gegeben haben sollte, dann möglicherweise aufgrund vom ebendiesem 
Effekt.

Es ist daher zumindest in der Debug-Phase sinnvoll, im Startup-Code 
unmittelbar nach Reset eine Warteschleife einbauen (ein paar 
Zehntelsekunden oder so), um dem Debugger eine Chance zu geben. 
Ausserdem ist man i.d.R. nur so in der Lage, den Startup-Code vom Anfang 
an zu tracen.

Besonders robuste Naturen (nämlich die bei Rowley) bauen dort gleich 
eine Totschleife ein. Dann hat zwar der Debugger kein Problem, aber der 
Anwender, der sich wundert, weshalb das Programm nur unter Kontrolle des 
Debuggers läuft.

von W.S. (Gast)


Lesenswert?

Sandro schrieb:
> I2C benötige ich nicht..

Na toll. Dann kann bei DIR ja garnix schiefgehen.


W.S.

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.