電子工作日記、その他

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

STM8s-Discovery

2012-02-10 14:46:19 | 日記
AVR LCD Program をTM8S-DISCOVERY用に変更し動作確認したが、
PORT_Bの連続使用、PORT_BがADCにも割り振られていたので、

if( (ch & b0)==b0 ) {PADR |= _BV(3);} else {PADR &= ~_BV(3);}
でBit0--->Bit3に変更で対処した。
+-------+
0.9sec Loop-->1秒入力で、時計表示 23:59:59表示をル-プで処理していたのを
Timer処理に変更する。

Timerは、4本、
16-bit advanced control timer(TM1)
16-bit general purpose timers(TM2, TM3)
8-bit basic timer(TM4)

これを使用して0.9sec Loopの使用を止める。

最新の画像もっと見る

10 コメント

コメント日が  古い順  |   新しい順
LCDDispで (kawana)
2012-02-12 15:58:46
Bit  76543210
PE  76 
PA   654
PD     765を使用してPortBを空ける。

LEDbuf = 0x88;//0x44,0x22,0x11

while(1){
if( (LEDbuf & b7)==b7 ){PEDR |= _BV(7);}else{PEDR &=~_BV(7);}
if( (LEDbuf & b6)==b6 ){PEDR |= _BV(6);}else{PEDR &=~_BV(6);}
if( (LEDbuf & b5)==b5 ){PADR |= _BV(6);}else{PADR &=~_BV(6);}
if( (LEDbuf & b4)==b4 ){PADR |= _BV(5);}else{PADR &=~_BV(5);}

if( (LEDbuf & b3)==b3 ){PADR |= _BV(4);}else{PADR &=~_BV(4);}
if( (LEDbuf & b2)==b2 ){PDDR |= _BV(7);}else{PDDR &=~_BV(7);}
if( (LEDbuf & b1)==b1 ){PDDR |= _BV(6);}else{PDDR &=~_BV(6);}
if( (LEDbuf & b0)==b0 ){PDDR |= _BV(5);}else{PDDR &=~_BV(5);}
wait_ms(100); //100ms
返信する
ADCtestがうまく動作しない? (kawana)
2012-02-12 20:30:42
EXSAMPLE Program ADC.stwのCompileはOKに成っ
たが、うまく動作してくれない。
ADCを動作させるためには

Q1.PB7-0は、IO Portでもある、
ADCとして使用の場合はPortBを入力とする必要

Q2.option byteを変更する必要は
返信する
図形を描いてミス防止 (kawana)
2012-02-13 10:41:11
LED表示をPE76 PC76 PA6543で8bit表示を考えた

bit7  6  5  4 | 3  2  1  0
//__________________|___________________
|PE7| PE6| PC7| PC6 |PA6| PA5| PA4| PA3|
//------------------|-------------------

途中で定義の取り違えでDebugに少し苦労

PA5をsetする時
PADR |= _BV(2);としてしまう。_BV(5);// ○
#define b5 0x20と定義して  _BV(b5)と記述
してしまう。

初歩的ミス、間違え易い事に気が着くこのごろ
返信する
#define d7 0x80 (kawana)
2012-02-13 12:17:01
#define b7  7
#define d7  0x80

if((LEDbuf & d7)==d7){PEDR |= _BV(b7);}else
 {PEDR &= ~_BV(b7);}


返信する
ツール (ノンノ)
2012-02-13 14:58:44
目が薄いので誤字脱字はご勘弁を・・
STM8ディスカバリーは他のデバイス秋月に2種類
32ピンSDIP STM8S105K4B6 はシュリンク型でかえって実装しにくく、LQFP STM8S105K4T3C にすれば ET-PCB-TQFP32 ピッチ変換基板が使えます。
 
始めはともかく変更無しで「STM8S105C6」のままですと
ADCはオプションビットなどで、切り換えるようです。
調べて、電子ネコノコにUPしてみます。
返信する
分割修正とDebug (kawana)
2012-02-14 12:16:15
LCDtestBLから、LCDtestMPacに変更する場合
一気に変更するのでは無く

1.DataBusを
  PB3,2,1,0からPA6,5,4,3に変更

2.E,RSを
  PB5,4からPE7,6
の様に、変更を分けて修正してゆく
こうするとDebugし易かった。
返信する
for(N=0; N< 60000; N++){ };//N=uint (kawana)
2012-02-15 15:50:05
unsigned int N;

unsigned char LED=0;
unsigned char n;

//***** main *****
void main(void)
//****************
{
PBDDR = 0b11111111; //PortB Directin Output

PEDDR = 0b11000000;
PCDDR = 0b11000000;
PADDR = 0b01111000;

LED = 1;//char
n = 0;//char
//------------------------------
while(1)
 {
 LED = 1 << n;

 LEDbuf = LED;//

 LEDb_LED();//Write LED

 for(N=0; N< 60000; N++){ };//N=uint
 if (++n >7 ){n=0;}
 }
}
*****
unsigned int N;
Nは、unsigned intでなくてはいけないのですね

返信する
ADC,Timerの理解が今一 (kawana)
2012-02-16 14:55:37
ADC,Timerの理解が今一なので、寄り道で
LED 12個で時計表示をする事を考えた。
表示は、
1.正時の時は、12個の該当LEDを100msで
  2回点滅後、連続点灯
2.分表示は、5分きざみで、該当LEDを1000ms
  周期で点滅する。
(0~5分:LED_1、5~10分は、LED_2、10~15分は、LED_3を点滅、. . . . . . . . .
ユニバ-サル基板にLEDを30度感覚で綺麗に取り付ける事は、12,3,6,9時以外は、出来ないのでPinバイスで穴あけをした。
した。
返信する
5分毎の判別 (kawana)
2012-02-16 17:56:01
5分のTimer割り込みで、処理出来れば簡単なのだが、まだ理解出来ていないので、5分判定の
Flowを書いてみた。
Basicの多分岐処理をCで書く事は出来ないのか?
if(jn){1,2,3,4,5,6,7,8,9,10,11,12};
jn=1:jump 1;

やっぱり、Timer割り込みの理解が必要だ。RaisonanceCのSampleProgramを動作させ
理解してゆくのが、手っ取り早い気がする。
返信する
LED12個回転してる様に点灯 (kawana)
2012-02-17 09:06:48
LED12個の回転の様な点灯成功。

動くはずのProgramが動かない、よく有ることですね。

PEDR &= ~_BV(6 ;//
)が無いと想像外のMessageが出る?
prototyoe error,etc
返信する

コメントを投稿