임베디드 프로그래밍  

         
전체 기타 | WinCE | Delphi | VisualC | ARM | Media | SE | 마리오네트 | Java | wdm | JTAG | 영상처리 | 인증 | 질문/답변 | H/W | 알고리즘 | Platform | .net | VB | PPC | Network | android | QT | WWW | Linux |
S3C2410 타이머와 인터럽트로 LED 불켜기
하창호03-16 10:09 | HIT : 4,336

UPLOAD 1 ::Ex07)Timer.zip (49.2 KB) | DOWN : 148
//====================================================================
// ARM 강좌
// S3C2410 타이머와 인터럽트로 LED 불켜기
// Output Formats = Plain binary
// Base of image = (Read-Only)0x30010000

#include <stdlib.h>
#include <string.h>

#include "def.h"
#include "option.h"
#include "s3c2410x.h"
#include "selib.h"
#include "selib_a.h"


void Timer0_Init(void)
{
     rTCFG0=(rTCFG0&0xffffff00)|(128-1);                // Prescaler=1/128 for Timer0
     rTCFG1=(rTCFG1&0xfffffff0)|0x00;                // Mux=1/2 for Timer0
     rTCNTB0=25920-1;                                // Timer0=(66.3552/128/2)
     rTCMPB0=rTCNTB0/2;
     rTCON|=0x02;    
     rTCON=(rTCON&0xfffffff0)|0x09;                        // Interval Mode, Inverter Off, Update        
        
} // end of Timer0_Init(...)        

void Timer1_Init(void)
{
     rTCFG0=(rTCFG0&0xffffff00)|(128-1);                // Prescaler=1/128 for Timer1
     rTCFG1=(rTCFG1&0xffffff0f)|(0x00<<4);                // Mux=1/2 for Timer1
     rTCNTB1=25920-1;                                // Timer1=(66.3552/128/2)
     rTCMPB1=rTCNTB1/2;
     rTCON|=(0x02<<8);    
     rTCON=(rTCON&0xfffff0ff)|(0x09<<8);                // Interval Mode, Inverter Off, Update        
} // end of Timer1_Init(...)

void Timer2_Init(void)
{

     // 50MHz / 250 = 200KHz / 8 = 25 KHz / 25000 = 1 Hz

     rTCFG0=(rTCFG0&0xffff00ff)|((250-1)<<8); // Prescaler=1/250 for Timer2
     rTCFG1=(rTCFG1&0xfffff0ff)|(0x02<<8);         // Mux=1/8 for Timer2
     rTCNTB2=25000-1;                         // Timer2=(50.7/250/8)
     rTCMPB2=rTCNTB2/2;
     rTCON|=(0x02<<12);    
     rTCON=(rTCON&0xffff0fff)|(0x09<<12);         // Interval Mode, Inverter Off, Update        
} // end of Timer2_Init(...)

void Timer0_Isr(void)
{
     // Interrupt Handler
     // rSRCPND = 1 -> BIT_TIMER0 Set = 0, rSRCPND = 0 -> BIT_TIMER0 Set = 0        
     rSRCPND=BIT_TIMER0;                                // Clear pending bits  
     rINTPND=BIT_TIMER0;  

     rGPFDAT^=(1<<4);
        
} // end of Timer0_Isr(...)

void Timer1_Isr(void)
{
     rSRCPND=BIT_TIMER1;                                // Clear pending bits  
     rINTPND=BIT_TIMER1;  

     rGPFDAT^=(1<<5);
} // end of Timer1_Isr(...)

void Timer2_Isr(void)
{
     rSRCPND=BIT_TIMER2;                                // Clear pending bits  
     rINTPND=BIT_TIMER2;  

     rGPFDAT^=(1<<6);
} // end of Timer2_Isr(...)

//===================================================================
void HaltUndef(void)
{
    Uart_Printf("Undefined instruction exception.\n");
    while(1);
}

void HaltSwi(void)
{
    Uart_Printf("SWI exception.\n");
    while(1);
}

void HaltPabort(void)
{
    Uart_Printf("Pabort exception.\n");
    while(1);
}

void HaltDabort(void)
{
    Uart_Printf("Dabort exception.\n");
    while(1);
}
//===================================================================

void Isr_Init(void)
{
   pISR_UNDEF  = (unsigned)HaltUndef;
   pISR_SWI    = (unsigned)HaltSwi;
   pISR_PABORT = (unsigned)HaltPabort;
   pISR_DABORT = (unsigned)HaltDabort;
  
   rINTMOD     = BIT_TIMER0;                             //All=IRQ mode
   rINTMSK     = BIT_ALLMSK;                              //All interrupt is masked.
   rINTSUBMSK  = BIT_SUB_ALLMSK;                  
                        //All sub-interrupt is masked. <- April 01, 2002 SOP
  
   pISR_FIQ           =(unsigned)Timer0_Isr;
   pISR_TIMER1 =(unsigned)Timer1_Isr;  
   pISR_TIMER2 =(unsigned)Timer2_Isr;  

   rINTMSK     = ~(BIT_TIMER0|BIT_TIMER1|BIT_TIMER2);                    
}



