임베디드 프로그래밍  

         
전체 기타 | WinCE | Delphi | VisualC | ARM | Media | SE | 마리오네트 | Java | wdm | JTAG | 영상처리 | 인증 | 질문/답변 | H/W | 알고리즘 | Platform | .net | VB | PPC | Network | android | QT | WWW | Linux |
S3C2410 간단한 알람 시계 예제 (숙제1)
하창호03-16 18:55 | HIT : 5,038

UPLOAD 1 ::Ex04)Rtc.zip (50.7 KB) | DOWN : 134
#include <stdlib.h>
#include <string.h>

//Shin, On Pil
#include "def.h"
#include "option.h"
#include "s3c2410x.h"
#include "selib.h"
#include "selib_a.h"

char sAlm_Msg[1024];

void Rtc_Set(char year, char mon, char date, char hour, char min, char sec)
{
       rRTCCON|=(1<<0);

       rBCDYEAR=( ((year/10)<<4) + (year%10) );
       rBCDMON=( ((mon/10)<<4) + (mon%10) );
       rBCDDATE=( ((date/10)<<4) + (date%10) );
       rBCDHOUR=( ((hour/10)<<4) + (hour%10) );
       rBCDMIN=( ((min/10)<<4) + (min%10) );
       rBCDSEC=( ((sec/10)<<4) + (sec%10) );             

       rRTCCON&=~(1<<0);

} // end of Rtc_Set(...)


void Rtc_Display(void)
{
       Uart_Printf("\r%02X:%02X:%02X-%02X:%02X:%02X\r", rBCDYEAR, rBCDMON,rBCDDATE, rBCDHOUR, rBCDMIN, rBCDSEC);
} // end of Rtc_Display(...)


//===================================================================
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 Alm_Isr()
{
   rSRCPND = BIT_RTC;
   rINTPND = BIT_RTC;

   Uart_Printf("\n %s \n\n\n", sAlm_Msg);
}

void Isr_Init(void)
{
     pISR_UNDEF  = (unsigned)HaltUndef;
     pISR_SWI    = (unsigned)HaltSwi;
     pISR_PABORT = (unsigned)HaltPabort;
     pISR_DABORT = (unsigned)HaltDabort;
    
     rINTMOD     = 0x0;                             //All=IRQ mode
//     rINTCON         = 0x5;                                //Non-vectored,IRQ enable,FIQ disable    
     rINTMSK     = BIT_ALLMSK;                      //All interrupt is masked.
     rINTSUBMSK  = BIT_SUB_ALLMSK;                  //All sub-interrupt is masked. <- April 01, 2002 SOP
     pISR_RTC = (unsigned)Alm_Isr;
     rINTMSK =~(BIT_RTC);
}

void SetTime(void)
{
         char year = 0;
         char mon = 0;
         char date = 0;
         char day = 0;
         char hour = 0;
         char min = 0;
         char sec = 0;                              

         Uart_Printf("\n\n\nSet Time\n");


         Uart_Printf("\nYear:");
         year = Uart_GetIntNum();
                                    
         Uart_Printf("\nMon:");
         mon = Uart_GetIntNum();
                                                                        
         Uart_Printf("\nDate:");
         date = Uart_GetIntNum();
                                                                                                                                              
         Uart_Printf("\nHour:");
         hour = Uart_GetIntNum();
                                                                        
         Uart_Printf("\nMin:");
         min = Uart_GetIntNum();
                                                                        
         Uart_Printf("\nSec:");
         sec = Uart_GetIntNum();
                                    
         Rtc_Set(year, mon, date, hour, min, sec);
}

void SetAlarm(void)
{
         char year = 0;
         char mon = 0;
         char date = 0;
         char day = 0;
         char hour = 0;
         char min = 0;
         char sec = 0;                              

         Uart_Printf("\n\n\nSet Alarm\n");

         Uart_Printf("\nYear:");
         year = Uart_GetIntNum();
                                    
         Uart_Printf("\nMon:");
         mon = Uart_GetIntNum();
                                                                        
         Uart_Printf("\nDate:");
         date = Uart_GetIntNum();
                                                                        
         Uart_Printf("\nHour:");
         hour = Uart_GetIntNum();
                                                                        
         Uart_Printf("\nMin:");
         min = Uart_GetIntNum();
                                                                        
         Uart_Printf("\nSec:");
         sec = Uart_GetIntNum();

         rRTCCON|=(1<<0);

         rALMYEAR=( ((year/10)<<4) + (year%10) );
         rALMMON=( ((mon/10)<<4) + (mon%10) );
         rALMDATE=( ((date/10)<<4) + (date%10) );
         rALMHOUR=( ((hour/10)<<4) + (hour%10) );
         rALMMIN=( ((min/10)<<4) + (min%10) );
         rALMSEC=( ((sec/10)<<4) + (sec%10) );             

        rRTCALM = 0x47;

         rRTCCON&=~(1<<0);
}

