아두이노 > dynamicrc.com

TODAY634 TOTAL608,635
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | 아두이노 | 아두이노 | dynamicrc.com

페이지 정보

작성자 키트 작성일2017-09-11 16:19 조회677회 댓글0건

본문

DynamicRC 광팬 커뮤니티


2093095301_Rm5aqYiA_h_num.gif2093095301_GTE4YCw0_h_subject.gif2093095301_WgZylDXI_h_writer.gif2093095301_dQMX6vpS_h_read.gif2093095301_exIvk5AR_h_date.gif
공지
2093095301_R96MJ3gH_notice_head.gif  

AVR 이나 PIC 등 MCU 강좌를 올리는 곳입니다. 형식에 얽매지 마시고 자유롭게 올리시면 됩니다. 아주 기초부터 고급 강좌까지. 어떤 누군가에게는 큰 도움이 될  것 입니다. 많은 참여 부탁드립니다.

" style="color: rgb(102, 102, 102); text-decoration: none;">AVR, PIC 등 MCU 강좌를 올리는 곳입니다.  [3]
 정재광
21192009-04-28
2093095301_7aWQ9cus_t.gif
20
2093095301_azCEfHsY_old_head.gif  

mcu를 하다보면 버튼입력 받는건 그야말로 기본중의 기본일수 있겠는데요.
잘 된 소스좀 어디 없을까요?

기능은
1.채터링 방지
2.클릭, 더블클릭, 롱클릭 판단

버튼 2개로 up/down 하려고 하는데요.
up버튼시
클릭 : 1증가
더블클릭 : 2배증가
롱클릭 : 최초1증가후 적당한 함수를 정하여 쭈-----우-------웈 증가하게 하려고 합니다.

이런게 많이 있을법 한데요.

" style="color: rgb(102, 102, 102); text-decoration: none;">버튼입력 프로그램소스좀 구할수 있을까요?   2093095301_qpOXiCZt_com.gif2
 이학종
18902012-06-01
2093095301_7aWQ9cus_t.gif
19
2093095301_azCEfHsY_old_head.gif  

tiny10으로 pwm2ppm 컨버터를 만들었습니다.
2ch도 충분히 할 수 있고 코드도 있지만 테스트를 안해봐서 1ch짜리를 올립니다.
이것도 상당히 더 편리하고 좋게 다듬을 수 있는데 구찬으니까 구냥 쓸랍니다.

tiny13을 쓴게 공개되어 있지만 변속기에 기생하기에는 크기가 좀 큽니다.
이거는 변속기에 작은 공간이라도 비집고 들어가서 기성부품처럼 자리잡을 수 있습니다.
사용하지 않는 2핀은 hi 임피던스로 처리해서 전원단자와 쇼트시켜도 무방하게해서 부착을 쉽게 했습니다.


/*****************************************************
**********    attiny10 pwm2ppm 컨버터 1CH  ***********
******************************************************
        tiny10
      (data)  (rst)
      PB0-[..]-PB3
(-)-- GND-[..]-VCC --(+)
out<- PB1-[..]-PB2 <-in
(clk)

서보신호 ___-_______--___   주기:16ms 펄스폭:1~2ms
PB0,3 : high 임피던스(입력)
PB1 : ppm신호 out
PB2 : pwm신호 in
                            2012년 4월 29일 이학종 만듦
******************************************************/

;     8Mhz 시스템에서 1msec에 상당하는 클럭수
;     8000회 / 10클럭(루프당) = 800

.equ CNT_1MS  = (8000 / 10)
.equ PWM_IN  = PB2  ; PB2
.equ PPM_OUT  = PB1  ; PB1
.equ PERIOD_MS = 22  ; 19 이상 권장

