[AVR]/Mega82018. 8. 22. 16:54

AVR Studio7 - Data Visualizer로 ADC데이터를 그래프로 출력하기

AVR Studio7 - Data Visualizer로 ADC데이터를 그래프로 출력하기





 AVR Studio7 의 새로운 기능중에  Data Visualize 가 있어 데이터를 그래프로 출력 해 주거나 분석 할 수 있는 툴이 제공된다.

이 기능을 익혀 두면 별도의 소프트웨어 없이 디버깅을 할 수 있어 테스트 할때 유용할 것같다.



먼저 Atmel START로 프로젝트 생성해서 디바이스를 추가 하자. ADC를 이용해서 가변저항의 저압값을 출력하는 예제를 테스트 해 보면 좋을것 같다.





ADC는 PC0채널을 입력으로 해서 적절한 값으로 세팅한다.








Data Visualizer를 클릭하면 해서 Serial Port Control Panel 을 추가해 시리얼 포트로 전송되는 데이터 값을 확인하자.

값이 정상적으로 들어오는것을 확인후 스코프 화면을 추가해 시리얼 데이터를 그래프로 출력할 수 있다.

시리얼 포트 출력을 드래그 해서 오실로 입력(New plot)으로 드래그 해 주면 쉽게 연결할 수 있다.




MCU 회사들이 점점더 소프트웨어 지원에 많은 투자를 하는것 같다.


Posted by nexp

댓글을 달아 주세요

[AVR]/Mega82018. 8. 22. 05:55

ATmega88 EVM - Atmel START UART 테스트 예제

ATmega88 EVM - Atmel START UART 테스트 예제




Atemel Studio로 새로운 Atmel START 프로젝트를 생성해서 


"Add software component" 메뉴로 UART 드라이버를 추가 한다.






UART_0 가 생성되고 설정을 클릭해 보면 핀맵 및 보레이트 등의 UART 관련 설정들을 설정할 수 있다.

그리고 printf 지원 여부도 선택 할 수 있다.





이후에 프로젝트 생성하면 기본 코드가 자동으로 생성된다.





자동 생성된 코드는 usart_basic.c 파일로 저장되어 있고 주요 함수를 보면 아래와 같다.

AVR UART 초기화 코드

int8_t USART_0_init()

{


// Module is in UART mode


/* Enable USART0 */

PRR &= ~(1 << PRUSART0);


#define BAUD 115200


#include <utils/setbaud.h>


UBRR0H = UBRRH_VALUE;

UBRR0L = UBRRL_VALUE;


UCSR0A = USE_2X << U2X0 /*  */

         | 0 << MPCM0;  /* Multi-processor Communication Mode: disabled */


UCSR0B = 1 << RXCIE0    /* RX Complete Interrupt Enable: enabled */

         | 0 << UDRIE0  /* USART Data Register Empty Interupt Enable: disabled */

         | 1 << RXEN0   /* Receiver Enable: enabled */

         | 1 << TXEN0   /* Transmitter Enable: enabled */

         | 0 << UCSZ02; /*  */


// UCSR0C = (0 << UMSEL01) | (0 << UMSEL00) /*  */

// | (0 << UPM01) | (0 << UPM00) /* Disabled */

// | 0 << USBS0 /* USART Stop Bit Select: disabled */

// | (1 << UCSZ01) | (1 << UCSZ00); /* 8-bit */


#if defined(__GNUC__)

stdout = &USART_0_stream;

#endif


return 0;

}



AVR UART 송수신 코드

void USART_0_write(const uint8_t data)

{

while (!(UCSR0A & (1 << UDRE0)))

;

UDR0 = data;

}



uint8_t USART_0_read()

{

while (!(UCSR0A & (1 << RXC0)))

;

return UDR0;

}





Posted by nexp

댓글을 달아 주세요

[AVR]/Mega82018. 8. 22. 05:54

AVR Studio7 Atmel START 을 이용한 개발 환경설정

 AVR Studio7 Atmel START을 이용한 개발 환경설정






AVR 개발환경으로 Atmel START를 사용해 보았다. ST의 경우 CubeIDE를 제공하는데 요즘 MUC 추세가 개발환경의 편리성이 아닐까...


간단히 사용해본 소감은 상당히 편리하고 안정적이다. CubeIDE의 경우 뭔가 불편한 점들이 많았는데 그런 불편한 점들이 개선된 느낌.



아무튼 Atmel START를 사용하려면  웹상에서 개발하는 방법이 있고 atmel-studio-7를 설치 해서 사용할 수 도 있다.

https://start.atmel.com/


https://www.microchip.com/mplab/avr-support/atmel-studio-7






Atemel Studio 설치 하고 새로운 프로젝트를 Atmel START 메뉴로 생성한다.





AVR 디바이스를 선택한다.





각종 핀 설정 및 기능을 설정한다.

설정이 끝나면 Generate Project 로 프로젝트를 성성한다.






Atemel Studio에서 자동 코드가 생성되며 컴파일 및 프로그밍 할 수 있다.






