/Embedded-Class

πŸ“–μž„λ² λ””λ“œ μˆ˜μ—…μ—μ„œ 배운 것을 μ €μž₯ν•˜λŠ” λ ˆνŒŒμ§€ν† λ¦¬μž…λ‹ˆλ‹€. ( AVR, ARM, Linux, OpenCV )

Primary LanguageC

πŸ‘¨β€πŸ’» μž„λ² λ””λ“œ μ†Œν”„νŠΈμ›¨μ–΄κ°œλ°œκ³Ό

✍ μž„λ² λ””λ“œ μ‹œμŠ€ν…œ μˆ˜μ—…μ—μ„œ 배운 λ‚΄μš©

Register

  • μ»΄ν“¨ν„°μ˜ ν”„λ‘œμ„Έμ„œ λ‚΄μ—μ„œ 자료λ₯Ό λ³΄κ΄€ν•˜λŠ” μ•„μ£Ό λΉ λ₯Έ κΈ°μ–΅ μž₯μ†Œ
  • 일반적으둜 ν˜„μž¬ 계산을 μˆ˜ν–‰μ€‘μΈ 값을 μ €μž₯ν•˜λŠ” 데 μ‚¬μš©

GPIO

  • λ‹€μš©λ„ μž…μΆœλ ₯(general-purpose input/output) : μž…λ ₯μ΄λ‚˜ 좜λ ₯을 ν¬ν•¨ν•œ λ™μž‘μ΄ λŸ°νƒ€μž„ μ‹œμ— μ‚¬μš©μžμ— μ˜ν•΄ μ œμ–΄λ  수 μžˆλŠ”, 집적 νšŒλ‘œλ‚˜ μ „κΈ° 회둜 기판의 디지털 μ‹ ν˜Έ ν•€
  • ( 즉, μž…λ ₯μ΄λ‚˜ 좜λ ₯같은 λ™μž‘μ΄ μ‹€ν–‰ μ‹œμ— μ‚¬μš©μžμ— μ˜ν•΄ μ œμ–΄ 될 수 μžˆλŠ” 디지털 μ‹ ν˜Έ ν•€ )

PWM

  • νŽ„μŠ€ 폭 λ³€μ‘°(Pulse Width Modulation) : 디지털 좜λ ₯으둜 μ•„λ‚ λ‘œκ·Έ 회둜λ₯Ό μ œμ–΄ ν•˜λŠ” 기술

ADC

  • μ•„λ‚ λ‘œκ·Έ-디지털 λ³€ν™˜νšŒλ‘œ(Analog-to-digital converter) : μ•„λ‚ λ‘œκ·Έ μ‹ ν˜Έλ₯Ό 디지털 μ „κΈ° μ‹ ν˜Έλ‘œ λ³€ν™˜ν•˜λŠ” 것
  • ( 연속적인 analogμ‹ ν˜Έλ₯Ό 0κ³Ό 1둜 κ΅¬μ„±λœ digitalμ‹ ν˜Έλ‘œ λ³€ν™˜ν•˜λŠ” 것 )

EXTI

  • μ™ΈλΆ€ μΈν„°λŸ½νŠΈ(External Interrupt) : μŠ€μœ„μΉ˜λ₯Ό λˆ„λ₯΄λŠ” 것과 같이 μ™ΈλΆ€μ—μ„œ μΈν„°λŸ½νŠΈλ₯Ό λ°œμƒμ‹œν‚€λŠ” 것
  • ( Timerλ₯Ό μ΄μš©ν•˜μ—¬ μΈν„°λŸ½νŠΈλ₯Ό λ°œμƒμ‹œν‚€λŠ” 것은 λ‚΄λΆ€ μΈν„°λŸ½νŠΈλΌκ³  ν•œλ‹€. )
  • ( μΈν„°λŸ½νŠΈ : λ™μž‘μ„ μˆ˜ν–‰ν•˜κΈ° μš°μ΄ν•΄ μ£ΌλŠ” μ‹ ν˜Έ )

TIMER

  • μ •ν™•ν•œ μ‹œκ°„μ„ 재기 μœ„ν•΄ μ‚¬μš©
  • μ •ν™•ν•œ μ‹œκ°„μ§€μ—°μ΄ ν•„μš”ν•œ 경우 타이머λ₯Ό μ‚¬μš©
  • MCUλ‚˜ CPUμ—λŠ” Timerκ°€ 3개 이상 λ“€μ–΄ μžˆλ‹€.
  • μ™ΈλΆ€μ—μ„œ λ“€μ–΄μ˜€λŠ” μ‹ ν˜Έμ˜ μ£ΌκΈ° λ˜λŠ” 주파수λ₯Ό μΈ‘μ •ν•˜κ±°λ‚˜, Delayν•¨μˆ˜λ₯Ό λ§Œλ“€κ±°λ‚˜, μ™ΈλΆ€λ‘œ PWM νŽ„μŠ€λ₯Ό 내보낼 λ•Œ, 주둜 μ‚¬μš©
  • ( μ£ΌκΈ° : 0κ³Ό 1이 λ²ˆκ°ˆμ•„ ν•œλ²ˆ λ‚˜νƒ€λ‚˜λŠ” μ‹œκ°„. / 주파수 : 1초 λ‹Ή 0κ³Ό 1이 λ³€ν™”λœ 횟수 )

