임베디드 프로그래밍  

         
전체 기타 | WinCE | Delphi | VisualC | ARM | Media | SE | 마리오네트 | Java | wdm | JTAG | 영상처리 | 인증 | 질문/답변 | H/W | 알고리즘 | Platform | .net | VB | PPC | Network | android | QT | WWW | Linux |
S3C2410 IIS를 이용한 사운드 출력 예제
하창호03-17 15:55 | HIT : 4,416

UPLOAD 1 ::Ex16)IIS.zip (615.2 KB) | DOWN : 137
#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"
#include "graphics.h"

#include ".\images\logo.h"
#include ".\sounds\chimes.h"

volatile int tx=0, ty=0;
volatile int cx, cy;    
volatile int px1, py1, px2, py2;
volatile int Touch_Config=0, Touch_Flag=0, Index=0;

//===================================================================
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 __irq TouchScreen(void)
{
    rINTSUBMSK|=(BIT_SUB_ADC|BIT_SUB_TC);        // Mask sub interrupt (ADC and TC)

    // TC(Touch screen Control) Interrupt        
    if(rADCTSC&0x100)
    {
        Uart_Printf("\nStylus Up!!\n");
        rADCTSC&=0xff;        // Set stylus down interrupt
    }
    else
    {
        Uart_Printf("\nStylus Down!!\n");
        // <Auto X-Position and Y-Position Read>
        rADCTSC=(0<<8)|(1<<7)|(1<<6)|(0<<5)|(1<<4)|(1<<3)|(1<<2)|(0);
        // Stylus Down,Don't care,Don't care,Don't care,Don't care,XP pullup Dis,Auto,No operation

        rADCCON|=0x1;        // Start Auto conversion

        while(rADCCON & 0x1);                //check if Enable_start is low
        while(!(0x8000&rADCCON));        // Check ECFLG
        
        tx=(0x3ff&rADCDAT0);
        ty=(0x3ff&rADCDAT1);
        Uart_Printf("X-Posion[AIN5] is %04d\n", tx);
        Uart_Printf("Y-Posion[AIN7] is %04d\n", ty);
        
        if(Touch_Config)
        {
                cx=(ty-py1)*(240-10)/(py2-py1)+5;
                cy=(tx-px2)*(320-10)/(px1-px2)+5;
                cy=320-cy;
                if(cx<0) cx=0;
                if(cx>=240) cx=240-1;
                if(cy<0) cy=0;
                if(cy>=320) cy=320-1;        
        }
        
        rADCTSC=(1<<8)|(1<<7)|(1<<6)|(0<<5)|(1<<4)|(0<<3)|(0<<2)|(3);
           // Stylus Up,Don't care,Don't care,Don't care,Don't care,XP pullup En,Normal,Waiting mode
           
    }
    rSUBSRCPND|=BIT_SUB_TC;
    rINTSUBMSK=~(BIT_SUB_TC);        // Unmask sub interrupt (TC)    
    ClearPending(BIT_ADC);
}
                        

void __irq DMA2_Done(void)
{
    rSRCPND = BIT_DMA2;                 //Clear pending bit
    rINTPND = BIT_DMA2;
    rINTPND;

    WrUTXH0('@');
/*    
    if(!which_Buf)
        which_Buf = 1;
    else
        which_Buf = 0;
*/        
}


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_ADC=(unsigned)TouchScreen;
     //rINTMSK=~(BIT_ADC);
     //rINTSUBMSK=~(BIT_SUB_TC);
    
     pISR_DMA2  = (unsigned)DMA2_Done;
     rINTMSK    = ~( BIT_DMA2);        
        
}


