==========================================================================================

ARM

==========================================================================================


<ARM>









=회로도 


http://itsmart333.tistory.com/attachment/cfile7.uf@2439C14355AE048119F7F5.pdf








=





-소스인사이트 소스깨짐 방지

http://blog.naver.com/junyoung8934/90182483563


=LCD 연결










<AT91SAM7S256.h>




<<ARM>>


<MAIN.C>

#include <project.h> 

int main()
{  
  
  
while (1);
  
return 0;
}


<LCD.H>

#ifndef __LCD_H__
#define __LCD_H__
#include <AT91SAM7S256.h>

#define LCD_BUS  0x00FF0000  //MASK 16~23
#define LCD_RS  0x00000001  // 1 
#define LCD_RW  0x00000002  // 2
#define LCD_EN  0x00000004  // 3

#define LCD_CAL_INST(X)  ((LCD_BUS)&((X)<<16)) // INST만 넣기 

void LCD_Init(void);
#endif // __LCD_H__


<LCD.C>

#include "lcd.h"

void LCD_Inst(unsigned int uiInst) 
{
  
volatile unsigned int uiCnt;  
  
  *AT91C_PIOA_CODR 
= LCD_BUS | LCD_RS | LCD_RW | LCD_EN;  // LOW  
  *AT91C_PIOA_SODR = LCD_CAL_INST(uiInst);  
  
for(uiCnt = 0 ; uiCnt <100000; ++uiCnt);  // ALL INIT
  for(uiCnt = 0 ; uiCnt <100000; ++uiCnt);  // RS = LOW
  *AT91C_PIOA_SODR = LCD_EN; 
  
for(uiCnt = 0 ; uiCnt <100000; ++uiCnt);  // EN = HIGH
  for(uiCnt = 0 ; uiCnt <100000; ++uiCnt);  // BUS = DATA
  for(uiCnt = 0 ; uiCnt <100000; ++uiCnt);  // BUS = VALID DATA  
  *AT91C_PIOA_CODR = LCD_EN; 
  
for(uiCnt = 0 ; uiCnt <100000; ++uiCnt);  // EN = LOW  
}

void LCD_Init(void)
{
  
//*PIO_PER = LCD_BUS | LCD_RS | LCD_RW | LCD_EN; // 0번지 X => ASSEM
  //AT91C_BASE_PIOA->PIO_PER = LCD_BUS | LCD_RS | LCD_RW | LCD_EN;   
  *AT91C_PIOA_PER = LCD_BUS | LCD_RS | LCD_RW |
 LCD_EN; 

  *AT91C_PIOA_PPUDR 
= LCD_BUS | LCD_RS | LCD_RW | LCD_EN;
  
  
return;
}

<MAKEFILE>

#-----------------------------
#
 2008 Mecha Cource - By CM WC, 2008.09.10.
#-----------------------------
ifndef ERASE_FCT
ERASE_FCT
=rm -rf
endif
ifndef WCCROSS_COMPILE
WCCROSS_COMPILE
=arm-elf-
endif

WCTOOL
=gcc

WCOUTFILE_SRAM
=at91sam7s_sram_wc
WCOUTFILE_FLASH
=at91sam7s_flash_wc

WCTARGET
=AT91SAM7S256

WCINCL
=./include

# Debug Mode
OPTIM
=-Os

ifeq ($(WCTOOL), gcc)

AS
=$(WCCROSS_COMPILE)gcc
CC
=$(WCCROSS_COMPILE)gcc
LD
=$(WCCROSS_COMPILE)gcc

OBJCOPY
=$(WCCROSS_COMPILE)objcopy
OBJDUMP
=$(WCCROSS_COMPILE)objdump

NM
= $(WCCROSS_COMPILE)nm
SIZE
=$(WCCROSS_COMPILE)size

CCFLAGS
=-g -mcpu=arm7tdmi $(OPTIM) -Wall -I$(WCINCL) -D$(WCTARGET)
ASFLAGS
=-D__ASSEMBLY__ -D$(WCTARGET) -g -mcpu=arm7tdmi -c $(OPTIM) -Wall -I$(WCINCL)

LDFLAGS+
=-nostartfiles -Wl,--cref
LDFLAGS+
=-lc -lgcc
LDFLAGS+
=-T elf32-littlearm.lds

OBJS
=cstartup.o
endif

OBJS+
= lowlevel.o \
       main.o \
       lcd.o


all: sram flash

rebuild: clean all

sram: $(OBJS)
  $(LD) $(LDFLAGS) -Ttext 
0x201000 -Tdata 0x200000 -n -o $(WCOUTFILE_SRAM).elf $(OBJS)
  $(OBJCOPY) --strip-debug --strip-unneeded $(WCOUTFILE_SRAM).elf -O binary $(WCOUTFILE_SRAM).bin

flash: $(OBJS)
  $(LD) $(LDFLAGS) -Ttext 
0x100000 -Tdata 0x200000 -n -o $(WCOUTFILE_FLASH).elf $(OBJS)
  $(OBJCOPY) --strip-debug --strip-unneeded $(WCOUTFILE_FLASH).elf -O binary $(WCOUTFILE_FLASH).bin

main.o: main.c
  $(CC) -c $(CCFLAGS) main.c -o main.o

lcd.o: lcd.c
  $(CC) -c $(CCFLAGS) lcd.c -o lcd.o

  
lowlevel.o: lowlevel.c
  $(CC) -c $(CCFLAGS) lowlevel.c -o lowlevel.o

cstartup.o:  cstartup.S
  $(AS) $(ASFLAGS) cstartup.S -o cstartup.o

clean:
  $(ERASE_FCT) *.o *.bin *.elf *.map
  



<<AVR -<LCD.C>- LCD INST>>

static void LCD_Inst(unsigned char ucInst)
{
  
volatile unsigned int uiCnt;
  
  
//DB INST SET (ENABLE 전 셋팅)
  LCD_BUS = ucInst;
  
  
//Write Mode Timing Diagram
  LCD_CTL = (0<<LCD_PIN_RS)|(0<<LCD_PIN_RW)|(0<<LCD_PIN_EN);    // RS : LOW / RW : LOW / EN : LOW => 쓰레기값 (Don't Care)
  DELAY(DNUM_1);  
  LCD_CTL 
= (0<<LCD_PIN_RS)|(0<<LCD_PIN_RW)|(1<<LCD_PIN_EN);    // EN : HIGH
  DELAY(DNUM_2);
  LCD_CTL 
= (0<<LCD_PIN_RS)|(0<<LCD_PIN_RW)|(0<<LCD_PIN_EN);    // EN : LOW
  DELAY(DNUM_3);  
  
  
return;
}



'2015 스마트 콘트롤러 > 업무일지' 카테고리의 다른 글

20150727  (0) 2015.07.27
20150724  (0) 2015.07.26
20150722  (0) 2015.07.23
20150721  (0) 2015.07.22
20150720  (0) 2015.07.21
Posted by ahj333
,