トピック関連記事
48時間以内の記事は New Mark で表示されます
自分には原因不明
>それともどこかに掲載されたプログラム&スケッチを試したのですか?

スケッチとはなんでしたっけ?


同じ配線で試しました。
RB3につないであるLEDと抵抗があります。
そのLEDと抵抗込みの電圧に差があります。
自分のは明るい。猛牛ロックさんはすべて書いてなかったけど、
以下は、猛牛ロックさんが書いてなかった部分を書き足したものです。


// 花丸 タイマー0割込みPIC16F1827 Configuration Bit Settings
//RA6 マッハからの信号 RA6 SW ONの間中RB3 点灯、 RA6 SW offでRB3 点滅
// 'C' source line config statements
#include <xc.h>
// CONFIG1
#pragma config FOSC = INTOSC // Oscillator Selection (INTOSC oscillator: I/O function on CLKIN pin)
#pragma config WDTE = OFF // Watchdog Timer Enable (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable (PWRT disabled)
#pragma config MCLRE = OFF // MCLR Pin Function Select (MCLR/VPP pin function is digital input)
#pragma config CP = OFF // Flash Program Memory Code Protection (Program memory code protection is disabled)
#pragma config CPD = OFF // Data Memory Code Protection (Data memory code protection is disabled)
#pragma config BOREN = ON // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config CLKOUTEN = OFF // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
#pragma config IESO = OFF // Internal/External Switchover (Internal/External Switchover mode is disabled)
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled)
// CONFIG2
#pragma config WRT = OFF // Flash Memory Self-Write Protection (Write protection off)
#pragma config PLLEN = OFF // PLL Enable (4x PLL disabled)
#pragma config STVREN = ON // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will not cause a Reset)
#pragma config BORV = HI // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config LVP = OFF // Low-Voltage Programming Enable (High-voltage on MCLR/VPP must be used for programming)
// __delay_ms(), __delay_us()関数が使用する

#define _XTAL_FREQ 4000000
volatile int event;
// プロトタイプ宣言
void InitInterTimer0(void);
// メイン関数

void main(void) {
OSCCON = 0b01101010; // 内部クロック周波数を4MHzに設定
// 電圧レベルの初期設定
PORTA = 0x00;
PORTB = 0x00;
// 入出力設定
TRISA = 0b01000000;
TRISB = 0x00;
// タイマ0割込み設定関数の呼び出し
InitInterTimer0();
// 割込み全体の許可
GIE = 1;

// 永久ループ

while (1) {
LATB3 = !RA6;//意味はRA6の内容を反転(論理否定)させたものをLATB3に代入します。
//つまり、RA6が1ならLATB3を0にする。RA6が0ならLATB3を1にする。
}

}


// 割込みサービスルーチン
static void interrupt isr() {
static unsigned int ms = 0;
if (ms < 3000)LATB3 = 1;
else LATB3 = 0;
ms++;
if (ms == 6000) ms = 0;
//msの初期化//カウントアップ、6s(6000)でリセット
// タイマ0割込みフラグをクリア
T0IF = 0;
}


// タイマ0割込み設定関数

void InitInterTimer0(void) {
OPTION_REG = 0b000000000; //プリスケラ000  5ビット=0内部クロック使用 WDTは使わない
TMR0 = -250; //直ぐにセットする
INTCONbits.TMR0IF = 0; //TMR0フラグクリアー
INTCONbits.TMR0IE = 1; //TMR0割り込み許可
INTCONbits.GIE = 1; //全体割り込み許可
}
TR 2018/12/05(Wed) 15:47 No.1304
Re: 自分には原因不明
これは駄目です。
2つのプログラムを無理やり付けても動作しません。
ベースに
LATB3 = !RA6;
がありますから、これを削除すれば3秒毎の点灯/消灯です。

これが付けば、殆どはRA6のスイッチと連動した動作になります。

・SW(RA6)を押したらLED(RB3)が光る
・LED(RB3)を点滅させる

というプログラムをどう両立させようと思ったのですか?
私には目的動作が判りません。

追記

SWを押しっぱなしにすれば、逆に殆ど点灯していて、3秒ごとにちょっと薄くなると思います。
プログラムをちゃんと追えれば、どういった事になっているか判ると思います。
猛牛ロック   2018/12/05(Wed) 16:51 No.1305
Re: 自分には原因不明
SWと連携することを目的としていた中、

LATB3 = !RA6;の記載が出てきたので、
鵜呑みにしていました。


つまり猛牛ロックさんのは、
main関数では、何もしないでいて、
割込みが入るとRB3が点滅するという内容だったんですね。
行き違いがあったようです。
TR   2018/12/05(Wed) 17:01 No.1306

処理 記事No 暗証キー

- JoyfulNote v6.02 -
++ Edited by Hamel ++