avr-attiny-tutorial/blink_watchdog_interupt/main.c at master · casperbang/avr-attiny-tutorial · GitHub 吉野さんによればwdt.h,avr/io.hが抜けているとのこと
以下のコードでattiny13aで大成功 WDTは、AVRマイコン・リファレンスブック P52の図2-18のように128KHzオシレータで動いている
(ATtiny ウォッチドッグタイマ割込みでLEDチカチカ | 東京お気楽カメラ (okiraku-camera.tokyo) これはattiny85系だった)
#include <avr/interrupt.h>
#include <avr/sleep.h>
#include <avr/wdt.h>
#include <avr/io.h>
#define LED PB0
ISR(WDT_vect) {
// Toggle port B output 0 output state
PORTB ^= _BV(LED);
}
int main(void) {
// Set port B output 0 as output
DDRB = _BV(LED);
// Prescale timer to 4s -->wrong! 500msだった
WDTCR |= (1<<WDP2) | (1<<WDP0); //
// Enable watchdog timer interrupts
WDTCR |= (1<<WDTIE);
// ATtiny13Aでウォッチドッグタイマを使ったタイマー割り込み: 猫にコ・ン・バ・ン・ワ (cocolog-nifty.com) これによるとunoならwdtieでなくwdieになるげな
// Enable global interrupts
sei();
// Use the Power Down sleep mode
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
for (;;) {
sleep_mode(); // Deep sleep, waiting for interrupt
}
}
以下はattiny2313で成功
/*
* WDT 【ATtiny2313】
* wdt.c 2024.3.6
*/
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
#define LED PB0
ISR(WDT_OVERFLOW_vect) {
PORTB ^= _BV(LED);
}
int main(void) {
DDRB = _BV(LED);
WDTCSR |= (1<<WDIE) | (1<<WDP2) | (1<<WDP0); // Enable watchdog timer interrupts
// Prescale timer to 500ms
sei();
set_sleep_mode(SLEEP_MODE_PWR_
while (1) {
sleep_mode(); // Deep sleep, waiting for interrupt
}
}
------------------------------------------------------------
普通はtx,rxでいい。。。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
AT24Cxx - Arduino Reference 中華EEPROM I2C仕様 なんかおかしい。。。。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
A-Dコンバータ その1 10ビットSPI MCP3002 - Arduinoクックブック (denshi.club)
SPIサンプルコード成功した 2チャンネルなので使い勝手がいい,bme vs dht like
0 件のコメント:
コメントを投稿