void SetMessage(void)
{
        int i;
        for(i=0; i<1024; i++) sAlm_Msg[i] = (char)0;
         Uart_Printf("\n\n\nSet Message\n");
         Uart_GetString(sAlm_Msg);
         Uart_Printf("Message: %s\n", sAlm_Msg);
}

void Main(void)
{
     char cPutChar;
        
     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\nEx04. Test RTC(Realtime Clock) \n");
     Rtc_Set(3, 3, 3, 3, 3, 3);

     Isr_Init();
    
     while(1)
     {

             if (cPutChar != '0')Uart_Printf("\n1.Set Time 2. Set Alarm 3. Set Message\n");

        cPutChar = Uart_GetKey();
        switch(cPutChar) {
                case '1':
                        SetTime();
                        break;
                case '2':
                        SetAlarm();
                        break;
                case '3':
                        SetMessage();
                        break;
                default:
                        cPutChar = '0';
                         Rtc_Display();
                        break;
        }
        
        Led_Display(0x0f); Delay(1000);
        Led_Display(0x00); Delay(1000);
          
     } // while(...)
        
}


36  ARM :: 인터럽트 핸들링    하창호 2007·08·29 4496
35  ARM :: CC 와 Slick Editer & T32 를 연동 프로젝트...    하창호 2007·02·15 4284
34  ARM :: T32 매크로 팁 중 현재 디렉토리 가져오는 방법    하창호 2007·02·08 3826
33  ARM :: 플레쉬에 대해서    하창호 2006·04·12 3912
32  ARM :: 삼성 반도체 홈페이지 Flash S/W 및 PocketStore I...    하창호 2006·04·12 4311
31  ARM :: MMU (memory management unit)    하창호 2005·03·10 4236
30  ARM :: ARM 프로세스이해 교육완수 예제    하창호 2004·03·23 4486
29  ARM :: S3C2410 터치스키린 이용한 그림판 제작 예제    하창호 2004·03·22 5752
28  ARM :: 이종수 박사 ADS, SDT, GCC 를 이용한 예제    하창호 2004·03·22 4919
27  ARM :: S3C2410 LCD에 아날로그 시계 출력하기 (숙제 3)    하창호 2004·03·22 6012
26  ARM :: S3C2410 LCD에 이미지 출력하기 예제    하창호 2004·03·19 6536
25  ARM :: [ASM] 1부터 10 까지 더하기 GCC 사용    하창호 2004·03·19 4072
24  ARM :: [ASM] LOOP 를 이용한 메모리간 복사 GCC 사용  …3  하창호 2004·03·19 4278
23  ARM :: 이종수 박사 ARM 이론강의 요약    하창호 2004·03·18 6652
22  ARM :: ARM Down, GCC 를 받을 수 있는 곳    하창호 2004·03·18 3680
21  ARM :: SMDK2410(S3C2410) Board Reference    하창호 2004·03·18 3854
20  ARM :: S3C2410X USER'S MANUAL    하창호 2004·03·18 3526
19  ARM :: SDT 관련문서    하창호 2004·03·18 3370
18  ARM :: GCC 관련문서    하창호 2004·03·18 3494
17  ARM :: ARM명령어요약    하창호 2004·03·18 3689
16  ARM :: 이종수 박사 ARM 뛰어넘기 교재    하창호 2004·03·18 5044
15  ARM :: ARM Architecture Reference Manual  …1  하창호 2004·03·18 3562
14  ARM :: 에디터 (숙제 2)    하창호 2004·03·17 3579
13  ARM :: S3C2410 IIS를 이용한 사운드 출력 예제    하창호 2004·03·17 4416
12  ARM :: S3C2410 Keyboard와 LCD 제어하기 예제    하창호 2004·03·17 4405
11  ARM :: S3C2410 Keyboard 제어하기 예제    하창호 2004·03·17 4241
10  ARM :: DNW 시리얼을 사용하여 프로그램을 다운로드 및 실행하...    하창호 2004·03·17 5645
9  ARM :: APM DownLoader 방식과 DNW DownLoader ...  …1  하창호 2004·03·17 3884
 ARM :: S3C2410 간단한 알람 시계 예제 (숙제1)    하창호 2004·03·16 5038
7  ARM :: S3C2410 Watch Dog Timer 사용 예제    하창호 2004·03·16 4519
6  ARM :: S3C2410 타이머와 인터럽트로 LED 불켜기    하창호 2004·03·16 4377
5  ARM :: ARM 프로세스의 이해 강의 자료    하창호 2004·03·16 4977
4  ARM :: S3C2410 시리얼로 값 입력받는 계산기 만들기    하창호 2004·03·16 4251
3  ARM :: CPU 최대 주파수를 가지고 최소 타이머 주기 알아내기  …36  하창호 2004·03·16 2970
2  ARM :: S3C2410 버튼 입력받아 LED 불켜기 예제    하창호 2004·03·15 4620
1  ARM :: S3C2410 LED 불켜기 예제    하창호 2004·03·15 4512
1
   
Copyright 1999-2018 Zeroboard / skin by GGAMBO
....