.def cnt_h  = r16
.def cnt_l  = r17
.def loop_h  = r18
.def loop_l  = r19
.def set_timer = r20
.def temp1  = r21
.def temp2  = r22
.def i_temp1  = r23  ; interrupt temporary
.def i_temp2  = r24  ; interrupt temporary
.def i_sreg  = r25  ; interrupt temporary
;#####################################################
.cseg
.org 0
  rjmp reset
  nop ; ext0_int
  nop ; pci0_int
  nop ; capt0_int
  rjmp  ovf0_int
  nop ; ccma_int
  nop ; ccmb_int
  nop ; comp_int
  nop ; wdc
  nop ; vlm
  nop ; adc

version:.db pwm2ppm_1 v1.0

;#####################################################
reset:
;#####  8Mhz 지정  
  ldi  temp1, 0xd8
  ldi  temp2, 0
  out  CCP, temp1
  out  CLKMSR, temp2

  out  CCP, temp1
  out  CLKPSR, temp2

;#####  초기화
  ldi  temp1, (1<) ; PPM_IN pull-up
  out  PORTB, temp1
  ldi  temp1, (1<) ; PPM_OUT만 출력으로 설정
  out  DDRB, temp1

  ldi  temp1, 2  ; (1,2,3,4,5) => clk / (1,8,64,256,1024)
  out  TCCR0B, temp1
  ldi  temp1, (1 << TOIE0)
  out  TIMSK0, temp1
  ser  set_timer
  ldi  temp1,  high(65536 - (1000*PERIOD_MS))
  ldi  temp2,  low (65536 - (1000*PERIOD_MS))
  out  TCNT0H,   temp1
  out  TCNT0L,   temp2

  cbi  PORTB, PPM_OUT ; ppm 신호를 0으로
  sei

;#####################################################
;##### 메인루프
loop:
  ldi  loop_h, high  (CNT_1MS * 16)  // PERIOD 16ms초
  ldi  loop_l, low   (CNT_1MS * 16)
  clr  cnt_h
  clr  cnt_l

;##### 16ms동안 PB1의 신호가 1인 횟수를 카운트하여 cnt_h,l에 저장
  clr  temp1
  clr  temp2
count_on:    // 11*(loop_l+1) + (14 + 11*255)*loop_h
  sbis PINB, PWM_IN  ; pwm신호가 1이면 점프
  ldi  temp1, 0
  sbic PINB, PWM_IN  ; pwm신호가 0이면 점프
  ldi  temp1, 1
  add  cnt_l, temp1
  adc  cnt_h, temp2

  dec  loop_l
  cpi  loop_l, 0xff
  brne count_on
  dec  loop_h
  cpi  loop_h, 0xff
  brne count_on

;##### 변수값 저장
; loop_l,h <- CNT_1MS + 추가할 펄스폭
  ldi  loop_l, low (CNT_1MS)
  ldi  loop_h, high(CNT_1MS)
  lsr  cnt_h
  ror  cnt_l
  lsr  cnt_h
  ror  cnt_l
  lsr  cnt_h
  ror  cnt_l
  lsr  cnt_h
  ror  cnt_l ; cnt / 16 ... 1ms동안 카운트된 1의 수

  add  loop_l, cnt_l
  adc  loop_h, cnt_h

;#####  ppm 펄스 출력
  clr  temp1
  clr  temp2
  sbi  PORTB,  PPM_OUT ; ppm신호를 1로
delay_plus:
  sbis PINB, PWM_IN
  ldi  temp1, 0
  sbic PINB, PWM_IN
  ldi  temp1, 0
  add  cnt_l, temp1
  add  cnt_h, temp2

  dec  loop_l
  cpi  loop_l, 0xff
  brne delay_plus
  dec  loop_h
  cpi  loop_h, 0xff
  brne delay_plus

  cbi  PORTB, PPM_OUT ; ppm 신호를 0으로
  ser  set_timer
wait_tmr:
  tst  set_timer
  brne wait_tmr
    
  rjmp loop

;#####################################################
;#####  timer interrupt
ovf0_int:
  in  i_sreg,  SREG

  clr  set_timer
  ldi  i_temp1,  high(65536 - (1000*PERIOD_MS))
  ldi  i_temp2,  low (65536 - (1000*PERIOD_MS))
  out  TCNT0H,   i_temp1
  out  TCNT0L,   i_temp2

  out  SREG,   i_sreg
  reti

