KL25Z Traffic light program - code issue (Possibly breadboard as well)

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

KL25Z Traffic light program - code issue (Possibly breadboard as well)

1,911 Views
kaleemgraham
Contributor II

Hello everyone, I'm trying to do a traffic light program using the FRDM-KL25Z board, with uVision 5 Keil compiler. So far I've managed to execute the code however it only lights up my green LED instead of the red and yellow and also does not execute in a loop. My code so far, and the image is also attached below. 

SIM_SCG85 EQU 0x40048038; clock
PORTB_PCR0 EQU 0x4004A000; RED
PORTB_PCR1 EQU 0x4004A004; YELLOW
PORTB_PCR2 EQU 0x4004A008; GREEN
GPIOB_PDDR EQU 0x400FF054; Direction of Data
GPIOB_PSOR EQU 0x400FF044; Set Bits
GPIOB_PCOR EQU 0x400FF048; Clear Bits
RED_MASK EQU 0x00000002
YELLOW_MASK EQU 0x00000004
GREEN_MASK EQU 0x00000008
DELAY_CNT EQU 0x00800000
         AREA asm_area, CODE, READONLY
         EXPORT asm_main

asm_main

         BL init_gpio
loop
         BL redon
         LDR r0,=DELAY_CNT
         BL delay
         BL redoff
         BL greenon
         LDR r0,=DELAY_CNT
         BL greenoff
         BL yellowon
         BL delay
         BL yellowoff
         B loop
redon
         LDR r0,=GPIOB_PSOR
         LDR r1,[r0]
         LDR r2,=RED_MASK
         ORRS r1, r2
         STR r1,[r0]
         BX LR
redoff
         LDR r0,=GPIOB_PCOR
         LDR r1,[r0]
         LDR r2,=RED_MASK
         ORRS r1, r2
         STR r1,[r0]
         BX LR
yellowon
         LDR r0,=GPIOB_PSOR
         LDR r1, [r0]
         LDR r2,=YELLOW_MASK
         ORRS r1,r2
         STR r1,[r0]
         BX LR
yellowoff
         LDR r0,=GPIOB_PCOR
         LDR r1,[r0]
         LDR r2,=YELLOW_MASK
         ORRS r1,r2
         STR r1,[r0]
         BX LR
greenon
         LDR r0,=GPIOB_PSOR
         LDR r1,[r0]
         LDR r2,=GREEN_MASK
         ORRS r1,r2
         STR r1,[r0]
         BX LR
greenoff
         LDR r0,=GPIOB_PSOR
           LDR r1,[r0]
           LDR r2,=GREEN_MASK
           ORRS r1,r2
            STR r1,[r0]
            BX LR
delay
 SUBS r0, #1
BNE delay
BX LR
init_gpio
LDR r0,=SIM_SCG85 ; Turns on clock
LDR r1,[r0]
LDR r2,=0x00003E00
ORRS r1,r2
STR r1,[r0]

LDR r0,=PORTB_PCR0 ; Output Red
LDR r1,=0x00000100
STR r1,[r0]

LDR r0,=PORTB_PCR1 ; Output Yellow
LDR r1,=0x00000100
STR r1,[r0]

LDR r0,=PORTB_PCR2 ; Output Green
LDR r1,=0x00000100
STR r1,[r0]


END

Tags (1)
6 Replies

1,319 Views
jordanliong95
Contributor I

Hi everyone sir,i'm needed help because don't know Using the FRDM-KL25Z board, with uVision 5 Keil compiler. 2 ways traffic light with pedestrian crossing button traffic light program. C programming

0 Kudos

1,319 Views
mjbcswitzerland
Specialist V

Kaleem

I see GPIOB_PDDR defined but I don't see it used. Without setting the ports to outputs it would be normal that no LEDs light.

Why do you write in assembler - I thought this was abolished 40 years ago (and give to the compiler to do) ;-)

Regards

Mark

1,319 Views
kaleemgraham
Contributor II

Hello Mark, I have utilized GPIOB_PDDR in my updated code which can be found here CodePaste.NET - Traffic light code , However now none of the diodes are coming on, could there be an issue with the way i have things set?

The error I keep getting is a cpu reset by debugger.

4b4f6d980c81a6e6073ade8863798936.png

0 Kudos

1,319 Views
mjbcswitzerland
Specialist V

Kaleem

Have you correctly enabled clocks to the ports?

Regards

Mark

0 Kudos

1,319 Views
kaleemgraham
Contributor II

Yes I have the code to enable all clocks would be, 

SIM_SCG85 EQU 0x40048038; clock address

; Turns on clock

LDR r0,=SIM_SCGC5

LDR r1,[r0]
LDR r2,=0x00003E00
ORRS r1,r2
STR r1,[r0]

I've also tried disabling watchdog which didn't help either. 

0 Kudos

1,319 Views
mjbcswitzerland
Specialist V

Kaleem

The port clock gate looks OK.

Why not single step the code to see what works and what not?

Regards

Mark

0 Kudos