2024年2月26日月曜日

attiny2313 deep zone/attiny85/attiny13-int-pcint

AVRでのタイマとPWMの使い方 | うしこlog (nomaki.jp) これはatmega328pだが

総論的で有益、ほかの内容も実例豊富

ATtiny2313 PWM - Pulse Width Modulation (startingelectronics.org) :: pwm success

ここでうしこlogにあるCOMB01のビット立てがないがPB2出力には無関係なのでOK

 LED点灯 (IO入出力 ) | 始めるAVR (startelc.com) が成功

#include <avr/io.h> int main() { // 初期化 //ポート入出力設定 DDRD = 0xF3; // ポートDを1111 0011 #2,3だけ入力設定 PORTD = 0x0C; // 0000 1100 #2,3だけ内部プルアップ設定 // 出力 PORTD |= 0x10; // 0001 0000 #4だけ出力 led#4点灯 while(1){ if( bit_is_clear (PIND,PD2) )

{ // ポートD#2 ==0 なら

PORTD |= _BV(PD5); //#2SW押しで Led#5点灯 PD5ピンを High }else{ PORTD &= ~_BV(PD5);

//#2SW押さないと Led#5消灯 PD5ピンを andLow } } }

タイマーで正確な時間稼ぎ(タイマー0) | 始めるAVR (startelc.com) これも成功

#include <avr/io.h>

void T0wait(unsigned char ms){ //ms回オーバーフローを繰り返すウエイト unsigned char i; for( i=0; i< ms; i++ ){ //オーバーフロー回数 while( bit_is_clear(TIFR,TOV0) ); //オーバーフローになるまで待つ TIFR = _BV(TOV0); // 検知フラグを戻して再開 } } int main(){ DDRD = 0xFF; // ポートDを全部出力設定 TCCR0B = 0x05; // プリスケーラは ck/1024 TCNT0 = 0; // タイマ0の初期値 while (1) { PORTD=0x10; //PORTD出力 LED#4点灯 #5消灯 0001 0000 T0wait(25); // (1/8M)×1024×256 ×24 ほぼ0.8sec PORTD=0x20; //PORTD出力 LED#4消灯 #5点灯 0010 0000 T0wait(25); } } // cpu clock is 8mhz at this case

ATtiny85 ADC tutorial with interrupts - Gadgetronicx 2examles success

ATtiny13の外部割込みメモ | くろべこblog (kurobekoblog.com) 2examples success

(also attiny85 can run this codes)

0 件のコメント:

コメントを投稿