.exit

;#####################################################

/*
AVR Studio 5.0에서 컴파일
pwm2ppm_xy.hex : PBx(in)--->PBy(out)

ex)pwm2pp_01.hex : PB0(pwm input)--->PB1(ppm out)

### pwm2ppm_01.hex ###
:020000020000FC
:1000000011C000000000000054C00000000000000B
:1000100000000000000070776D3270706D5F31205D
:1000200076312E3058ED60E05CBF67BF5CBF66BFC5
:1000300051E052B952E051B952E05DBD51E05BBDB3
:100040004FEF5AEA60E159BD68BD1198789422E3F8
:1000500030E00027112755276627009B50E00099C4
:1000600051E0150F061F3A953F3FB9F72A952F3FEC
:10007000A1F730E223E006951795069517950695AA
:10008000179506951795310F201F55276627119A4A
:10009000009B50E0009950E0150F060F3A953F3F46
:1000A000B9F72A952F3FA1F711984FEF4423F1F7A5
:1000B000CECF9FB744277AEA80E179BD88BD9FBF44
:0200C000189591
:00000001FF

### pwm2ppm_02.hex ###
:020000020000FC
:1000000011C000000000000054C00000000000000B
:1000100000000000000070776D3270706D5F31205D
:1000200076312E3058ED60E05CBF67BF5CBF66BFC5
:1000300051E052B954E051B952E05DBD51E05BBDB1
:100040004FEF5AEA60E159BD68BD1298789422E3F7
:1000500030E00027112755276627009B50E00099C4
:1000600051E0150F061F3A953F3FB9F72A952F3FEC
:10007000A1F730E223E006951795069517950695AA
:10008000179506951795310F201F55276627129A49
:10009000009B50E0009950E0150F060F3A953F3F46
:1000A000B9F72A952F3FA1F712984FEF4423F1F7A4
:1000B000CECF9FB744277AEA80E179BD88BD9FBF44
:0200C000189591
:00000001FF

### pwm2ppm_03.hex ###
:020000020000FC
:1000000011C000000000000054C00000000000000B
:1000100000000000000070776D3270706D5F31205D
:1000200076312E3058ED60E05CBF67BF5CBF66BFC5
:1000300051E052B958E051B952E05DBD51E05BBDAD
:100040004FEF5AEA60E159BD68BD1398789422E3F6
:1000500030E00027112755276627009B50E00099C4
:1000600051E0150F061F3A953F3FB9F72A952F3FEC
:10007000A1F730E223E006951795069517950695AA
:10008000179506951795310F201F55276627139A48
:10009000009B50E0009950E0150F060F3A953F3F46
:1000A000B9F72A952F3FA1F713984FEF4423F1F7A3
:1000B000CECF9FB744277AEA80E179BD88BD9FBF44
:0200C000189591
:00000001FF

### pwm2ppm_10.hex ###
:020000020000FC
:1000000011C000000000000054C00000000000000B
:1000100000000000000070776D3270706D5F31205D
:1000200076312E3058ED60E05CBF67BF5CBF66BFC5
:1000300052E052B951E051B952E05DBD51E05BBDB3
:100040004FEF5AEA60E159BD68BD1098789422E3F9
:1000500030E00027112755276627019B50E00199C2
:1000600051E0150F061F3A953F3FB9F72A952F3FEC
:10007000A1F730E223E006951795069517950695AA
:10008000179506951795310F201F55276627109A4B
:10009000019B50E0019950E0150F060F3A953F3F44
:1000A000B9F72A952F3FA1F710984FEF4423F1F7A6
:1000B000CECF9FB744277AEA80E179BD88BD9FBF44
:0200C000189591
:00000001FF

### pwm2ppm_12.hex ###
:020000020000FC
:1000000011C000000000000054C00000000000000B
:1000100000000000000070776D3270706D5F31205D
:1000200076312E3058ED60E05CBF67BF5CBF66BFC5
:1000300052E052B954E051B952E05DBD51E05BBDB0
:100040004FEF5AEA60E159BD68BD1298789422E3F7
:1000500030E00027112755276627019B50E00199C2
:1000600051E0150F061F3A953F3FB9F72A952F3FEC
:10007000A1F730E223E006951795069517950695AA
:10008000179506951795310F201F55276627129A49
:10009000019B50E0019950E0150F060F3A953F3F44
:1000A000B9F72A952F3FA1F712984FEF4423F1F7A4
:1000B000CECF9FB744277AEA80E179BD88BD9FBF44
:0200C000189591
:00000001FF

### pwm2ppm_13.hex ###
:020000020000FC
:1000000011C000000000000054C00000000000000B
:1000100000000000000070776D3270706D5F31205D
:1000200076312E3058ED60E05CBF67BF5CBF66BFC5
:1000300052E052B958E051B952E05DBD51E05BBDAC
:100040004FEF5AEA60E159BD68BD1398789422E3F6
:1000500030E00027112755276627019B50E00199C2
:1000600051E0150F061F3A953F3FB9F72A952F3FEC
:10007000A1F730E223E006951795069517950695AA
:10008000179506951795310F201F55276627139A48
:10009000019B50E0019950E0150F060F3A953F3F44
:1000A000B9F72A952F3FA1F713984FEF4423F1F7A3
:1000B000CECF9FB744277AEA80E179BD88BD9FBF44
:0200C000189591
:00000001FF

### pwm2ppm_20.hex ###
:020000020000FC
:1000000011C000000000000054C00000000000000B
:1000100000000000000070776D3270706D5F31205D
:1000200076312E3058ED60E05CBF67BF5CBF66BFC5
:1000300054E052B951E051B952E05DBD51E05BBDB1
:100040004FEF5AEA60E159BD68BD1098789422E3F9
:1000500030E00027112755276627029B50E00299C0
:1000600051E0150F061F3A953F3FB9F72A952F3FEC
:10007000A1F730E223E006951795069517950695AA
:10008000179506951795310F201F55276627109A4B
:10009000029B50E0029950E0150F060F3A953F3F42
:1000A000B9F72A952F3FA1F710984FEF4423F1F7A6
:1000B000CECF9FB744277AEA80E179BD88BD9FBF44
:0200C000189591
:00000001FF

### pwm2ppm_21.hex ###
:020000020000FC
:1000000011C000000000000054C00000000000000B
:1000100000000000000070776D3270706D5F31205D
:1000200076312E3058ED60E05CBF67BF5CBF66BFC5
:1000300054E052B952E051B952E05DBD51E05BBDB0
:100040004FEF5AEA60E159BD68BD1198789422E3F8
:1000500030E00027112755276627029B50E00299C0
:1000600051E0150F061F3A953F3FB9F72A952F3FEC
:10007000A1F730E223E006951795069517950695AA
:10008000179506951795310F201F55276627119A4A
:10009000029B50E0029950E0150F060F3A953F3F42
:1000A000B9F72A952F3FA1F711984FEF4423F1F7A5
:1000B000CECF9FB744277AEA80E179BD88BD9FBF44
:0200C000189591
:00000001FF

### pwm2ppm_23.hex ###
:020000020000FC
:1000000011C000000000000054C00000000000000B
:1000100000000000000070776D3270706D5F31205D
:1000200076312E3058ED60E05CBF67BF5CBF66BFC5
:1000300054E052B958E051B952E05DBD51E05BBDAA
:100040004FEF5AEA60E159BD68BD1398789422E3F6
:1000500030E00027112755276627029B50E00299C0
:1000600051E0150F061F3A953F3FB9F72A952F3FEC
:10007000A1F730E223E006951795069517950695AA
:10008000179506951795310F201F55276627139A48
:10009000029B50E0029950E0150F060F3A953F3F42
:1000A000B9F72A952F3FA1F713984FEF4423F1F7A3
:1000B000CECF9FB744277AEA80E179BD88BD9FBF44
:0200C000189591
:00000001FF

### pwm2ppm_30.hex ###
:020000020000FC
:1000000011C000000000000054C00000000000000B
:1000100000000000000070776D3270706D5F31205D
:1000200076312E3058ED60E05CBF67BF5CBF66BFC5
:1000300058E052B951E051B952E05DBD51E05BBDAD
:100040004FEF5AEA60E159BD68BD1098789422E3F9
:1000500030E00027112755276627039B50E00399BE
:1000600051E0150F061F3A953F3FB9F72A952F3FEC
:10007000A1F730E223E006951795069517950695AA
:10008000179506951795310F201F55276627109A4B
:10009000039B50E0039950E0150F060F3A953F3F40
:1000A000B9F72A952F3FA1F710984FEF4423F1F7A6
:1000B000CECF9FB744277AEA80E179BD88BD9FBF44
:0200C000189591
:00000001FF

### pwm2ppm_31.hex ###
:020000020000FC
:1000000011C000000000000054C00000000000000B
:1000100000000000000070776D3270706D5F31205D
:1000200076312E3058ED60E05CBF67BF5CBF66BFC5
:1000300058E052B952E051B952E05DBD51E05BBDAC
:100040004FEF5AEA60E159BD68BD1198789422E3F8
:1000500030E00027112755276627039B50E00399BE
:1000600051E0150F061F3A953F3FB9F72A952F3FEC
:10007000A1F730E223E006951795069517950695AA
:10008000179506951795310F201F55276627119A4A
:10009000039B50E0039950E0150F060F3A953F3F40
:1000A000B9F72A952F3FA1F711984FEF4423F1F7A5
:1000B000CECF9FB744277AEA80E179BD88BD9FBF44
:0200C000189591
:00000001FF

### pwm2ppm_32.hex ###
:020000020000FC
:1000000011C000000000000054C00000000000000B
:1000100000000000000070776D3270706D5F31205D
:1000200076312E3058ED60E05CBF67BF5CBF66BFC5
:1000300058E052B954E051B952E05DBD51E05BBDAA
:100040004FEF5AEA60E159BD68BD1298789422E3F7
:1000500030E00027112755276627039B50E00399BE
:1000600051E0150F061F3A953F3FB9F72A952F3FEC
:10007000A1F730E223E006951795069517950695AA
:10008000179506951795310F201F55276627129A49
:10009000039B50E0039950E0150F060F3A953F3F40
:1000A000B9F72A952F3FA1F712984FEF4423F1F7A4
:1000B000CECF9FB744277AEA80E179BD88BD9FBF44
:0200C000189591
:00000001FF

*/

 

