電子工作日記、その他

趣味の電子工作製作の記録、その他思った事

warningをとる(外す)には

2012-04-16 05:33:29 | 日記
../ADCm328P.c:231:1: warning: control reaches end of non-void function

warning:が出るのですが、どの様にしたらとれますか?

mainの中にb16toLED();を記述すると、とれるのですが。

int b16toLED()
{
unsigned char tbup,tblow,msk,n;
msk = 0x01;

tbup=0xAA; tblow=0x55;

for(n=0;n<8;n++)// 0 1 2 3 4 5 6 7
{
tblow = tblow>>n;//0111 0111-->0011 1011

if(tblow &= msk)
{
PORTB |= _BV(0);//b0=1

PORTB &= ~_BV(1);//Clk ↓
PORTB |= _BV(1); //Clk ↑
}
else
{
PORTB &= ~_BV(0);//b0=0

PORTB &= ~_BV(1);//Clk ↓
PORTB |= _BV(1); //Clk ↑
}
tblow = tblow >> 1 ;
}//n=0 --> n<8
}

//***************************
int main(void)
{

port_init();//

unsigned int BADC0,BADC1,BADC2,BADC3,BADC4,BADC5;
//------------------------------------

while(1)
{

while( (ADCSRA & 0x40) != 0 );// Wait Conversion End (ADSC=0 ?) 0b0100 0000

ADMUX = 0x00;// REFS1 REFS0 ADLR ----- MUX3_ MUX2_ MUX1_ MUX0_ ref=AREF ADLR=0(Right)

_delay_us(1);

ADCSRA = 0xC0;// ADEN_ ADSC_ ADATE ADIF_ ADIE_ ADOS2 ADPS1 ADPS0 ADEN=1,ADSC=1 ADC0 Start ADC

while( (ADCSRA & 0x40) != 0 );// Wait Conversion End (ADSC=0 ?) 0b0100 0000

//* ADSC=0 *
BADC0 = ADC;

b16toLED();
}
}


最新の画像もっと見る

28 コメント

コメント日が  古い順  |   新しい順
itoaやultoa ありがとうございます (kawana)
2012-05-04 10:57:06
itoa有った事思い出しました。検討してみます。
10bit AD値(MAX3FF、1023)
Ref=5V
MAD 1023/2---512(十進)

2560/1000=2
560/100=5
60/10=6
... 0
とりあえず、上記やってみます。

返信する
Unknown (gcc)
2012-05-04 08:41:29
> AD値を十進変換したいのですが、C Libは
> 無いでしょうか?

10進数の文字列に変換すると言う意味なら、itoaやultoaなどがあります。
詳しい使い方は、itoaやultoaをネットで検索してください。
返信する
HIDspx の製作 (kawana)
2012-05-03 12:32:08
PCをFormatしていたので、AVRStudio4のWriterがどこかへ行ってししまっていた。
やむなく、AVRSP、AVRISP-mkⅡで作業を完了した。HIDspxが4個くらい有るので、HIDspxをTESTしたが、思うように書き込めない。
あれこれ、TESTしているうちに、
AVRSP>hidspx -ph -rでチップ情報が読めた。
分裂思考であるが、使用しない両面ユニバ-サル基板が有る事に気が付きHIDspxを製作する事
にした。(はんだ鏝で製作したく成った。)
返信する
乗算、除算 Lib(C)は無いでしょうか (kawana)
2012-05-02 17:19:42
AD値を十進変換したいのですが、C Libは
無いでしょうか?

ChanさんのASM Subroutine使用も考えているのですが、難しく考えてしまいます。
対象は、AVR、16x16 bit, 16/16 bit
返信する
乗算、除算が欲しいな (kawana)
2012-04-28 17:16:09
ADC値をデジタル表示したいので乗算、除算が
欲しく成ってしまった。

