반응형

AVR_예제 7

ATmega 128 에서 MCP2515 돌리기

예제 소스코드 출처 ATmega128 과 MCP2515 의 예제 프로젝트가 있다. 다음의 링크에서 소스를 받아서 테스트하도록한다. http://www.kreatives-chaos.com/artikel/ansteuerung-eines-mcp2515 실제 수정된 코드 : ATmega 128 에서 MCP2515 돌리기 위의 받은 소스코드에서.. 수정한사항은 다음과 같다. bool mcp2515_init(void) { unsigned int test_value; SET_OUTPUT(MCP2515_CS); SPI0_Init(); // reset MCP2515 by software reset. // After this he is in configuration mode. RESET(MCP2515_CS); spi_pu..

HW 기초 2014.02.12

FirmWare / AVR / 간단소스 / 시리얼 통신관련..(쉘만들기 기초)

이전에 프로젝트 했던걸 정리하는 차원에서 포스팅... 펌웨어 시리얼 통신 쉬운 예제가 이해하기 제일좋다. 통신초기화 관련 예제코드 void uart0_init(u32 baud) { /*================================ BAUD = F_CPU / (16 * (UBRR + 1) ) UBRR = (F_CPU / (16L*baud)) - 1 ==================================*/ baud = (F_CPU / (16L*baud)) - 1; // buad 로 인자로 받아온 buad로 초기화.. //uart1 register baud setting UBRR0H = (u08)(baud>>8); // 클경우 상위 8bit만 잘리기에.. UBRR0L = (u08)(bau..

HW 기초 2013.12.19

AVR / 기초개념 / 와치독 개념

ATmega128의 와치독 워치독 타이머는 타임아웃 되기전에 소프트웨어 명령으로 그 값을 클리어 시켜주지 않으면 MCU를 리셋 시킴으로써 시스템이 정상적으로 동작하고 있는지를 감시하는 마이크로 프로세서의 신뢰성 향상기술이다,. ATmega128에서는 내부에서 독립적으로 만들어지는 1Mhz의 오실레이터에서 클럭을 받아 동작하며 사용자가 이를 분주하여 8가지로 클럭주기를 변경시킬수있다. DRCR(Watchdog Timer Control Register) 레지스터 각 레지스터의 주소값을 외울 필요는 없다. 각 컴파일러가 갖고있는 iomap 헤더 파일안에는 해당 레지스터의 이름에 대해 메모리 맵핑이 되어있다. gcc컴파일러 안에있는 iom128.h의 내용 /* Watchdog Timer Control Regis..

HW 기초 2010.12.02

AVR / 예제소스 / EEPROM 기본개념

기타사항 : winAVR기준 / 틀린사항이나 오류발생시 댓글 부탁드립니다. eeprom? 대부분의 경우 eeprom에는 파라미터 같은 정보 (껐다 켜지더라도 계속 유지되어야 하는값과 비슷한것들..)을 넣는 역할을 하게된다. 이때는 내부 Flash Rom 과는 약간 다른역할을 하는듯하다. 추후 스터디하여 새로포스팅예정..;;; 기본적으로 read 함수구현 int8_t read_eeprom(u16 adr) { return (int8_t)eeprom_read_byte ((const uint8_t *)adr); } AVR의 경우 메모리맵 IO로 되어있다. 즉 EEPROM은 메모리의 어딘가에 할당이 되어있으며 해당 메모리 주소를 바로 접근하는 방식으로 EEPROM에 접근가능하다. eeprom_read_byte()..

HW 기초 2010.01.14

AVR / 기본개념 / SPI 기초, 예제코딩

기타사항 : ATmega128 에서 테스트완료 spi 개요. SPI는 serial peripheral interface의 약자로서 한마디로 말해서 주변 IC와 통신하기 위한 직렬통신장치입니다. 친절하게 해석해드리면 '시리얼 방식의 주변 장치 인터페이스' 정도 된다. 특히나 MCU의 GPIO 포트가 모자르거나, 데이터를 주고받는 프로토콜에 신경 쓰기 귀찮아하는 사람에게 딱좋은 방식입니다. 가장 많이 쓰는것들은.. PLL IC나 AUDIO관련 IC등을 제어하기 위한 장치죠. 보통 CLOCK,DATA,STOBE 이렇게 3단자또는 DATA IN,OUT 을 구분하여 4단자로 구성되어 있습니다. 물론 일반 PORT를 이용해 전송할수도 있지만 전용 SPI단자의 경우는 속도가 빠르고 간편하게 사용할수 있습니다. 때로는..

HW 기초 2010.01.11

C / AVR / sprintf 의 기본적인 코딩예제

기타사항 : ATmega128 / winAVR 테스트완료 sprintf 만들기 임베디드 환경에서의 printf 구현이 쉽지는 않다. 아래와 같은 코딩으로 불편하나마 printf()를 대체하여 쓸수가 있다. C 함수의 호출 원리를 이용한 sprintf() 의 약식 구현 이다. va_start() 나 va_end() 함수를 사용하여 구현할 수도 있지만, 이것도 stack의 동작을 숨기고 있어서 좀더 low level 로 구현하고자 한다. 스텍이나 메모리 상황이 안좋거나.. 타겟쪽에 라이브러리를 올리지 못하는 상황이라면 아래와같이 코딩하여 사용할수있을것이다.(컴파일이 된다면..) 소스원작자는 32bit ARM에서 target에 printf()관련 라이브러리를 통째로 올릴수없어서 코딩하였다고 한다. 예제코드… ..

HW 기초 2009.12.26

[AVR] printf 구현하기 : 예제

출처 : 이전에 짰던 소스 기초적인 캐릭터 단위 함수구현 winavr 기준 / ATmega128 void putchar_(u08 device,u08 data) { if(data != '\n') { if(device == 0) { uart0_send(data); } else { uart1_send(data); } } else if(data == '\n') { if(device == 0) { uart0_send(0x0d); uart0_send(0x0a); } else { uart1_send(0x0d); uart1_send(0x0a); } // if new line } } 기초적인 캐릭터 스트링 함수구현 winavr 기준 / ATmega128 void puts_(u08 device,u08* str) { whi..

HW 기초 2009.12.26
반응형