[AVR]/Mega82011. 10. 31. 01:25

[Mega88-SS EVM] 초소형 Arduio 테스트 보드 제작

[Mega88-SS EVM] 초소형 Arduio 테스트 보드 제작


ATmgea8 QFN타입을 이용하여 초소형의 보드를 제작 했다. 기존에 제작했던 보드와 호환성을 유지하면서 소형으로 만들어 여러 용도로 사용하고 있다.


Atmega88의 UART, SPI, I2C, ADC등 가장 필수 적인 기능만 두어 초소형으로 만들었다.





2.54 피치로 브레드보드에 연결하여 테스트 가능하다.






기존의 MSP430등의  [SS-Type EVM EVMM] 보드와 핀 호환 되도록  제작 하였다.






[Atmege8-SS EVM]  ISP 및 확장 테스트 보드
모든 포트는 빠져 있고 ISP 및 USB2UART를 이용하여 디버깅 가능하다.







Posted by nexp

댓글을 달아 주세요

[AVR]/Mega82009. 9. 16. 20:41

ATMega168 을 이용한 오버클럭 속도 측정

ATMega168 을 이용한 오버클럭 속도 측정



ATMega168 을 이용해서 GPIO 토글속도를 측정 했다. Mega168는 20Mhz까지 구동 가능하므로 24Mhz에서 측정해 보았다.
24Mhz -> 209ns/2.4Mhz

[다른 MCU속도 측정 결과]와 비교 하면 저렴한 Mega168에서 상당히 빠른것 같다.

ATMega168 GPIO속도 측정 소스코드
#define Led1Toggle()              Tbi(LED1_PORT, LED1_BIT)   //PORTB ^= BIT1

int main(void)
{
 SystemInit();

 Led1Init();
 Led1On();

 while (1)
 {
  Led1Toggle();
  //Delay(100);
 }  
}


WinAVR(AVR Gcc) 옵티마이즈 옵션