(AD値/1023)x5000=5115 もうこの段階で
誤差が2%か?
上手い方法は、無いか?
返信する
8Bit LED表示器の製作 (kawana)
2012-04-28 10:32:32
3Φ660nm赤色高輝度LED 100pcs \1200が有ったので、製作した。
(1個\12のLED)2.2Kを使用したが、かなり
明るい。500ms on/off。
返信する
LCDを接続したが動作しない (kawana)
2012-04-27 10:22:02
LED TEST OKを確認後、LCDを接続したが動作しなかった。部分test OKを確認しているので
半田付けの確認をした。
LCD Connector(Connecter)の5pin R/Wが
浮いていた。
ユニバ-サル基板で製作の場合、誤配線の
チェックが必要な事、再確認した。
返信する
TQFP にUEWはんだ付け (kawana)
2012-04-26 21:11:05
久日ぶりにATMEGA168 TQFP UEW(0.23)のはんだ付けをした。(UEWは、shuji009 さんからいただいた。)
ユニバ-サル基板にTQFPを両面テ-プで貼り付け、Directにはんだつけした。途中修正する事無く終了した。
-rfで読みだすとATMEGA168と読めた。
ひとまず成功。
返信する
LCD SC1602BTEST表示は出来たが (kawana)
2012-04-26 16:09:46
LCD SC1602BTEST表示は出来たが、表示体裁を
考えると、迷ってしまう。
まずは、どの様に表示させるか?
CH0 CH1 CH2 CH3 CH4 (20Character)
5.0 5.1 5.2 5.3 5.4 (20Character)
返信する
LCDとLED表示を排他的使用 (kawana)
2012-04-25 13:44:58
シリアルLCD下記に有ったけど
http://www.microbot-ed.com/j_2x16ser_new_backlit.html

良く考えて見たら、LCD表示の時、LED表示を
同時に使用する事は、まれで有るので、通常の
LCD SC1602Bの回路を組む事にした。
これなら、Programも有るし、直ぐに組み込み
出来る。
返信する
シリアルLCDの研究 (kawana)
2012-04-25 10:32:49
SC1602B系のLCDは、使用してきたので、
シリアルLCDの研究をする事にした。
SC1602Bくらいの大きさでシリアルLCDを
探してみよう。
返信する
16Ch LCD (kawana)
2012-04-25 10:11:09
ADC値の16bitLED表示が出来たが、表示してみるとdebugには十分で有るが、電圧値表示は、やはり10進表示が良いと思い、LCD表示をしてみようと思った。
シリアルLCDに挑戦するか、PORTBはb0,b1,b2は
使用済み
普通のLCDにするか PORTD b5,b4 b3,b2,b1,b0
検討中
返信する
b16toLED (kwana)
2012-04-24 20:20:31
//----- subroutine -----------
void b16toLED(unsigned int idata)
 {
 PORTB = 6;// 0000 sync,latch,clock,data
 imsk = 0x0001;// 0000 0000 0000 0001;

 for(n=0;n<16;n++)// 0--15
 {
   if( (idata & 0x0001) !=0)// 0x3A5 & 1
   {
   PORTB |= _BV(0);//b0=1
   }
   else
   {
   PORTB &= ~_BV(0);//b0=0
   }

  _delay_us(1);// _ for strobe
  PORTB &= ~_BV(1);//Clk↓
  _delay_us(1);//    _
  PORTB |= _BV(1);//Clk ↑
  _delay_us(1);//    ↓_↑_

  idata = idata >> 1; //

  }
 }

//----- main ------

// ***** 16btoLED *****
//unsigned int idata = 0x03A5;

  PORTB = 6;
  idata=0x3A5;
  b16toLED(idata);

// *** latch ***
  PORTB &= ~_BV(2);// clock ↓
  _delay_us(1);// _
  PORTB |= _BV(2);// clock ↑
  //         _  _
  _delay_us(1); //Clk ↓_↑
返信する
Directに波形を出力成功 (kawana)
2012-04-21 18:35:27
data,clock,latchを下記タイミングで出力
   ___
data |  |
clock _ _
     |_|
latch          _ _
               |_|
