본문 바로가기

[AVR]/AVR_EVM

(14)
AVR SPI관련 자료 - ATmega128, ATMega16, ATMega8 (예제 소스코드) AVR SPI관련 자료 - ATmega128, ATMega16, ATMega8 (예제 소스코드) AVR에서 SPI제어에 관련된 자료 정리 AVR SPI블록도 AVR ATMega128 SPI 핀맵 SPI핀 찾을것 없이 기록해 두면 편리할것 같다 관련 레지스터 SPSR • Bit 7 – SPIF: SPI Interrupt Flag 읽을수만 있는 레지스터로 SPI인터럽트 발생 여부를 나타낸다. • Bit 6 – WCOL: Write COLlision flag 오류 발생을 나타내는 비트 • Bit 5..1 – Res: Reserved Bits 사요하지 않는다. • Bit 0 – SPI2X: Double SPI Speed Bit SPI 클럭을 두배러 설정하는 비트 SPCR • Bit 7 – SPIE: SPI In..
Atmel AVR ISP 관련 자료 Atmel AVR ISP 관련 자료 STK500 표준 커넥터 AVR ISP MKII 표준 커넥터 프린트 포트용 AVR ISP 회로도
AVR Digttal Controller System test AVR Digttal Controller System test
Atmega128을 이용하여 CPU실행속도 측정 테스트 Atmega128을 이용하여 CPU실행속도 측정 테스트 단순히 포트 On/Off만을 이용하여 실행 속도를 테스트 하였다. int main(void) { DDRB = 0xFF; while(1) { PORTB ^= 0xFF; } return 0; } 8FEF ldi r24,lo8(-1) 87BB out 55-0x20,r24 L17: 88B3 in r24,56-0x20 8095 com r24 ;$FF-r24 88BB out 56-0x20,r24 FCCF rjmp .L17 ;(2cycle) 포트를 On/Off 하기위해 5cycle의 CPU클럭이 필요 하므로 1CPU 클럭 : 1/16Mhz = 62ns On/Off주가 : 62ns x 5 = 310ns 실제 오실로스코프 확인 결과 Atmega128(16Mhz) P..
WINAVR에서 long type shift 연산 버그 및 해결법 WINAVR에서 long type으로 시프트연산을 사용하면 0으로되는 현상을 발견했다. 이것때문에 3시간이상 고생했다. 결국 memcpy함수를 이용해서 변수를 복사 하는방법을 해결하였다. unsigned long GetFileSize(void) { unsigned char buffer[4] = {0x00, 0x24, 0x3d, 0x2a}; unsigned long size = 0; printf("%02x ", buffer[0]); printf("%02x ", buffer[1]); printf("%02x ", buffer[2]); printf("%02x ", buffer[3]); printf("\r\n"); //Shif연산 사용 size = (buffer[3]
AVR GPIO관련 자료 AVR GPIO관련 자료 AVR의 각 포트는 DDxn, PORTxn, PINxn 3개의 레지스터로 구성된다. DDRx 레지스터는 포트의 방향을 설정하는데 각비트가 1로 설정되어 있으면 출력이고, 0으로 설정하면 입력으로 설정할 수 있다. 입력핀으로 설정되어 있고 PORTxn 레지스터가 1로 설정하면 풀업 레지스터가 활성화 된다. 풀업 레지스터를 off하려면 PORTxn은 0으로 설정하거나 핀이 출력핀으로 설정하면 된다. 리셋직후 모든 포트핀은 tri-stated상태가 된다 AVR GPIO 기본 예제 unsigned char i; ... /* Define pull-ups and set outputs high */ /* Define directions for port pins */ PORTB = (1

반응형