" style="color: rgb(102, 102, 102); text-decoration: none;">tiny10 pwm2ppm 컨버터2093095301_d4xusoD8_ico_img.gif   2093095301_qpOXiCZt_com.gif7
 이학종
19802012-04-29
2093095301_7aWQ9cus_t.gif
18
2093095301_azCEfHsY_old_head.gif  

ATTiny10에 쓸 수 있게 됐습니다. 요 아래에 있는 USBASP를 통해서 입니다.
거기 쓴대로 하드웨어가 준비되면 최신버전 펌을 올리는것으로 하드웨어 준비는 끝이고요.... usbasp.2011-05-28 버전이면 됩니다.
어찌나 기쁜지 속이 다 후련하네요...

PC에서 쓰기를 할때는 AVRDUDE 가 5.11.1 버전이 필요합니다.
아마도 AVR studio 를 쓰시거나 저처럼 WINAVR을 쓰시는 분들은 avrdude를 쓰실 수 있을 겁니다.
이걸
http://www.melzer-electronic.de/avr/AVR-Toolchain-2012-02-22.7z 받아서 원래 폴더를 백업해 두시고(혹시 몰라서요)
이 폴더단위로 대체하시면 되는데, 거기서부터는 걍 쓰면 됩니다. 파일은 11MB 인데 내것도 아닌걸 올릴 순 없고 링크로 대신합니다.

