'2013/04'에 해당되는 글 5건

  1. 2013.04.16 ZEO-S ADC 샘플링 테스트 C#
  2. 2013.04.10 ZEO-IO BOARD – ZEO IO 실험 보드
  3. 2013.04.08 WAT-AVR128_PLUS 모듈
  4. 2013.04.08 WAT-LED
  5. 2013.04.08 WAT-AT45DB SPI 데이터 플래시

 

ZEO-S 로 ADC 을 실험해 보겠습니다.

 

 

 

준비

 

먼저 ZEO-S 의 PB13 핀에 360hz 파형을 입력으로 합니다.

(360hz 파형은 Function Generator 를 이용하시거나 DAC 기능이 있는 MCU 로 만들 수 있습니다. )

 

 

 

 

 

분석 1

 

47.619Khz 로 샘플링을 하면 아래와 같이 됩니다.

 

 

 

 

그래프의 397 픽셀 동안 3개의 파형이 발생합니다.

즉 1주기는 약 132 픽셀에 나타납니다.

 

47.619 Khz / 132 는 약 360 Hz 로 계산됩니다.

 

360Hz 의 파형을 47.619 Khz로 정확히 샘플링 합니다.

 

 

 

 

 

 

 

 

분석 2

 

142.857 Khz 로 샘플링을 하면 아래와 같이 됩니다.

 

 

 

그래프의 397 픽셀 동안 1개의 파형이 발생합니다.

즉 1주기는 약 397 픽셀에 나타납니다.

 

142.857 Khz / 397 는 약 360 Hz 로 계산됩니다.

 

360Hz 의 파형을 142.857 Khz로 정확히 샘플링 합니다.

 

 

 

 

 

 

 

분석 3

 

176.470 Khz 로 샘플링을 하면 아래와 같이 됩니다.

 

 

 

 

 

그래프의 490 픽셀 동안 1개의 파형이 발생합니다.

즉 1주기는 약 490 픽셀에 나타납니다.

 

176.470 Khz / 490 는 약 360 Hz 로 계산됩니다.

 

360Hz 의 파형을 176.470 Khz로 정확히 샘플링 합니다.

 

 

 

 

 

 

 

분석 4

 

142.857 Khz 로 샘플링을 하면 아래와 같이 됩니다.

 

 

 

그래프의 397 픽셀 동안 1개의 파형이 발생합니다.

즉 1주기는 약 397 픽셀에 나타납니다.

 

142.857 Khz / 397 는 약 360 Hz 로 계산됩니다.

 

360Hz 의 파형을 142.857 Khz로 정확히 샘플링 합니다.

 

 

 

 

 

분석 3

 

222.222 Khz 로 샘플링을 하면 아래와 같이 됩니다.

 

 

 

 

 

그래프의 617 픽셀 동안 1개의 파형이 발생합니다.

즉 1주기는 약 617 픽셀에 나타납니다.

 

222.222 Khz / 617 는 약 360 Hz 로 계산됩니다.

 

 

360Hz 의 파형을 222.222 Khz로 샘플링하게 되면 손실데이터가 발생하는데, 이는

ZEO-S 에 있는 ADC 데이터를 컴퓨터에서 빠르게 가져오지 못해 발생하는 겁니다.

(위 그림에서는 2151개의 손실 데이터 발생)

 

이 문제를 해결할 수 있는 방법이 몇 가지 있습니다.

  • 컴퓨터 하드웨어 업그레이드
  • ZEO 용 응용 프로그램 외 모든 프로세스 종료(특히 인터넷, 백신)
  • 메모리가 큰 ZEO-M 으로 대체

 

 

ZEO-S 의 빠른 ADC 데이터 처리는 컴퓨터 사양에 큰 영향을 받습니다.

손실된 데이터 값을 잘 체크하여 최대의 샘플링 주기를 찾으셔야 합니다.

 

 

출처: http://whiteat.com/46280

 



Posted by WhiteAT
,

 

ZEO-S 모듈의 I/O를 실험할 수 있는 보드 입니다.

INPUT, OUTPUT, PWM 등을 실험할 수 있습니다.

 

 

ZEO-S 를 장착하지 않은 상태

 

 

 

 

ZEO-S 를 장착한 상태

 

 

 

ZEO-S 의 연결 핀

 

IO 보드

ZEO-S

스위치

SW1

PA12

SW2

PA13

SW3

PA14

SW4

PA15

SW5

PB12

SW6

PB13

SW7

PB14

SW8

PB15

LED

D1

PA0

D2

PA1

D3    

PA2

D4

PA3

D5

PA4

D6

PA5

D7

PA6

D8

PA7

D9

PA8

D10

PA9

D11

PA10

D12

PA11

D13

PA16

D14

PB0

D15

PB1

D16

PB2

D17

PB3

D18

PB4

D19

PB5

D20

PB6

D21

PB7

D22

PB8

D23

PB9

D24

D25

PB10

PB11

 

 

 

 

 

원문: http://whiteat.com/87092 

 

Posted by WhiteAT
,

