공부,일/atmega328P29 스케치 파일 컴파일러 avr-gcc 위치 아두이노 설치한 위치에서 ARDUINO\arduino-1.8.15\hardware\tools\avr\bin bin 파일 안에 make 가 없어서 make 넣어주고 makefile 을 실행한다. 폴더에 넣어둔 main.c 가 컴파일 되면서 컴파일 중간단계 파일이 모두 생성된다. 이는 makefile 의 --save-temps 속성을 추가하면 생성해 준다. 간단한 makefile 분석 # Debugging format. # Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs. # AVR Studio 4.10 requires dwarf-2. # AVR [Extended] COFF format requires stabs, plus .. 2021. 10. 6. timer1 , 1초 깜빡이 코드 void setup() { // put your setup code here, to run once: DDRD = 1 2021. 10. 5. 캐릭터 LCD 프로그래밍 1. LCD 제어기의 내부 구성 명령(Instruction)과 데이터(Data)를 위한 2개의 레지스터, BF(Busy Flag), AC(Address Counter), 문자발생램(CGRAM), 문자발생롬(CGROM), 데이터표시램(DDRAM)이 있습니다. 8bit interface #define sbi(x, y) (x |= (1 2021. 9. 22. my 초음파 센서 만들기 1. 외부 인터럽트 INT0 번 2번핀 change 인터럽트시 falling edge 인터럽트 void setup() { // put your setup code here, to run once: cli(); DDRD = DDRD | (1 2021. 9. 15. atmel studio 에서 printf, scanf 사용 uart 통신을 통한 putty 에 printf scanf 사용하기 atmel studio 에서 동작 #include #include #include #define F_CPU 16000000 #include #define UART_REG 0xC0 #define RXC 0x80 #define TXC 0x40 #define UDRE 0x20 enum { DATA_5BIT, DATA_6BIT, DATA_7BIT, DATA_8BIT }; #define CHAR_SZ_SHIFT 1 #define BAUD_2400 2400 #define BAUD_4800 4800 #define BAUD_9600 9600 #define BAUD_14400 14400 #define BAUD_19200 19200 #define BAUD.. 2021. 8. 11. atmega328P TWI(I2C) 통신 (3) 실습 SCL = PC5 SDA = PC4 실습 프로그램 소개 (대충읽고 코드를 보면서 다시 보기 바란다. ) 2개의 아두이노 우노 보드로 TWI 통신을 한다. 1대는 마스터 모드로 ,1대는슬레이브 모드로 작동한다. 1. 마스터 송신 모드로 0x01 을 전달한다. 2. 슬레이브 수신 모드로 0x01 을 전달 받는다. 3. 마스터 수신 모드로 데이터를 요청한다. 3. 슬레이브 송신 모드로 받은 0x01 의 데이터를 토글해서 돌려준다. 4. 마스터는 토글된 데이타를 1bit 시프트 시켜준다. 아두이노는 받은 데이터로 PORTD에 달려있는 불을 킨다. (코드 상으로는 8개의 포트를 모두 조절하고 있지만 LED 가 없어서 4개씩만 사용하였다.) 슬레이브의 어드레스는 0x20 으로 하겠다. 풀업 저항 구하기 위 의 공식.. 2021. 8. 7. atmega328P TWI(I2C) 통신 (2) TWI 통신 순서 1. 마스터에서 TWSTA bit 1로 set 해서 start 출력을 버스로 내보낸다. 이때 TWINT bit 는 clear 되어 있어야 된다. 안되어 있으면 1을 써줘서 0으로 clear - Start 완료시 TWINT 가 자동으로 1로 set 되서 start 가 완료되어있는지 보기위해서 2. TWSR bit 보면서 제대로 start 동작이 이루어졌는지 확인해 본다. 3. TWSR bit 가 제대로 동작 했다면 TWDR 레지스터에 원하는 주소와 R/W bit 를 쓴후 각각의 모드에 맞는 TWCR bit 를 load 한다. 이때 TWINT 는 1 을 적어서 clear 해준다. - > 데이터 전송 시작 그리고 TWSTA bit 를 1로 써줌으로 써 0 으로 clear 해준다. 4 . TW.. 2021. 8. 5. atmega328P TWI(I2C) 통신 (1) 개념 및 레지스터 TWI 통신은 2 개의 선만으로 1개의 마스터와 많은 수의 슬레이브와 통신할 수 있는 동기 통신 방식으로 SDA (데이타) 와 SCL(클럭) 선으로 구성되어 있다. 여러개의 마스터를 가지는 기능을 지원하긴하지만 여기서는 다루지 않겠습니다. 주의 할점은 이 두 선은 모두 기본적으로 high 상태이고 모두 수 k옴의풀업저항을 가진다. 이러한 구조는 1개의 슬레이브가 low 신호를 보내면 선 자체가 low 가 되며 다른 회로에서 어떤짓을 하더라도 low 유지 된기 때문에 신호 선점 문제에서 유리한 강점을 가집니다. 데이타 전송의 경우 클럭이 high 일 경우 SDA 는 변하지 않아야 합니다. SCL 이 low 일 경우에만 SDA 값을 변경 해야 합니다. (뒤에 나오지만 stop start 신호를 인식하기 위해.. 2021. 8. 5. atmega 328p USART (3) 실습 XCKn = PD4 TXD = PD1 RXD = PD0 USART 설정 비동기 모드로 , 페리티 코드는 사용하지 않으며 , 스탑 비트는 2bit 이다. 1배속 모드로 기동중이다. 8bit 의 데이타를 송,수신 하고있다. 프로그램 설명 송신부에서 1, 과 2를 번갈아가면서 USART 통신으로 부낸다. 제대로 보내고 있는지 확인하기 위해서 1을 보내고 나면 PORTD7 에 연결된 LED를 밝혔다. 마찬가지로 1초후에 2를 보내고 나면 PORTD6 에 연결된 LED 를 밝힌다. 수신부에서는 받은 데이터가 1이면 PORTD7 에 연결된 LED키고 2이면 PORTD6 에 연결된 LED 를 킨다. 조심할점은 아두이노 스케치를 이용할경우 코드를 업로드 할때 tx,rx 핀을 사용해서 tx,rx 핀에 머 꼿아놓고 로드시.. 2021. 8. 2. 이전 1 2 3 4 다음