atmel_start_pins.h 파일에서 생성 코드의 라이브러리를 확인 할 수 있다.





참고로 AVRISP  mkii 펌웨어 업데이트 에러 메시지가 출력 되는경우 옵션에서 펌웨어 업데이트 체크를 하지 않으면 해결 된다.





Posted by nexp

댓글을 달아 주세요

[AVR]/Mega82018. 8. 22. 05:54

#ATmega328 EVM 보드 제작 (ATMega88)

#ATmega328 EVM 보드 제작 (ATMega88)



여러 용도로 테스트 할 일이 있어 s-Type EVM 형태의 표준 핀맵을 따르는 테스트 보드를 제작 했다. 32핀 AVR의 다양한 페키지를 지원 하도록 해서 PCB하나로 기존 가지고 있던 AVR칩을 테스트 할수 있게 했다.



기존의 s-Type EVM타입의 표준 핀맵을 사용하기 때문에 확장 테스트 보드도 기존 보드에 호환해서 사용할 수 있다.







Posted by nexp

댓글을 달아 주세요

[ST_MICRO]/STM32F72018. 5. 9. 04:24

[STM32F7 EVM] STM32F767 Ethernet 테스트 - TCP 전송속도 측정

[STM32F7 EVM] STM32F767 Ethernet 테스트 - TCP 전송속도 측정


STM32F7 EVM 보드에는 Ehternet을 테스트 할수 있는 Ethernet Phy 모듈 연결 커넥터가 있어 Ethernet을 연결 할 수 있다.  STM32F7의 경우 클럭속도가 216Mhz로 향상 되었기 때문에 좀더 빠른 이더넷 전송 속도가 나오지 않을까 기대 하면서 TCP 전송 속도 테스트를 해 보았다. STM32F4 Ethernet TCP 전송 속도 테스트 결과 참고




STM32F7 EVM Ethernet 하드웨어 연결 설정

STM32F7의 Ethernet 테스트는 기존에 제작 해 두었던 Ethernet Phy모듈을 이용하였다.




CubeMX 환경설정

CubeMX 를 이용하여 STM32F7 프로젝트를 생성하고 Connectivity -> ETH 탭에서  RMII 모드로 설정하면 기본 핀맵이 할당된다.





STM32F7 Ethernet 핀맵 확인




LWIP 설정

ST에서 제공하는 TCP/IP 스텍인 LWIP 를 Enable로 체크 하면 기본 설정으로 TCP/IP 통신을 할 수 있는 코드가 생성된다.






STM32F7 TCP/IP 전송 속도 테스트 코드



print_ip(char *msg, ip_addr_t *ip)

{

printf(msg);

printf("%d.%d.%d.%d\n\r", ip4_addr1(ip), ip4_addr2(ip), ip4_addr3(ip), ip4_addr4(ip));

}


print_ip_settings(ip_addr_t *ip, ip_addr_t *mask, ip_addr_t *gw)

{


print_ip("Board IP: ", ip);

print_ip("Netmask : ", mask);

print_ip("Gateway : ", gw);

}


int main(void)

{

  /* USER CODE BEGIN 1 */


  /* USER CODE END 1 */


  /* Enable D-Cache-------------------------------------------------------------*/

  SCB_EnableDCache();

  //SCB_EnableICache();

  /* MCU Configuration----------------------------------------------------------*/


  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */

  HAL_Init();


  /* USER CODE BEGIN Init */


  /* USER CODE END Init */


  /* Configure the system clock */

  SystemClock_Config();


  /* USER CODE BEGIN SysInit */


  /* USER CODE END SysInit */


  /* Initialize all configured peripherals */

  MX_GPIO_Init();

  MX_USART1_UART_Init();


  /* USER CODE BEGIN 2 */

  sprintf(buf, "STM32 ETHERNET TEST: Clk=%d\r\n", HAL_RCC_GetHCLKFreq()/1000);

  HAL_UART_Transmit(&huart1, buf, strlen(buf), 10);

  /* USER CODE END 2 */

  MX_LWIP_Init();

  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  while((gnetif.ip_addr.addr) == 0)

  {

  MX_LWIP_Process();

  }


  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);



  /* USER CODE BEGIN 2 */

  print_ip_settings(&gnetif.ip_addr.addr, &gnetif.netmask.addr, &gnetif.gw.addr);

  /* Infinite loop */

  /* USER CODE BEGIN WHILE */


  tcp_echoserver_init();


  while (1)

  {

    ethernetif_input(&gnetif);

    sys_check_timeouts();

  }

}





STM32F7 Ethernet 전송 속도 테스트 결과

STM32F7으로 TCP 루프백 테스트 결과 35Mbps 정도로 출력된다. Hardware 스텍을 가진 W5300 테스트 결과와 같은 전송 속도 이다. 소프트웨어 스텍으로도 저렴한 가격에 Ethernet 통신을 구현 할수 있어 좋은것 같다. STM32F439 + W5300 이더넷 전송 속도 테스트결과와 비교



Posted by nexp

댓글을 달아 주세요