0

Teensy 2 で遊んだり、C コードを学習したりしています。現在、ピンを入力として設定する方法を見つけようとしています。私のコードは次のとおりです。

#include <avr/io.h>
#include <avr/pgmspace.h>
#include "usb_debug_only.h"
#include "print.h"
#include <util/delay.h>

#define RED_LED_ON  (PORTB |= (1<<7))
#define RED_LED_OFF  (PORTB &= ~(1<<7))

#define GREEN_LED_ON  (PORTD |= (1<<2))
#define GREEN_LED_OFF  (PORTD &= ~(1<<2))

#define BLUE_LED_ON  (PORTC |= (1<<7))
#define BLUE_LED_OFF  (PORTC &= ~(1<<7))

#define SWITCH_OUT_CONFIG (DDRD |= (1<<6), PORTD |= (1<<6))

#define SWITCH_IN_CONFIG (DDRF &= ~(1<<1), PORTF |= (1<<1))

#define LED_CONFIG  (DDRB |= (1<<0))
#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n))

#define MY_DELAY 100

int main(void) {
    // set for 16 MHz clock, and make sure the LED is off
    CPU_PRESCALE(0);
    LED_CONFIG;
    /*SWITCH_IN_CONFIG;
    SWITCH_OUT_CONFIG;*/

    DDRD |= (1<<6); //Set pin D6 as output
    DDRF &= ~(1<<1); //Set pin F1 as input

    PORTD |= (1<<6); //Set pin D6 output to high
    PORTF |= (1<<1); //Set pin F1 to act as pullup resistor

    RED_LED_OFF;
    GREEN_LED_OFF;
    BLUE_LED_OFF;

    // initialize the USB, but don't want for the host to
    // configure.  The first several messages sent will be
    // lost because the PC hasn't configured the USB yet,
    // but we care more about blinking than debug messages!
    usb_init();

    for(;;) {
        if(PINF & (1<<1)) {
            /*Do stuff here, since button is pushed*/
    }
    else {
        /*Do nothing*/
    }
}

}

私が現在直面している問題は、入力プット (F1) が回路を完了していないことです。プッシュボタンに接続しています。そのプッシュ ボタンを直接アースに接続すると、回路が完成し、ボタンを押すと接続されている LED が点灯します。このピンに接続を切り替えると、何もしません。私が現在知っていることから(これは間違っているように見えます)、このピンは、ハイ信号を出力している別のピン(この場合、プッシュボタン回路で使用できるため、動作しているとわかっているD6)に接続するとハイになります。グランドに接続されている場合)。代わりに、接続されているレジスタ内のこのピンの値が常に「1」であるように見えます (if else ステートメントの "do stuff" 部分が常に実行されています)。

私が間違っていることについての助けをいただければ幸いです。

4

1 に答える 1