일테면 avrdude -c usbasp -p t10 -P usb -U flash:w:test.hex:i 이라고 쓰는것이, attiny10에 프로그램 test.hex를 usbasp라는 tool을 통해서
써 넣어라 하는 명령입니다.

USBASP 글에 있는 그넘 그림입니다. 작동중 LED 가 켜져 있습니다. 화이고 이쁜것...
이젠 본격적으로 T10 의 하드웨어 공부해야겠네요.... 근데 이거 비싸던데....

" style="color: rgb(102, 102, 102); text-decoration: none;">ATTiny10 - 6핀짜리 최소형 8bit MCU에 프로그램 써넣기2093095301_d4xusoD8_ico_img.gif 
 아직도
17122012-04-24
2093095301_7aWQ9cus_t.gif
17
2093095301_azCEfHsY_old_head.gif  

요번엔 ISP 로 써 넣은 넘들을 Fuse 를 못쓰게 만들어 버렸거나 클럭이 없어서 죽은 반시체들을 살리는 programmer 입니다.
어디 웹에는 심폐소생술이라고 외부 클럭이 있어야 작동하는 넘들을 오실레이터 연결해 주는 것으로 살리는 걸 봤습니다만 이거는 그거랑은 조금 다릅니다.
이건 리셋이 안되는 넘을 강제로 프로그램 써 넣는 것입니다. 물론 오실레이터 어쩌고 한넘도 살아납니다.