void Main(void)
{
     int i;
        
     Port_Init();    
     MMU_Init();
     ChangeClockDivider(1,1);                  // 1:2:4        
    ChangeMPllValue(0x96,0x5,0x1);          //FCLK=135428571Hz, PCLK=3.385714MHz

     Delay(0);        //calibrate Delay()    
     Uart_Init(33857142,115200);    
     Uart_Select(0);

     Uart_Printf("\n\nEx16. Test IIS & UDA1341 \n");
    
//     Graphic_Init();
//     Lcd_Clrscr();


     Init_Uda1341();    
     Isr_Init();

/*
    
     rADCDLY=(50000);        // ADC Start or Interval Delay
     rADCCON = (1<<14)|(39<<6)|(0<<3)|(0<<2)|(0<<1)|(0);        
     // Enable Prescaler,Prescaler,AIN5/7 fix,Normal,Disable read start,No operation
     rADCTSC=(0<<8)|(1<<7)|(1<<6)|(0<<5)|(1<<4)|(0<<3)|(0<<2)|(3);//tark
     // Down,YM:GND,YP:AIN5,XM:Hi-z,XP:AIN7,XP pullup En,Normal,Waiting for interrupt mode    
    
     Lcd_Bar(0,0,240-1,320-1,WHITE);
     tx=0;
     Lcd_Hline(5,0,10-1,BLUE);
     Lcd_Vline(5,0,10-1,BLUE);
     Lcd_Printf(10,10, BLUE, WHITE, 1,1,"Press the cross icon");
     Delay(10000);
     while(tx==0);
     px1=tx;
     py1=ty;
     Lcd_Hline(5,0,10-1,WHITE);
     Lcd_Vline(5,0,10-1,WHITE);
     Lcd_Printf(10,10, WHITE, WHITE, 1,1,"Press the cross icon");    

     tx=0;
     Lcd_Hline(320-5,240-0,240-10+1,BLUE);
     Lcd_Vline(240-5,320-0,320-10+1,BLUE);
     Lcd_Printf(50,300, BLUE, WHITE, 1,1,"Press the cross icon");
     Delay(10000);
     while(tx==0);
     px2=tx;
     py2=ty;    
     Lcd_Hline(320-5,240-0,240-10+1,WHITE);
     Lcd_Vline(240-5,320-0,320-10+1,WHITE);
     Lcd_Printf(50,300, WHITE, WHITE, 1,1,"Press the cross icon");
    
     Lcd_Bar(0,0,240-1,320-1,WHITE);    
     Lcd_Printf(50,100, BLUE, WHITE, 1,1,"%d, %d, %d, %d", px1, py1, px2, py2);  
    

     Lcd_Bar(0,0,240-1,320-1,WHITE);
     Lcd_Printf((240-16*5)/2,2,BLACK,WHITE,2,2,"TOUCH");
     Lcd_Printf(120-64,300,BLUE,WHITE,1,1,"www.armkorea.com");  
        
     Touch_Config=1;
  
*/
      
      while(1)
      {
              PlayWav(chimes);
                Uart_Printf(".");  
                Delay(2000);      
                             
      }
        
}


36  ARM :: 인터럽트 핸들링    하창호 2007·08·29 4497
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 4312
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 6537
25  ARM :: [ASM] 1부터 10 까지 더하기 GCC 사용    하창호 2004·03·19 4073
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 3495
17  ARM :: ARM명령어요약    하창호 2004·03·18 3690
16  ARM :: 이종수 박사 ARM 뛰어넘기 교재    하창호 2004·03·18 5045
15  ARM :: ARM Architecture Reference Manual  …1  하창호 2004·03·18 3562
14  ARM :: 에디터 (숙제 2)    하창호 2004·03·17 3579
 ARM :: S3C2410 IIS를 이용한 사운드 출력 예제    하창호 2004·03·17 4416
12  ARM :: S3C2410 Keyboard와 LCD 제어하기 예제    하창호 2004·03·17 4406
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 3885
8  ARM :: S3C2410 간단한 알람 시계 예제 (숙제1)    하창호 2004·03·16 5039
7  ARM :: S3C2410 Watch Dog Timer 사용 예제    하창호 2004·03·16 4519
6  ARM :: S3C2410 타이머와 인터럽트로 LED 불켜기    하창호 2004·03·16 4377
5  ARM :: ARM 프로세스의 이해 강의 자료    하창호 2004·03·16 4978
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 4513
1
   
Copyright 1999-2018 Zeroboard / skin by GGAMBO
....