컴파일러의 어샘블 결과는 아래와 같다. 5 머쉰사이클 정도 나온다.
Level-s 209ns/2.4Mhz
 while (1)
 {
  Led1Toggle();
  88: 92 e0        ldi r25, 0x02 ; 2
  8a: 85 b1        in r24, 0x05 ; 5
  8c: 89 27        eor r24, r25
  8e: 85 b9        out 0x05, r24 ; 5
  90: fc cf        rjmp .-8       ; 0x8a <main+0xa>

Level-0 500ns/1Mhz
  while (1)
 {
  Led1Toggle();
  a8: a5 e2        ldi r26, 0x25 ; 37
  aa: b0 e0        ldi r27, 0x00 ; 0
  ac: e5 e2        ldi r30, 0x25 ; 37
  ae: f0 e0        ldi r31, 0x00 ; 0
  b0: 90 81        ld r25, Z
  b2: 82 e0        ldi r24, 0x02 ; 2
  b4: 89 27        eor r24, r25
  b6: 8c 93        st X, r24
  b8: f7 cf        rjmp .-18      ; 0xa8 <main+0x28>
Posted by nexp

댓글을 달아 주세요

[AVR]/Mega82009. 5. 8. 22:40

[Mega8-SM EVM] 소형 AVR보드 제작

[Mega8-SM EVM] 소형 AVR보드 제작



기존 [Mega8-s EVM]에 확장해서 [SM-Type EVM] 로 제작 했다. SM-Type은 USB2Seral 모듈이나 Bluetooth 모듈 등을 연결할수 있고 SPI, I2C, UART등의 자주사용하는 기능을 표준화된 핀맵으로 정의해서 제작하고 있다. 또한 소프트웨어 USB스택을 테스트 할 수 있도록 USB커넥터를 연결 하능하다. (참고 USB 관련 테스트 예제, USB 호스트 예제)



USB커넥터를 두어 SW USB Stack을 테스트 할 수 있을 뿐아니라 USB2UART가 있어 디버깅 및 Arduino 를 쉽게 포팅할 수 있도록 제작했다.



회로도

확장 커넥터


on board LED


USB Connector



Posted by nexp

댓글을 달아 주세요

[MSP430]/MSP430F20132009. 3. 18. 21:34

MSP430 I2C 전송 속도 테스트

MSP430 I2C 전송 속도 테스트




MSP430F2013 보드는 UART가 없어 I2C로 데이터를 수집테스트 정리

구성도
MSP430F2013 (I2C Slave) ->AVR (I2C Master) -> USB2Serial -> PC Host



AVR - > 8Mhz 구동
MSP430F2013 -> 16Mhz구동

2Byte 데이터 수집 속도 측정


H/W 구동시

100Khz
구동시 450us 소요된다.

150Khz 까지 구동 가능하고 이때는 300us 소요된다. (200Khz 이상부터 깨지기 시작한다.)

->메인클럭을 16Mhz까지 올리니 400khz도 문제 없이 잘 동작한다.
 

S/W I2C 구현시
AVR 8Mhz클럭에서  600us 소요된다.

 


H/W I2C
구현 예제

unsigned char ReadByte8( unsigned char add)

{

           unsigned char data_in = 0;

          

           i2c_start_wait(add);

           data_in = i2c_readAck(); 

           i2c_stop();

 

           return (data_in);

}

 

S/W I2C 구현 예제

unsigned char ReadByte8( unsigned char add)

{

           unsigned char data_in = 0;

          

           I2C_Start();

           #if _USE_I2C_DELAY

           Delay_us(I2C_DELAY);

           #endif

 

           I2C_PutByte(add);

           #if _USE_I2C_DELAY

           Delay_us(I2C_DELAY+10);

           #endif  

           I2C_Nack();

 

           #if _USE_I2C_DELAY       

           Delay_us(I2C_DELAY);

           #endif

 

           data_in = I2C_GetByte();

           #if _USE_I2C_DELAY

           Delay_us(I2C_DELAY);

           #endif

           I2C_Nack();

 

           //Delay_us(100);

           I2C_Stop();

 

           return (data_in);

}

Posted by nexp

댓글을 달아 주세요

[INTERFACE]/USB2008. 7. 30. 22:40

[Mega8-s EVM] USB를 이용한 LED제어 - 호스트프로그램 작성

[Mega8-s EVM] USB를 이용한 LED제어 - 호스트프로그램 작성

사용자 삽입 이미지


VB 소스코드




VB를 이용하여 Mega8 USB보드의 LED를 제어하는 소프트웨어를 작성해 보았다.
예전 USB2Serial 예제를 그대로 사용하기 위해 최대한 간단하게 작성했다



예전 프로그램을 약간 수정하여 보레이트는 9600으로 설정하고 PORT는 콤보박스의 설정에 따라 초기화 할 수 있도록 하였다.
    'com포트 열기
    MSComm1.Settings = "9600,n,8,1"
    MSComm1.CommPort = m_ComPort
    MSComm1.PortOpen = True


프로그램 실행
USB를 이용한 atMega8 보드의 LED제어를 위한 호스트 프로그램 실행


테스트 동영상
Posted by nexp

댓글을 달아 주세요

  1. simul

    대단하시네요.. 간단하게 Input, Output PCB만들려고 하는데, 참고 자료가 있을까요..??

    Parallel로는 만들었었는데요..(Switch 만들어서, 전기가 통하면 In / LED 붙여서 OutPort 제어등..)

    USB로 만들려면 반드시 Chip을 붙여야 하나요..?? LED같은 Output 제어하는것은 몇군데에서 봤는데,
    Input 제어(뭔가를 누르면 Computer에서 인식)는 별로 없는것 같아요..

    PCB 도면등 있으면 부탁드립니다.

    너무 횡설수설 했네요.. 수고하세요

    2008.08.16 18:27 [ ADDR : EDIT/ DEL : REPLY ]
  2. 이 예제는 AVR펌웨어에서 소프트웨어적으로 USB처리를 하는 방식입니다.
    속도는 USB에 비해 느리구요... 펌웨어 부하가 늘어 날 수록 불안해 질 수 있습니다.
    USB칩을 사용하면 CPU의 부하도 줄이고 상당히 안정적 입니다. 상품으로 판매 할 목적이라면 전용의 칩을 사용할 것을 권장드리구요...

    Input은 output과 동일하구요... 소스코드에 약간만 추가하시면 됩니다.

    회로는 블로그에 올라가 있는데...

    2008.08.19 13:05 신고 [ ADDR : EDIT/ DEL : REPLY ]