그런데 ATMega8 같은 Reset fuse 살릴 때 parallel 프로그래머가 있어야 하는 기계들에는 못씁니다. 거기는 parallel programmer 가 또 있어야 됩니다.
(그것도 사실 졸라 쉽습니다.)

회로도는 14핀도 쓰고 8핀 MCU 도 쓰라고 돼 있지만 8핀만 쓴다면 14핀 쪽은 안만들면 되죠 뭐...
Tiny15 를 안쓰면 스위치도 필요 엄쬬?? 12V 랑 5V 두가지 전원이 필요합니다. 제꺼의 사진을 보시면 Stepup 장치가 달려 있습니다.
5V 만 주면 저기서 12V 까지 한꺼번에 쓰도록 돼 있습니다. (여기서 중요한게 그게 아니니 생략합니다.)
각 TR 6개는 TR 만 있는게 아니고 TR 안에 저항이 포함돼 있습니다. 제작하실때는 입력에 10k옴 저항 하나씩 달아주면 됩니다 뭐...
제꺼는 저항은 모두 SMD 로 뒤쪽에 붙어 있습니다. 그리고 저항 몇개면 됩니다.

이거는 어떻게 쓰느냐면 AVR HV Programmer 라고 검색하시면 프로그램과 이 회로, 그리고 다른 종류들까지 모두 설명돼 있습니다만,
거기 있는 프로그램을 실행하면 됩니다. 파일 여러개 올리는 방법을 알면 좋긴 하겠는데...
받은 곳은 http://elm-chan.org/ 였던 것 같습니다. 그림만 올리려고 했더니 걍 다운로드 받은 파일을 올릴께요...

사용법도 설명돼 있지만 DOS 프로그램이면서 잘 작동 합니다. 이걸로 프로그램 쓰기도 되고, Fuse 만 바꾸기도 되고요...

어제 이 글을 함 썼었는데 제 콤이 삐리리 해서 또 날라 갔습니다. 다시 쓰는데 똑같지 않네요.... 이룬....

" style="color: rgb(102, 102, 102); text-decoration: none;">AVR MCU HV programmer 만들기...2093095301_d4xusoD8_ico_img.gif   2093095301_qpOXiCZt_com.gif2
 아직도
18442012-04-12
2093095301_7aWQ9cus_t.gif
16
2093095301_azCEfHsY_old_head.gif  

인터넷에다가 USBasp AVR programmer 라고 치면 쓰레기 검색빼고 몇번째 안에 나올 겁니다.
 
http://www.fischl.de/usbasp/
요기가 진짜인 듯 싶네요... 젤 위에 있는 gzip 파일 받으시면 됩니다.