返信する
Directにdata,clock,latchをgenerate (kawana)
2012-04-20 19:33:45
上手く動かないので、Directに波形を出力して
確かめる事にした。
返信する
b16toLED() debug (kawana)
2012-04-20 07:20:16
debugしたが、案の定動作せず。
data,clock,latch,sync(LED)のLEDのみ出力されていた。出力無し確認したら、配線されていなかった。出ないはず。
clockを10usくらいに設定し、オシロで観測、
同期をsyncに掛けて、data,clock,latchが
きちんと見える様にしなければダメだと
思う。
返信する
32.768KHz OSCの定数 (kawana)
2012-04-19 21:43:12
IC 74HCU04
Rf=10MΩ
Rd=74KΩ
C1,C2=22PF
周波数計測 32.769-32.770KHz
C1,C2=15PF(回路図は15PF)に変更してどう成るか(f↑に成る?)
返信する
信号端子をはんだ付け (kawana)
2012-04-18 18:11:28
案の定、動作しないので、信号端子を付ける。
data(b0)
clock(b1)
latch(b2)
sync LED(b3)
オシロスコ-プで波形観測してみよう。
返信する
void b16toLED() (kawana)
2012-04-18 15:59:45
void b16toLED()でreturn 0;を削除しても
Warning無しに成りました。
返信する
b16toLED() ? (kawana)
2012-04-18 15:29:59
b16toLEDは、debug用として、mainで数回使用を
考え、subroutineとした。functionでは無く
単純に8(16)bitdataをLED表示するため。
void b16toLED(void または、dbuf)と
すれば、良かったかも知れない。後で
TESTしてみます。
返信する
Unknown (k)
2012-04-18 15:19:17
わかりました。

Cのサブルーチンは関数です。
関数へは通常はデータを渡して結果の値を受け取るので、int型、char型などになります。
数値を渡さず、LED点灯などの動作をするだけでは戻り値が不要ですから、サブルーチンの型を「何も戻さない」void型とするのが普通のように思います。
返信する
Unknown (k)
2012-04-18 14:10:09
return 0;を返すことでwarningが出なくなり解決したこと、了解しました。
でも、b16toLED()はそもそも何かを返す必要のあるfunctionなのでしょうか。
返信する
Unknown (k)さんご意見有難う (kawana)
2012-04-18 11:56:11
私は、感謝の意で有難う、解決しました。の
返礼で由と考えていましたが、自己本位過ぎの考えは、思い浮かびませんでした。いたらなさ
すみません。

下記に回答致します。
何故出たか
Subroutineの最後にreturn 0;が無かった。

どういう意味だったか
Subroutineの処理の結果をmainに渡して完結するが、結果0を渡していず、suburoutineが終了
していない。(少し表現が悪い?グロ-バル変数使用?)

どうしたら解決したか
return 0;を追加記述した。
おおざっぱに、この様に考えています。
返信する
Unknown (k)
2012-04-18 10:40:10
Warningを話題にして、解決したなら
 なぜ出たのか
 どういう意味だったのか
 どうしたら解決したのか
を書いてください。
それが公開の意味ではないでしょうか。
「わかりました。解決しました。」だけでは自己本位過ぎないでしょうか。
返信する
32.768KHz+74HCU04 OSC (kawana)
2012-04-17 09:53:26
何度も製作し、質問をして顰蹙をかっていた事
思い出すが、電源ON直後の安定度に問題が
有る事が解った。
32.768KHz--74HCU04--74LS393--74LS393--LED
配線は、長いし、C=22Pで大きい、Xtalの固定
ア-ス無しなので作りかえる事にした。

FREQUENCY COUNTERで計ると+10KHz位を表示している事も有る、
(FREQUENCY COUNTERも電源ON直後、1年も前に校正しただけ)

発振回路
http://www.tamadevice.co.jp/pdf/32.768KHz-osc-circuit(revA).pdf
返信する
16bitLED表示器のメドが立った (kawana)
2012-04-17 09:14:17
Warning外しにおかげさまで成功したので、
Codingしdebugしている。
74HC595を2個使用した。Latchの組み込みを忘れていたのでCodeを追加した。
どんなERRORが出るか?これの解決が醍醐味かも知れない。
返信する
Unknown (gcc)さん ありがとう (kawana)
2012-04-16 10:03:25
解りました。
返信する
Unknown (gcc)
2012-04-16 09:21:32
warning: control reaches end of non-void functionでネット検索しましょう。
返信する

コメントを投稿