AVR 이모저모

이종욱·2024년 2월 19일
0

전류는 전선을 주위를 회전하면서 흐른다.
몇 비트 마이크로컨트롤러다 = CPU와 SRAM 간의 bus 크기
마이크로컨트롤러 = 마이크로프로세서(CPU) + 주변장치(메모리, 입출력 인터페이스)
CAN 통신: 차량 내에서 호스트 컴퓨터 없이 마이크로 콘트롤러나 장치들이 서로 통신하기 위해 설계된 표준 통신 규격
MAC 작동 알고리즘이랑 비슷, CSMA 이용, 스위치랑 비슷

(참고)

Putty는 원격접속가능하게 해주는 가상터미널프로그램
(ssh, telnet 등 뿐만 아니라 serial 통신도 지원해줌)
USB(Universial Serial Bus)의 이해
https://blog.naver.com/ffmong93/221495310405
https://m.blog.naver.com/kangyh5/222062643612
TTL(Transistor-Transistor Logic): 마이크로컨트롤러 동작전압 기준으로 논리레벨(0,1) 정해지는 거

<AVR용 ISP 개발 장비>

https://www.devicemart.co.kr/goods/view?no=12371719

USBtoTTL, TTLtoUSB 변환 기반
우리는 ISP, UART 둘 다 있는 거 구매함

윗면 USB-ISP 커넥터(프로그램 다운로더) 핀 번호
1. MOSI(PDI)
2. MISO(PDO)
3. SCK(Serial Clock)
4. RESET
5. GND
6. VCC
=> 거꾸로해도 다시 제대로 꼽으면 됨

아랫면 USB-UART 커넥터(컴퓨터와 UART) 핀 번호
1. VCC
2. TX(PC에서 송신)
3. RX(PC에서 수신)
4. GND
=> 거꾸로 하면 쇼트나서 아뜨거 한다? 조심하도록
=> 그럼 보드의 RX핀은 커넥터 TX랑 연결해야겠죠?

PC에서 공급되는 USB 전원 사용은
1번 스위치 ON(위쪽)
5V가 아닌 3.3V를 사용하고 싶다면
2번 스위치 ON(위쪽)
=> 근데 5V 사용하니까 1번은 ON, 2번은 OFF

여기서 잠깐 직렬 통신 규격 설명

EX. 8비트 송신
Serial 통신: 통신선 하나(일차선 도로)
Parallel 통신: 통신선 여러개(다차선 도로)
선 많으니, 소형화 안 됨, 그래서 거진 다 시리얼 통신 기반이라고 생각하면 됨.

UART(Universal Asynchronous Rx/Tx)는 비동기, 전이중 :

TX, RX
비동기라서 START,STOP 비트 있음/통신속도 맞춰줘야함

SPI(Serial Peripheral Interface)는 동기, 전이중:

TX, RX, CLK, SS(slave select)
Master-slave 즉, 1:n 구조일 때
MISO, MOSI, CLK, SS

I2C(Inter-Intergrated Circuit)는 걍 반이중:

와이어 하나 + (CLK)

자 그럼 한 USB연결만으로 UART 통신과 프로그램 다운로더가 동시 꼽힌 상태로 가능한가?

=> "AVR의 ISP의 방법은 시리얼방식과 패러럴 방식이 있는데, 시리얼은 SPI 규격을 이용해서 ISP를 지원합니다."
=> 둘 다 시리얼이네?
=> 라고 생각했는데 규격이 다름 ISP는 SPI, UART는 UART
=> TCP/UDP 포트 다른 것처럼 USB 포트를 나눠야 함(USB가상포트설정or강제포트변경, USB 타입이 다른 거면 된다는 소문이 있음;;)

  • 문재해결법
  1. 가상포트(CDC? 어쩌구저쩌구 모르겠고)
  2. 강제포트변경
    2-1. SW방법: 장치관리자에서 해당 포트 속성/포트번호 변경가능하니, 프로그램 다운로드-> 포트바꿔서 putty
    2-2. HW방법: 물리적으로 걍 진짜 옆에 포트로 옮겨라.

왜인지는 몰?루겠지만

"COM1~4를 사용하는 것이 호환성 상 좋습니다."

=> putty나 프로그램 다운로드 되다말다되다말다 할 때 이 이유일 수도 있음. 진짜 의심 100%

결론: 데이터시트와 설명서(디바이스마트)는 잘 보자. 제발

<1주차>

데이터시트보세요. 오실로스코프 찍어보세요.
J-K flip flop: 순차 논리회로 카운터(숫자 세기용)
Mux: 디코더 위한 놈(신호정렬)
Decoder: LED 키는 용

  1. 스위치 납땜 잘보기(플로팅이 아니라 값이 안 바뀌는 거임, 플로팅은 풀업/풀다운 저항으로 해결됨)
  2. 오실로스코프 찍어보고 칩 억까 판단
  3. 거의 회로납땜 문제

<AVR 회로>

책에 다 나와있네;; 직접 만드신 줄;;
왼쪽 위의 회로는 정전압회로, 컴퓨터연결없이 사용할때 전원 공급하고 사용(사실상 필요없는 거였네 ㅋㅋ)
=> 아, 모터 돌릴 때 사용하네
스위치 채터링 해결 => 풀업/풀다운 or 커패시터 디바운스회로
커패시터 디바운스회로 문제점: 1,0 전압 범위 애매함
=> 슈미트 트리거 이용한 회로

  1. 오실로스코프 찍어보고 모터드라이버 억까 판단 / 체결불량(위에 나사돌리기)

<AVR 코딩>

레지스터는 그때그때 봅시다.(외울수가 없어요.)

  1. 클록주파수 설정했니?: ATMEGA128에서 INT는 2바이트, 16M 뒤에 L 붙여서 long 타입값 표기
  2. io.h 헤더파일 넣었니?: 레지스터 이름 등 정의되어 있는 헤더파일
  3. OCRn 비교일치 인터럽트 값에 의해 PWM duty cycle 결정됨.(Top 값은 꼴리는대로)
  4. UART 통신속도: 보율과 UBRRn 레지스터 값 일치하는지
  5. ADC: 기준전압 핀 확인
    ADC Resolution 비트가 비교기 수구낭
    ex. 10비트 해상도, 2에 10승 0~1023, 기준전압 5V라 했을 때
    5/1023은 4.89mV 전압차이 구별가능
    MSB 비트부터 비교, 마치 updown게임하듯이 1011100000 디지털 데이터 생김

차동입력 -> 노이즈 상쇄 => 좀더 공부할 것
양자화오차, 오프셋 오차, 이득 오차, 비선형 오차 등등

profile
안녕하세요!

0개의 댓글

관련 채용 정보