페이지를 읽어보시면 TPI 인터페이스를 2011 년판부터 지원한답니다. (요거 얼마전에 알았습니다. 여태 이걸 쓰고 있지만 전에 저거 없었습니다. ^^)
TPI 인터페이스가 뭔지 모르시는 분은 김영일님이 만든 수신기(또는 일본 고이치 씨가 만든 수신기)에 들어가는 ATTiny10 칩이 TPI 로만 읽고 쓰기가 됩니다.
다시 말하면 고년도 쓰고 지우기 가능하단 겁니다. ㅋㅋㅋ
단!!!!!!!!!!!!!!!!! 아직 저도 test 안해본 상태니 요건 여기까지만 합니다. test 해 보고 되면 당근 알려드립니다.
그러니 버전은 2011-5-28 버전을 받으시고 IC 는 ATMega8 이나 ATMega88 을 준비합니다. 제게 ATMega48은 몇개 있는데 이건 안되는 것 같습니다.
(제가 만들어 쓰는 것도 ATMega48버전인데 작동 안됩니다. 쓰~~~)
받으면 그안에 회로도, 이미 만들어진 HEX 파일, 간도빼주는 C 로된 쏘스코드, 그리고 원도나 X 용 드라이버... 다 들었습니다.

이것 역시 제품으로 판매하는 건 전 반대입니다. 이미 저작자가 있는거고, 공개된 것인데, 그랬다간 무슨 사단이 나도 날겁니다.

USBasp 라고 검색하시면 파는거 무지 많이 나올겁니다. 그거 사다 쓰셔도 안될거 없고요...

자 제작이 끝나면 이제 써 넣어야 하는데 이게 좀 ... USB  인터페이스가 있고 다른 칩에 써넣는 신세지만 자기몸에는 못씁니다. 띨빵한것이...
전에 초간단 어쩌고 한 프로그래머로 써 넣을 수 있습니다. 누가 대신 써넣어 줘도 되고요....
자기몸에 USB 로 프로그램까지 내려 받을 수도 있긴 한데, 그렇게 하려면 Boot Loader 를 만들어 넣어주면 됩니다만..... 전문 개발자도 아니고...
써 넣을 땐 JP2 점퍼를 숏 해야 합니다.

다 써넣었으면 USB 포트에 꽂아봅니다. 띵똥 소리가 나면 OK 입니다.
드라이버 설치하라고 나오면 다운 받은 폴더 지정해 주면 알아 합니다. 끝입니다.
이젠 AVR studio 고 WINAVR 이고 BASCOM AVR 이고 뭐든 USBasp 프로그래머 하드웨어를 인식하고 조건에 맞는 칩은 읽고쓰기 할 수 있습니다.

다음번에는 퓨즈 망가진 시리얼 칩들 살려 봅시다. 초간단 HV 프로그래머...

http" www.dynamicrc.com="www.dynamicrc.com" bbs="bbs" icon="icon" member_image_box="member_image_box" jpg="jpg" id="userImg3167880" style="">

그아래 제가 수정한 회로를 보면 이건 뭐 개껌 수준입니다.
USB 신호매칭을 위해 제너 두마리가 필요한걸 일반다이오드 두개로 전원입력을 3.5V 정도로 낮춰 버렸습니다. 그리고 인터페이스 저항들을
모두 삭제 했습니다. 개인이 이리 쓰는거야 두가 말리겠습니까만 이러면 전기쇼크 등엔 약합니다.
그리고 LED 고 시리얼포트고 모두 없애버렸습니다. ㅋㅋㅋ
저래도 작동하냐고요? 당근이죠!!!!!!!!!

회로도 보시면 한심합니다. 이게 USB 포트에 꽂으면 진짜 띵똥 할까 싶을 겁니다만...
일단 가상 USB 장치를 12MHz 를 쓰기위한 12MHz 수정과, 안정캡 두마리(요건 전 안씁니다.), pullup reset 용 저항 한마리(안씁니다),
 LED 두마리와 저항 한개씩(기계를 믿는 사람은 안써도..), 그리고 USB 인터페이스용 부품들 저항 세마리 제너다이오드 두마리
 그리고 리플캡 한마리.... 회로상에 이 기계를 위한 부품은 남은 저항 한마리!!!!!!!!!!!!!!!!! 그리고 각 커넥터!!!

