; ;******************************************************************************* ;* File Name :CA100_ATmega88 RC内部クロックアジャスタ 被調整マイコン ;* CPU :ATmega88 ;* NAME :KOG ;* Date :2020.05.30 ;* clock :内部RC ;* ;* ;* ;* ;******************************************************************************* ; ;OSCCALの範囲 0〜255 ; ;***** Specify Device ***** ; .include "m88def.inc" ;ATmega88 デバイスに応じて変更すること ; ; ;書き込み時のヒューズビットの設定 ;fuse 11111001 11011110 01110010 0xF9 0xDE 0x72 ; | |||||||| ||||||||_cksel0 Clock 0000:input 0010:RC ; | |||||||| |||||||__cksel1 0011:128kHz 0100-0101:LowFreqXT ; | |||||||| ||||||___cksel2 0111:HighFreqXT(High_power) ; | |||||||| |||||____cksel3 1000-1111:HighFreqXT(Low_power) ; | |||||||| ||||_____sut0 reset_time 00:14*Ck 01:14*Ck+4msec ; | |||||||| |||______sut1 10:内部RC  11:外付けXT ; | |||||||| ||_______ckout(1:システムクロックを出力禁止 出力しない場合は必ず1にする) ; | |||||||| |________ckdiv8(0:クロックを1/8) ; | |||||||| ; | ||||||||__________bodlevel0 000_011:reserve 100:4.3V 101:2.7V ; | |||||||___________bodlevel1 110:1.8V ; | ||||||____________bodlevel2 111:BOD disable ; | |||||_____________eesave (1:eepromは未保護) ; | ||||______________wdton (1:WDTはWDTCSRで許可) ; | |||_______________spien (0:シリアルプログラミングを許可) ; | ||________________dwen (1:デバッグwireを禁止) ; | |_________________rstdisbl (0:pc6-->port 1:pc6-->reset) ; | ; |___________________selfprgen (1:自己プログラム禁止) ; ; ; ;書き込み時のロックビットの設定 ;Lock 11111111 0xFF ; ; ; ; ; ;プログラムはここからスタート init_port: ;ポートB0,B1を入力 、ポートB2を出力に設定しLowを出力しておくこと ldi r16,0b00000000 ;set portb out portb,r16 ldi r16,0b11111100 ;0:input 1:output set ddrb out ddrb,r16 ; ldi r16,0b00000000 ;set portc out portc,r16 ldi r16,0b11111111 ;0:input 1:output set ddrc out ddrc,r16 ; ldi r16,0b00000000 ;set portd out portd,r16 ldi r16,0b11111111 ;0:input 1:output set ddrd out ddrd,r16 ; ; main: ldi r17,8 ;set bit counter main2: sbis pinb,1 ;クロックの立ち上がりエッジ検出 rjmp main2 ; clc ;clear carry sbic pinb,0 sec ;set carry rol r16 ; main4: sbic pinb,1 ;クロックの立ち下がりエッジ検出 rjmp main4 ; dec r17 ;8回繰り返し brne main2 ; sts osccal,r16 ;set calbration data ,ATmega88 , ATmega168 etc ; out osccal,r16 ;set calbration data ATtiny13 , ATtiny45 , ATtiny44 , ATtiny2313 , ATtiny461 , ATmega16 etc ; ldi r16,100 ;周波数が安定するまで待つ main5: dec r16 brne main5 ; ldi r27,0x03 ;set 900 ldi r26,0x84 ; sbi portb,2 ;pulse rise main8: sbiw r27:r26,1 brne main8 ; cbi portb,2 ;pulse fall ; rjmp main ;