「耳掛け式手元ライト」で作成したライトに満充電のLIR2032を取り付けると、かすかに「キーン」という音がする。 「満充電の」と書いたのは、幾度か使って電圧の下がっているCR2032だとLEDは点灯するが音は鳴らないから
PIC12F1822 あるポートが0.5秒間以上High --> 別のポートを3秒間High
某質問サイトを眺めていたら「あるポートで0.5秒以上High状態が続いたら別のポートを3秒間Highにする。」には、というような質問があったので、出来るかなと思ってやってみた。 PIC12F1822にしたのは、たまたま机
LTC4054ES5-4.2でLIR2032の充電器
「LTC4054ES5-4.2でLIR2032の充電器を試作」でブレッド・ボード上で動作確認していたLTC4054ES5-4.2を使ったLIR2032用の充電器を作成してプリント基板にハンダ付けした。 左が充電中。 右の
PIC16F88とPIC16F1827の処理速度の差
某巨大掲示板で、「PIC16F88からPIC16F1827に移植したら、すげえ速くなっちまったのはなぜでしょう。」 と書いてる人がいて、そりゃPLLの設定でしょうと思った。 やり取りを読んでいると、「クロックの設定も同じ
久しぶりにエッチング
久しぶりにエッチングした。 4枚を1枚にしていっぺんにエッチングして、あとで切り離す。 だから同じ手順のはずなのに、何だか汚くなるのと、きれいなのとがあり、しかも、汚くなる理由が分からない。 あと、4枚まとめてからやるん
PIC10F322 扇風機のリモコンのクローンを作る 2 SLEEPさせる
「PIC10F322 扇風機のリモコンのクローンを作る 1 ON/OFFの実装」の続き。 消費電力を減らすために、4秒程度何もしないと自動的にSLEEPモードに入るようにした。 正確には 1/16000000 × 4 ×
PICのI/Oから流せる電流では足りないのでトランジスタを使うんだって
PICのI/Oから流せる電流はせいぜい25mA程度だ。 Lチカ程度なら問題ないが、最近遊んでる赤外線リモコンでもっと出力を増やしたいとかいう事になると、調べた限りではトランジスタで増幅する必要があるんだって。 で、そのト
PIC10F322 扇風機のリモコンのクローンを作る 1 ON/OFFの実装
扇風機のリモコンから送った信号をPICで認識させることはできた(「PIC12F1822 + IR RC Module 扇風機のリモコン信号の受信」)。 そもそも、扇風機の壊れた首振り機能をPICを使って再現するのが目的だ
PIC10F322 3 LED Blinking 2
PIC10F322でLチカの第2弾 せっかくだからPWMも使ってみる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
#include <xc.h> // CONFIG #pragma config FOSC = INTOSC // Oscillator Selection bits (INTOSC oscillator: CLKIN function disabled) #pragma config BOREN = OFF // Brown-out Reset Enable (Brown-out Reset disabled) #pragma config WDTE = OFF // Watchdog Timer Enable (WDT disabled) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config MCLRE = OFF // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD) #pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled) #pragma config LVP = OFF // Low-Voltage Programming Enable (High-voltage on MCLR/VPP must be used for programming) #pragma config LPBOR = OFF // Brown-out Reset Selection bits (BOR disabled) #pragma config BORV = LO // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.) #pragma config WRT = OFF // Flash Memory Self-Write Protection (Write protection off) #define _XTAL_FREQ 16000000 void interrupt intr(void) { INTCONbits.TMR0IF = 0;//Timer0 Overflow Interrupt Flag Clear TMR0 = 222; RA2 = ~RA2; } int main(void) { OSCCONbits.IRCF = 0b111;//16MHz ANSELA = 0b000;//for Digital I/O TRISAbits.TRISA0 = 0;// TRISAbits.TRISA1 = 0;// TRISAbits.TRISA2 = 0;// //Timer0 OPTION_REGbits.PSA = 1;//Prescaler is disabled //OPTION_REGbits.PS = 111;//1:256 OPTION_REGbits.T0CS = 0;//TMR0 Clock Source is Internal instruction cycle clock (FOSC/4) INTCONbits.GIE = 1;//Global Interrupt Enabled INTCONbits.PEIE = 1;//Peripheral Interrupt Enabled INTCONbits.TMR0IE = 1;//Timer0 Overflow Interrupt Enabled INTCONbits.TMR0IF = 0;//Timer0 Overflow Interrupt Flag Clear TMR0 = 222; //PWM1 PR2 = 104; T2CONbits.TOUTPS = 0b0000;//Timer2 Output Postscaler = 1 T2CONbits.T2CKPS = 0b00;//Timer2 Clock Prescale is 1 T2CONbits.TMR2ON = 1;//Timer2 is on PWM1DCH = 0b00110100; PWM1DCL = 0b10; PWM1CONbits.PWM1EN = 1;//PWM Module Enabled PWM1CONbits.PWM1OE = 1;//Output to PWMx pin is enabled PIR1bits.TMR2IF = 0; while(1){ RA1 = 1; __delay_ms(300); RA1 = 0; __delay_ms(300); } } |
RA0はPWM1を使ってデューティー比50%の約38kHzのパルス。 RA1は__
PIC10F322 3 LED Blinking
秋月でPIC10F200が60円、PIC10F322が55円という逆転現象が起きている。 少しも珍しいことではない。 PIC10F222も、10+1の在庫が無くなったら値上げされるんだろう。 要らないDIPを計算に入れな