WAT-AVR128_PLUS 모듈

AVR키트 2013. 4. 8. 17:21




WAT-AVR128 모듈과
확장 보드의 기능을 합친 모듈 입니다.



WAT-AVR128 보드 얼.pdf

WATAVR128_manual.pdf

AVR128 모듈을 다른 보드에 연결하여 사용할수 있는 확장 보드입니다.



PORTA,
PORTB,
PORTC,
PORTD,
PORTE,
PORTF

등의 포트를 다른 보드와 연결해서 사용할 수 있습니다.

 

 

 

 

 

 

 

 

쇼핑몰에서 구매하기

 

 

 

 

 

Posted by WhiteAT
,

WAT-LED

전자 키트 2013. 4. 8. 16:15
 


WAT-AVR128 모듈과 연결하여 LED ON/OFF 실험을 할수 있는 모듈입니다.

 

 

 



 

 

LED 를 타원 형태로 배치하여 LED 회전(정방향, 역방향), 이동 등의 다양한 실험을 할 수 있습니다.

 

 

 

 

/*

  EX_01_01.c

 

  PORTE에연결된LED 무한히 회전하기

 

  Main Clock : 11.0592Mhz 

 

  AVRStudio  4.18

  2012-01-08

 

  홈페이지:  http://whiteat.com

  쇼핑몰:    http://kit128.com

 

*/

 

#include <avr/io.h>

 

// 일정시간딜레이

void Delay()

{

         register unsigned long i;

         for(i = 0; i < 300000; i++)

         {

                  asm volatile(" PUSH  R0 ");

                  asm volatile(" POP   R0 ");

                  asm volatile(" PUSH  R0 ");

                  asm volatile(" POP   R0 ");

                  asm volatile(" PUSH  R0 ");

                  asm volatile(" POP   R0 ");

                 asm volatile(" PUSH  R0 ");

                 asm volatile(" POP   R0 ");

                 asm volatile(" PUSH  R0 ");

    asm volatile(" POP   R0 ");     

         }

}

 

int main()

{

         DDRE = 0xFF; // ALL OUTPUT

         PORTE = 0xFE;         // PORTE.0    LED ON

 

         while(1)

         {

                  Delay();

 

                  if(PORTE == 0x7F)    // 마지막LED ON 되었다면.

                  {

                           // 처음LED ON 되게

                           PORTE = 0xFE;         // PORTA.0    LED ON

                  }

                  else                               // 그렇지않다면

                  {

                           PORTE <<= 1;         // 한칸이동한후

                           PORTE |= 1;            // 마지막LED OFF 되게

                  }

         }

}

 

 


Posted by WhiteAT
,

 

 

 

 

AT45DB041D 데이터 플래시를 SPI 로 구동할 수 있는 모듈입니다.

MCU 의 구동에 추가적인 메모리가 필요할 때 SPI 기능을 실험할 때

적합한 모듈입니다.

WAT-AVR128 에 바로 연결하여 사용할 수 있습니다.

 

 


 






ATMEGA128 용 소스코드

 

/*

         EX_06_01.c

 

         SPI DataFlash 읽고쓰는예제입니다.

 

  SPI 를초기화한후

  데이터를쓰고읽은후

  쓰고읽은데이터가동일한지확인합니다.

 

         AVRStudio  4.18

         2013-03-08

 

 

*/ 

 

#include <stdio.h>

 

#include <avr/io.h>

#include "WAT128.h"

#include "AT45DB161D.h"

 

 

BYTE Data[256];   // w

BYTE ReadData[256];

 

 

int main()

{

  const BYTE BufferNum =AT45DB_BUFFER_1;

  const BYTE PageNum =4;

 

  DDRA = 0xFF;

  PORTA = 0xFF;

 

  // AT45DB SPI 초기화  

  SpiInit();

  SFlash_GetID();

 

  // 버퍼로한번써줘야한다.(중요)

  PageToBuffer(1,0);

 

  // Data 에임의의값

  for(int i=0;i<256;i++)

  {

    Data[i] = i;

  }

 

  // Data 값을버퍼에넣기

  SFlash_WriteBuffer(BufferNum,0,Data,256);

 

  // 버퍼값을페이지(실제저장할위치)에쓰기

  SFlash_BufferToPage(BufferNum, PageNum, 1);

 

 

  // 읽어올변수(ReadData)에임의의값쓰기

  for(int i=0;i<256;i++)

  {

    ReadData[i] = 0xff;

  }

 

  // 페이지데이터를버퍼로가져오기

  PageToBuffer(BufferNum,PageNum);

 

  // 버퍼데이터를ReadData로가져오기

  GetMemBuffer(ReadData);

 

  //

  for(int i=0;i<256;i++)

  {

    if(ReadData[i] != Data[i] )

    {

      while (1)

      {

        // 쓰고읽은데이터가다르다면

        PORTA = 0x55;

 

      }

    }

  }

 

  // 쓰고읽은데이터가동일하다면

  PORTA = 0xf0;;

  while(1)

  {    

  }

}       

 


Posted by WhiteAT
,