void Main(void)
{
        
   Port_Init();    
   MMU_Init();
   ChangeClockDivider(1,1);          // 1:2:4        
   ChangeMPllValue(0xa1,0x3,0x1);    // FCLK=202.8MHz  
  
   Delay(0);        //calibrate Delay()    
   Uart_Init(0,115200);
   Uart_Select(0);
  
   Uart_Printf("\n\nEx07. Test Timer0 \n");
  
//   Timer0_Init();
   Timer1_Init();
   Timer2_Init();
   Isr_Init();
  
   while(1)
   {
      Uart_Printf("%d, %d, %d \n", rTCNTO0, rTCNTO1, rTCNTO2);
      rGPFDAT^=(1<<7);
      Delay(5000);
   } // while(...)
}



36  ARM :: 인터럽트 핸들링    하창호 2007·08·29 4461
35  ARM :: CC 와 Slick Editer & T32 를 연동 프로젝트...    하창호 2007·02·15 4255
34  ARM :: T32 매크로 팁 중 현재 디렉토리 가져오는 방법    하창호 2007·02·08 3795
33  ARM :: 플레쉬에 대해서    하창호 2006·04·12 3876
32  ARM :: 삼성 반도체 홈페이지 Flash S/W 및 PocketStore I...    하창호 2006·04·12 4271
31  ARM :: MMU (memory management unit)    하창호 2005·03·10 4205
30  ARM :: ARM 프로세스이해 교육완수 예제    하창호 2004·03·23 4452
29  ARM :: S3C2410 터치스키린 이용한 그림판 제작 예제    하창호 2004·03·22 5704
28  ARM :: 이종수 박사 ADS, SDT, GCC 를 이용한 예제    하창호 2004·03·22 4879
27  ARM :: S3C2410 LCD에 아날로그 시계 출력하기 (숙제 3)    하창호 2004·03·22 5971
26  ARM :: S3C2410 LCD에 이미지 출력하기 예제    하창호 2004·03·19 6480
25  ARM :: [ASM] 1부터 10 까지 더하기 GCC 사용    하창호 2004·03·19 4027
24  ARM :: [ASM] LOOP 를 이용한 메모리간 복사 GCC 사용  …3  하창호 2004·03·19 4240
23  ARM :: 이종수 박사 ARM 이론강의 요약    하창호 2004·03·18 6598
22  ARM :: ARM Down, GCC 를 받을 수 있는 곳    하창호 2004·03·18 3642
21  ARM :: SMDK2410(S3C2410) Board Reference    하창호 2004·03·18 3823
20  ARM :: S3C2410X USER'S MANUAL    하창호 2004·03·18 3494
19  ARM :: SDT 관련문서    하창호 2004·03·18 3336
18  ARM :: GCC 관련문서    하창호 2004·03·18 3462
17  ARM :: ARM명령어요약    하창호 2004·03·18 3655
16  ARM :: 이종수 박사 ARM 뛰어넘기 교재    하창호 2004·03·18 4999
15  ARM :: ARM Architecture Reference Manual  …1  하창호 2004·03·18 3523
14  ARM :: 에디터 (숙제 2)    하창호 2004·03·17 3548
13  ARM :: S3C2410 IIS를 이용한 사운드 출력 예제    하창호 2004·03·17 4381
12  ARM :: S3C2410 Keyboard와 LCD 제어하기 예제    하창호 2004·03·17 4375
11  ARM :: S3C2410 Keyboard 제어하기 예제    하창호 2004·03·17 4194
10  ARM :: DNW 시리얼을 사용하여 프로그램을 다운로드 및 실행하...    하창호 2004·03·17 5613
9  ARM :: APM DownLoader 방식과 DNW DownLoader ...  …1  하창호 2004·03·17 3853
8  ARM :: S3C2410 간단한 알람 시계 예제 (숙제1)    하창호 2004·03·16 5004
7  ARM :: S3C2410 Watch Dog Timer 사용 예제    하창호 2004·03·16 4484
 ARM :: S3C2410 타이머와 인터럽트로 LED 불켜기    하창호 2004·03·16 4336
5  ARM :: ARM 프로세스의 이해 강의 자료    하창호 2004·03·16 4944
4  ARM :: S3C2410 시리얼로 값 입력받는 계산기 만들기    하창호 2004·03·16 4212
3  ARM :: CPU 최대 주파수를 가지고 최소 타이머 주기 알아내기  …36  하창호 2004·03·16 2937
2  ARM :: S3C2410 버튼 입력받아 LED 불켜기 예제    하창호 2004·03·15 4586
1  ARM :: S3C2410 LED 불켜기 예제    하창호 2004·03·15 4479
1
   
Copyright 1999-2018 Zeroboard / skin by GGAMBO
....