質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.62%

  • C

    3561questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • C++

    3328questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • Atmel Studio

    3questions

CdSセルを使ってLEDライトの明るさを制御するコードのエラー

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 171

tenjin

score 206

前提・実現したいこと

AtmelStudioを使ってC言語のコードを書いています。
実装したいこととしては、CdSセルを使ってLEDライトの明るさを制御することです。
マイコンは「ATSAMl21E16B」を使用しています。
以下、コード作成の参考にしているサイトです。

SAM Port (PORT) Driver
Quick Start Guide for PORT - Basic

発生している問題・エラーメッセージ

以下のようにエラーメッセージが表示されていますが、どのように修正すればいいのかわからず、アドバイスをいただけますと幸いです。

Severity Code Description Project File    Line
Error        recipe for target 'src/main.o' failed    trial    C:\Users\rg\Documents\Atmel Studio\7.0\trial\trial\Debug\Makefile    332

Severity Code    Description    Project    File    Line
Error        implicit declaration of function 'configure_adc' [-Werror=implicit-function-declaration]    trial    C:\Users\rg\Documents\Atmel Studio\7.0\trial\trial\src\main.c    47

1つめのエラーが指している場所はmain.cとは別の場所にあったため、以下明記します。

src/%.o: ../src/%.c
    @echo Building file: $<
    @echo Invoking: ARM/GNU C Compiler : 6.3.1
    $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-gcc.exe$(QUOTE)  -x c -mthumb -D__SAML21E16B__ -DDEBUG -DBOARD=USER_BOARD -DARM_MATH_CM0PLUS=true -DADC_CALLBACK_MODE=true -DUSART_CALLBACK_MODE=true  -I"../src/ASF/common/boards" -I"../src/ASF/sam0/utils" -I"../src/ASF/sam0/utils/header_files" -I"../src/ASF/sam0/utils/preprocessor" -I"../src/ASF/thirdparty/CMSIS/Include" -I"../src/ASF/thirdparty/CMSIS/Lib/GCC" -I"../src/ASF/common/utils" -I"../src/ASF/sam0/utils/cmsis/saml21/include_b" -I"../src/ASF/sam0/utils/cmsis/saml21/source" -I"../src/ASF/sam0/drivers/system" -I"../src/ASF/sam0/drivers/system/clock/clock_saml21" -I"../src/ASF/sam0/drivers/system/clock" -I"../src/ASF/sam0/drivers/system/interrupt" -I"../src/ASF/sam0/drivers/system/interrupt/system_interrupt_saml21" -I"../src/ASF/sam0/drivers/system/pinmux" -I"../src/ASF/sam0/drivers/system/power/power_sam_l" -I"../src/ASF/sam0/drivers/system/power" -I"../src/ASF/sam0/drivers/system/reset/reset_sam_l" -I"../src/ASF/sam0/drivers/system/reset" -I"../src/ASF/common2/boards/user_board" -I"../src" -I"../src/config" -I"../src/ASF/common/services/serial" -I"../src/ASF/sam0/drivers/adc" -I"../src/ASF/sam0/drivers/adc/adc_sam_l_c" -I"../src/ASF/sam0/drivers/sercom" -I"../src/ASF/sam0/drivers/sercom/usart"  -O1 -fdata-sections -ffunction-sections -mlong-calls -g3 -Wall -mcpu=cortex-m0plus -c -pipe -fno-strict-aliasing -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror-implicit-function-declaration -Wpointer-arith -std=gnu99 -ffunction-sections -fdata-sections -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int -Wmain -Wparentheses -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef -Wshadow -Wbad-function-cast -Wwrite-strings -Wsign-compare -Waggregate-return  -Wmissing-declarations -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations -Wpacked -Wredundant-decls -Wnested-externs -Wlong-long -Wunreachable-code -Wcast-align --param max-inline-insns-single=500 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)"   -o "$@" "$<" 
    @echo Finished building: $<

該当のソースコード

#include <asf.h>
#include <stdint.h>
#include <stdlib.h>
//#define unit16_t unsigned short int
struct adc_module adc_instance;
struct usart_module usart_instance;

void configure_usart(void){
    struct usart_config config_usart;
    usart_get_config_defaults(&config_usart);
    config_usart.mux_setting = USART_RX_1_TX_2_XCK_3;
    config_usart.pinmux_pad0 = SERCOM2_PAD0_DEFAULT; //check this these corresponding to PA8, 9, 10, 11
    config_usart.pinmux_pad1 = SERCOM2_PAD1_DEFAULT;
    config_usart.pinmux_pad2 = SERCOM2_PAD2_DEFAULT;
    config_usart.pinmux_pad3 = SERCOM2_PAD3_DEFAULT;
    while (usart_init(&usart_instance, SERCOM2, &config_usart) != STATUS_OK){}
    usart_enable(&usart_instance);
}