ATMega8 시리즈 칩을 이용해서 가상 USB 장치를 만들고 거기에 USB 드라이버를 붙여 PnP programmer 로 쓰는 겁니다.
보통의 개발 tool 이나 writing program 에서는 USBasp 장치로 인식합니다.
그림은 제가 만들어 쓰고 있는 ATMega48로 만든 프로그래먼데, 글루떡칠을 해 놔서 속이 안보입니다.
맞습니다. 만물상의 음주단속센서로 부품들 뜯어버리고 만든 겁니다.

2093095301_YwG8yTxr_1335018827.jpg


" style="color: rgb(102, 102, 102); text-decoration: none;">AVR MCU programmer USB 버전 만들기...2093095301_d4xusoD8_ico_img.gif   2093095301_qpOXiCZt_com.gif7

 아직도

16002012-04-112093095301_7aWQ9cus_t.gif15

2093095301_azCEfHsY_old_head.gif  

 ATtiny10의 내부 System clock 변경방법.

ATtiny10은 Default로 내부 8Mhz를 8분주하여 1Mhz로 동작한다.
아래 CCP 와 CLKPSR 레지스터를 이용하여 분주비를 바꿀 수 있다.

;================================================
;        상수 정의
;================================================
.equ SIGNATURE = 0xD8            ;ATtiny10의 주민등록번호는 0xD8이다.


;================================================
;        레지스터 변수 정의
;================================================

.def    temp        = r16

 이후 코드 부터는 2Mhz로 동작한다.

" style="color: rgb(102, 102, 102); text-decoration: none;">ATtiny10 내부 Clock 변경방법. 

 

 ;----------[ System Clock설정 ]---------------
 ldi  temp, SIGNATURE
 out  CCP, temp   ; CCP 레지스터에 Tiny10의 고유번호를 넣는다. 이후 4Clock이내에 CLKPSR레지스터에
                         ; 변경하고자하는 CLOCK의 분주값을 써넣는다.
 ldi  temp, 0x02  ; default값은 0x03이며(8분주), 1Mhz이다. 0x02는 4분주를 의미하며, 내부 8Mhz를
                        ;4분주하여 사용한다는 의미이다. 즉 2Mhz다.
 out  CLKPSR, temp   ;딴짓 하지말고 낼름 분주값을 써넣는다.

 김영일

14292012-04-112093095301_7aWQ9cus_t.gif14

2093095301_azCEfHsY_old_head.gif  

전자 공작에 넣으려다가 여기다 씁니다. 양해바랍니다.

AVR MCU 들이 펌을 써 넣을때 쓰는 방식이 parallel 방식을 쓰는데 이게 가장 강력하지만 초간단 버전들을 많이 내 놨습니다.
시리얼 방식중 하나로 SPI 방식을 많이 쓰는 듯 합니다. 일반 8 bit MCU 의 8핀 이상들은 거의 이 interface 를 채용한 듯 합니다.
그 중에서도 개발자가 써야 하는 그런 기능들은 빼고, 읽고 쓰기만 되는 것들도 지천 있습니다.

지금 그중 하나를 만들겠습니다.
이거는 STK200 이나 STK300 이라고 하는 상용제품과 호환되니 개발 tool 에서 프로그래머를 STK200 이라고 지정해 주면 됩니다.
이거는 프린터포트를 사용하고, MCU 에 연결하는 핀은 6개 입니다.
혹 찌파 송신기의 ISP 6핀 플러그 기억나세요? 거기다 연결하면 됩니다.
이 회로도는 인터넷서 줏어온 것들입니다. 문제안되겠지요 뭐...

먼저 회로 설명입니다. 두그림이 같은 겁니다.
저 IC 는 기

댓글 0

조회수 677

등록된 댓글이 없습니다.

아두이노HOME > 아두이노 > 전체 목록

게시물 검색

2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2017
모바일버전으로보기