SysTick

  • Cortex-M μ½”μ–΄μ—λ§Œ μ§€μ›ν•˜λŠ” 24bit 타이머이닀.
  • SysTick은 μ‹œμŠ€ν…œ 클럭λ₯Ό κ·ΈλŒ€λ‘œ μ‚¬μš©ν•˜κ±°λ‚˜ 8λΆ„μ£Όν•œ ν΄λŸ­μ„ μ†ŒμŠ€λ‘œ μ‚¬μš©ν•  수 μžˆλ‹€.

UART

  • λ²”μš© 비동기화 μ†‘μˆ˜μ‹ κΈ°(Universal asynchronous receiver/transmitter) : 병렬 λ°μ΄ν„°μ˜ ν˜•νƒœλ₯Ό 직렬 λ°©μ‹μœΌλ‘œ μ „ν™˜ν•˜μ—¬ 데이터λ₯Ό μ „μ†‘ν•˜λŠ” 것
  • PIN : RX / TX

I2C

  • μ•„μ΄μŠ€ν€˜μ–΄λ“œμ‹œ(Inter-Integrated Circuit) : ν•„λ¦½μŠ€μ—μ„œ κ°œλ°œν•œ 직렬 λ²„μŠ€μ΄λ‹€.
  • 2개의 선을 μ΄μš©ν•˜λŠ” 톡신 방식이닀.
  • ν•˜λ‚˜μ˜ Master에 μ—¬λŸ¬ 개의 Slave κΈ°κΈ°κ°€ μ—°κ²° 될 수 μžˆλ‹€.
  • 클럭 μ‹ ν˜Έλ₯Ό μ‚¬μš©ν•˜λŠ” 동기식 톡신 방식이기 λ•Œλ¬Έμ— μ‹œκ°„μ— μžμœ λ‘­λ‹€λŠ” μž₯점이 μžˆλ‹€.
  • 슬레이브 선택을 μœ„ν•΄ 항상 μ£Όμ†Œ 데이터가 λΆ™κΈ° λ•Œλ¬Έμ— κΈ΄ λ°μ΄ν„°μ—λŠ” λΆ€μ ν•©ν•˜λ‹€λŠ” 단점이 μžˆλ‹€.
  • charLCDλ₯Ό μ œμ–΄ν• λ•Œ, μ‚¬μš©ν–ˆμ—ˆλ‹€.
  • PIN : SCL / CDA

SPI

  • 직렬 μ£Όλ³€κΈ°κΈ° μΈν„°νŽ˜μ΄μŠ€ λ²„μŠ€(Serial Peripheral Interface Bus) : 동기화 직렬 데이터 μ—°κ²° ν‘œμ€€
  • Master와 Slave둜 ν†΅μ‹ ν•œλ‹€.
  • 1 : N의 톡신을 μ§€μ›ν•˜λŠ” 동기식 톡신 방식
  • λ™μ‹œμ— μ†‘μˆ˜μ‹ μ΄ κ°€λŠ₯함
  • I2C에 λΉ„ν•΄ 속도가 빠름
  • κ°„λ‹¨ν•˜κ²Œ 배선이 κ°€λŠ₯
  • λ‹¨μˆœ μ„Όμ„œ, λ©”λͺ¨λ¦¬μ™€ 같은 μΉ©κ³Ό μΉ© μ‚¬μ΄μ˜ 톡신에 많이 μ‚¬μš©
  • RS-232, CANλ²„μŠ€λ³΄λ‹€ 비ꡐ적 짧은 κ±°λ¦¬μ—μ„œ λ™μž‘
  • ν•˜λ‚˜μ˜ λ§ˆμŠ€ν„° μž₯치만 지원함. ( MasterλŠ” κΌ­ 1κ°œμ΄λ‹€. / SlaveλŠ” μ—¬λŸ¬κ°œ κ°€λŠ₯ )
  • PIN : SCLK / MOSI / MISO / SS

μˆ˜μ—…μ—μ„œ μ‚¬μš©ν–ˆλ˜ λͺ¨λ“ˆ

  • LED
  • Button
  • Active Buzzer
  • Passive Buzzer
  • Servo Motor - PWM을 κ΅¬ν˜„ν•  λ•Œ 많이 μ‚¬μš©
  • DC Motor
  • Step Motor
  • Joy Stick
  • Ultrasonic Sensor (초음파 μ„Όμ„œ)
  • Photo Resistor (쑰도 μ„Όμ„œ)
  • charLCD (16x2)
  • LCD (128x64)
  • OLED (128x128) - SPI μ‚¬μš©
  • Bluetooth (μˆ˜μ—…μ—μ„œ μ‚¬μš©ν•œ λͺ¨λ“ˆ : HC-06 / HC-05)
  • WIFI (μˆ˜μ—…μ— μ‚¬μš©ν•œ λͺ¨λ“ˆ : esp8266)

λ¦¬λˆ…μŠ€ μˆ˜μ—…μ—μ„œ 배운 λ‚΄μš©

라이브러리

  • 정적 라이브러리
  • 곡유 라이브러리

make & makefile

Toolchain

Shell Script