総論はこれ!
https://dbpro.xyz/avrwiki/wiki.cgi?page=Getting+Started+Notes+-+Ports#p8
http://usicolog.nomaki.jp/engineering/avr/avrPWM.html はタイマ総論
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ATtiny13。ちっちゃいマイコンの書き込み方~Lチカまで@Arduino | くろべこblog (kurobekoblog.com) attiny13aはattiny85と環境設定jsonはちがう 以下の通り
https://mcudude.github.io/MicroCore/MicroCore_MCUdude_MicroCore_index.json
Lチカは以下のとおり
#include <avr/io.h>
#include <util/delay.h> // for _delay....
void setup() {
DDRB |= 0b00001000; // PB3 set to output
}
void loop() {
PORTB |= 0b00001000; //PB3 output to high
_delay_ms(1000);
PINB |= 0b00001000; // 注 総論参照
_delay_ms(1000);
}
Arduinoで、小っちゃいIC(ATTiny)を使う方法 - Qiita
attiny13,attiny85とポートレジスタが違うので注意
吉野さんから以下のコードをいただいた
/*
* 8bits Timer Counter ATtiny13A*/
#include <avr/io.h>
uint8_t hsPWM(bool pin, int8_t pwm){
// 内臓クロック9.6MHz
if(pin==0){
DDRB |= 0b00000001; // PB0出力設定
TCCR0A |= 0b10000011; // PB0非反転出力,高速PWM
TCCR0B |= 0b00000010; // 8bit高速PWM,8分周比
OCR0A = pwm; // 8bitタイマ/カウンタ比較レジスタA
return OCR0A;
}
else{
DDRB |= 0b00000010; // PB1出力設定
TCCR0A |= 0b00100011; // PB1非反転出力,高速PWM
TCCR0B |= 0b00000011; // 8bit高速PWM,64分周比
OCR0B = pwm; // 8bitタイマ/カウンタ比較レジスタB
return OCR0B;
}
}
void setup() {
}
void loop() {
hsPWM(1, 50); // ピン番号、デューティ比(ex.50/255)
}
デューティ比を変えるには関数のpwmの値(1~255)
分周比を変えると周波数が変わります。
ちなみにTCCR0Bレジスタの下位3ビットが、010:8分周 011:64分周 100:256分周
101:024分周です。
----------------------------------------------------------
attiny85::flash 8kもある! attiny44a::14pin!
------328p------------------------------------------------------------------
https://qiita.com/oh_one/items/ac016c58190f77f66a13 about atmega328p
0 件のコメント:
コメントを投稿