void configure_adv(void){
    struct adc_config config_adc;

    adc_get_config_defaults(&config_adc);
    config_adc.reference = ADC_REFCTRL_REFSEL_INTVCC2;
    adc_init(&adc_instance, ADC, &config_adc);
    adc_enable(&adc_instance);
}

int main (void)
{
    system_init();
    //struct system_standby_config st;
    //st.power_domain = SYSTEM_POWER_DOMAIN_PD01;
    struct system_pinmux_config config_pinmux;
    system_pinmux_get_config_defaults(&config_pinmux);

    config_pinmux.mux_position = 1; //ADC. please see page 540 of the spec sheet
    system_pinmux_pin_set_config(2, &config_pinmux); //pin number is starting from zero, sp this is pad3
    system_pinmux_pin_set_config(3, &config_pinmux); // this is pad4
    config_pinmux.mux_position = 3; //USARcom because of the chosen pins this has to be mux 0
    system_pinmux_pin_set_config(10, &config_pinmux); //pin11
    system_pinmux_pin_set_config(11, &config_pinmux); //pin 12 RX
    system_pinmux_pin_set_config(12, &config_pinmux); //pin 13 TX
    system_pinmux_pin_set_config(13, &config_pinmux); //pin 14 Clock

    //system_interrupt_enable_global();
    configure_adc();
    configure_usart();
    uint8_t string[] = "Hello World\r\n";

    usart_write_buffer_wait(&usart_instance, string, sizeof(string));
    uint16_t temp;
    while (true){
        if(usart_read_wait(&usart_instance, &temp)==STATUS_OK){
            while(usart_write_wait(&usart_instance, temp)!=STATUS_OK){

            }
    }
}
adc_start_conversion(&adc_instance);
uint16_t result, ans;

do{

}while(adc_read(&adc_instance, &result) == STATUS_BUSY);
ans = result; //eliminate the optimization to see the result

    /* Insert application code here. after the board has been initializae. */
}

試したこと

Lチカは以下のコードで行うことができました。
Lチカのコード

/**
 * \file
 *
 * \brief Empty user application template
 *
 */
/**
 * \mainpage User Application template doxygen documentation
 *
 * \par Empty user application template
 *
 * Bare minimum empty user application template
 *
 * \par Content
 *
 * -# Include the ASF header files (through asf.h)
 * -# Minimal main function that starts with a call to system_init()
 * -# "Insert application code here" comment
 *
 */
/*
 * Include header files for all drivers that have been imported from
 * Atmel Software Framework (ASF).
 */
/*
 * Support and FAQ: visit <a href="http://www.atmel.com/design-support/">Atmel Support</a>
 */
#include <asf.h>
#define LED_0_PIN 16

void configure_port_pins(void);
int main (void)
{
 system_init();
  configure_port_pins();
 /* Insert application code here, after the board has been initialized. */
 while (true) {
        bool pin_state = 1;
        port_pin_set_output_level(LED_0_PIN, pin_state);
 }
}
void configure_port_pins(void)
{
    struct port_config config_port_pin;
    port_get_config_defaults(&config_port_pin);
    config_port_pin.direction = PORT_PIN_DIR_OUTPUT;
    port_pin_set_config(LED_0_PIN, &config_port_pin);
}

補足情報(言語/FW/ツール等のバージョンなど)

回路では2ピンにCdSセルが、16ピンにLEDライトが繋がっています。
Atmel Studio 7.0

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • ozwk

    2018/01/11 13:35

    エラー読んでますか?

    キャンセル

  • tenjin

    2018/01/11 14:55 編集

    読んでいますが、理解が難しい状態です。

    キャンセル

  • ozwk

    2018/01/11 14:58

    implicit declaration of function 'configure_adc'についても?

    キャンセル

  • tenjin

    2018/01/11 15:24 編集

    はい、検索してもわかりません。

    キャンセル

回答 1

checkベストアンサー

+1

2つ目のエラーは「configure_adc」が見つからないというエラーでしょう。
「configure_adv」というルーチンはあるので単なるタイプミスかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/01/11 19:03

    ご回答いただきましてありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • C

    3561questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • C++

    3328questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • Atmel Studio

    3questions