So-net無料ブログ作成
検索選択

中間報告 [MPU]

stm8s.h を足した場合のエラー内容です。

WS001155.JPG

アーカイバによるホルダの形成。

以前より開けないのがあったりと、何種類かのアーカイバを入れていますが、

操作の仕方でどれかが働き余り意識していませんでした、

WS001145.JPG

20120122_1\xprod01-TEMPERATURE-LOGGER-STM8S105K4B6をダブルクリックする場合は

Lhaz が働き、

20120122\xprod01-TEMPERATURE-LOGGER-STM8S105K4B6を右で解凍とすると

Lhapuls が働いて フォルダが 1段深くなってしまいました。

それと、xprod01.stwをダブルクリックするとオープンオフィスが開いてしまったので、

関連付けを 「ST Visual Develop」にし直しまして、*両方とも開くことが出来同じ結果になりました。*

*** ERROR C155 IN LINE 3 OF usrlib-uart.c : cannot open 'stm8s.h'


*** ERROR C014 IN LINE 8 OF usrlib-uart.c : Undefined 'UART2'

*** ERROR C014 IN LINE 20 OF usrlib-uart.c : Undefined 'FIELD_NUM'

*** ERROR C014 IN LINE 29 OF usrlib-uart.c : Undefined 'FIELD_NUM'

*** ERROR C014 IN LINE 46 OF usrlib-uart.c : Undefined 'FIELD_NUM'

*** ERROR C014 IN LINE 51 OF usrlib-uart.c : Undefined 'FIELD_NUM'

*** ERROR C014 IN LINE 58 OF usrlib-uart.c : Undefined 'FIELD_NUM'

*** ERROR C014 IN LINE 67 OF usrlib-uart.c : Undefined 'FIELD_CHAR'

*** ERROR C014 IN LINE 72 OF usrlib-uart.c : Undefined 'FIELD_NUM'

*** ERROR C014 IN LINE 82 OF usrlib-uart.c : Undefined 'FIELD_NUM'

*** ERROR C162 IN LINE 83 OF usrlib-uart.c : Syntax error near 'UART_STR_EXIST'

*** ERROR C014 IN LINE 88 OF usrlib-uart.c : Undefined 'UART2_IT_RXNE'

*** ERROR C014 IN LINE 106 OF usrlib-uart.c : Undefined 'FIELD_NUM'

RCSTM8 COMPILATION COMPLETE. 5 WARNINGS, 13 ERRORS

 The command: "rcstm8 usrlib-uart.c OBJECT(Debug\usrlib-uart.o) PIN("D:\Program Files\Raisonance\Ride\inc\STM8") PIN("D:\Program Files\Raisonance\Ride\inc\ST7") PIN("D:\Program Files\Raisonance\Ride\inc") PIN(C:\_stm8\users\kj\Work\xprod01-TEMPERATURE-LOGGER-STM8S105K4B6\STM8S_StdPeriph_Lib_V2.0.0\Libraries\STM8S_StdPeriph_Driver\inc) PIN(C:\_stm8\users\kj\Work\xprod01-TEMPERATURE-LOGGER-STM8S105K4B6\xprod01-TEMPERATURE-LOGGER)  WRV(0) STM8(SMALL) DEBUG DGC(data) AUTO  OT(0) PR(Debug\usrlib-uart.lst) CD CO SB LAOB" has failed, the returned value is: 2
exit code=2.

xprod01.elf - 14 error(s), 5 warning(s)

「stm8s.h」 が見つからないらしいので プロジェクトホルダに加えますと、

3エラーになりますが

その時にない「*** ERROR C155 IN LINE 2576 OF stm8s.h : cannot open 'stm8s_conf.h'」

STVD\STM8S_StdPeriph_Lib_V2.0.0\Project\Template
 は見つからなかったのですが、ファイル中を検索すると 5k、6k、8K
 のバージョンがあり 6k以外は動作しました)

を加えますと今度は沢山のエラーになりました。

設定の確認をしました。

WS001147.JPG

WS001148.JPG

WS001149.JPG

下記のように、ファイルを足して行きますと、エラーが出無くなりました 。

しかし、.lst と.o  が沢山付いてきました。

これを抑制できれば元のでもエラーにならないはずなんですが、何処にカギがあるのか判りません。

WS001150.JPG

WS001151.JPG

.hex は出来ていますので、基板は取りあえずこれでやってみます。

sIMG_0323.jpg

シュリンクピッチなので斜め千鳥にして やると何とか付けられました。

基板にするときは「STM8S105K4T3C」の方が使いやすいかも知れません。

それでは宜しくお願いします。

 

 


コメント(0) 

STM8S105K4B6 を使って 定電流回路を作りたいと思います [MPU]

まずは STM8S105K4B6 について調べた事柄。

//STM8S105K4B6

//Pin count                                   32
//Maximum number of GPIOs                     25
//Ext. Interrupt                              23
//Timer CAPCOM channels                       8
//Timer complementary outputs                 3  
//A/D Converter channels                      7
//High sink I/Os                              12
//Medium density Flash Program memory (bytes) 16K
//Data EEPROM (bytes)                         1024 
//RAM (bytes)                                 2K

//4.13アナログ - ディジタルコンバータ(ADC1)
//STM8S105xx製品は、10ビット逐次比較型A / Dコンバータ(ADC1)が含まれている
//?入力電圧範囲:
//VDDA?変換時間0?:
//14クロックサイクル?シングルと連続してバッファリングされた連続変換モード?
//バッファサイズ(NX10ビット)ここで、n=数最大10多重の入力チャネルと、
//以下の主要機能を持つチャネルのシーケンスプログラム可能な上限と下限のしきい値?
//アナログウォッチドッグ機能?アナログウォッチドッグ割り込み?
//外部トリガ入力?変換のTIM1 TRGOからトリガーが?
//エンド(EOC)割り込みのシングルと連続変換用の入力チャンネルは、?
//スキャンモード
//注:追加のAIN12のアナログ入力はADCスキャンモードまたはアナログと選択されていません
//ウォッチドッグ。 AIN12から変換された値は、ADC_DRH/ ADC_DRLに格納されています
//登録されます。
//                                      STM8S105K4B6
//                                      -----uu------                                    
//             ADC_ETR/TIM2_CH2/PD3(HS) 1  #    #  32 PD2(HS)/TIM3_CH1[TIM2_CH3]
//               [BEEP]TIM2_CH1/PD4(HS) 2  #       31 PD1(HS)/SWIM
//                         UART2_TX/PD5 3   R   #  30 PD0(HS)/TIM3_CH2[TIM1_BKIN][CLK_CCO] 0x00 500F_13
//                         UART2_RX/PD6 4   R  S   29 PC7(HS)/SPI_MISO
//                    (TIM1_CH4)TLI/PD7 5  #   S   28 PC6(HS)/SPI_MOSI
//                                 NRST 6      I * 27 PB4/AIN4[I2C_SCL]
//                0x00 5000_4 OSCIN/PA1 7       #* 26 PB3/AIN3[TIM1_ETR]
//                           OSCOUT/PA2 8       #* 25 PB2/AIN2[TIM1_CH3N]
//                                  VSS 9       #* 24 PB1/AIN1[TIM1_CH2N]
//                          0.47uF VCAP 10      #* 23 PB0/AIN0[TIM1_CH1N] 0x00 5005_9
//                                  VDD 11     S   22 PE5/SPI_NSS 0x00 5014_18
//                                VDDIO 12      #  21 PC1(HS)/TIM1_CH1/UART2_CK 0x00 500A_E
//               0x00 5019_1C AIN12/PF4 13 *    #  20 PC2(HS)/TIM1_CH2
//                                 VDDA 14      #  19 PC3(HS)/TIM1_CH3
//                                 VSSA 15      #  18 PC4(HS)/TIM1_CH4
//                    [I2C_SDA]AIN5/PB5 16 *I  S   17 PC5(HS)/SPI_SCK
//                                      -------------                                   
// Flash program memory 16K 0x00 8000 0x00 BFFF
// RAM 2K 0x00 0000 0x00 07FF
// Data EEPROM 1024 0x00 4000 0x00 43FF
// 0x00 5000 Port A PA_ODR 00000XX0
// 0x00 5001 PA_IDR        00000XX0
// 0x00 5002 PA_DDR        00000XX0
// 0x00 5003 PA_CR1        00000XX0
// 0x00 5004 PA_CR2        00000XX0
// 0x00 5005 Port B PB_ODR 00XXXXXX
// 0x00 5006 PB_IDR        00XXXXXX
// 0x00 5007 PB_DDR        00XXXXXX
// 0x00 5008 PB_CR1        00XXXXXX
// 0x00 5009 PB_CR2        00XXXXXX
// 0x00 500A Port C PC_ODR XXXXXXX0
// 0x00 500B PC_IDR        XXXXXXX0
// 0x00 500C PC_DDR        XXXXXXX0
// 0x00 500D PC_CR1        XXXXXXX0
// 0x00 500E PC_CR2        XXXXXXX0
// 0x00 500F Port D PD_ODR XXXXXXXX
// 0x00 5010 PD_IDR        XXXXXXXX
// 0x00 5011 PD_DDR        XXXXXXXX
// 0x00 5012 PD_CR1        XXXXXXXX
// 0x00 5013 PD_CR2        XXXXXXXX
// 0x00 5014 Port E PE_ODR 00X00000
// 0x00 5015 PE_IDR        00X00000
// 0x00 5016 PE_DDR        00X00000
// 0x00 5017 PE_CR1        00X00000
// 0x00 5018 PE_CR2        00X00000
// 0x00 5019 Port F PF_ODR 000X0000
// 0x00 501A PF_IDR        000X0000
// 0x00 501B PF_DDR        000X0000
// 0x00 501C PF_CR1        000X0000

// 0x00 5050 to Reserved area (10 bytes)
// 0x00 5059
//
// 0x00 505A Flash FLASH_CR1
// 0x00 505B FLASH_CR2
// 0x00 505C FLASH_NCR2
// 0x00 505D FLASH _FPR
// 0x00 505E FLASH _NFPR
// 0x00 505F FLASH _IAPSR
//
// 0x00 5060 to Reserved area (2 bytes)
// 0x00 5061
//
// 0x00 5062 Flash FLASH _PUKR
//
// 0x00 5063 Reserved area (1 byte)
//
// 0x00 5064 Flash FLASH _DUKR
//
// 0x00 5065 to Reserved area (59 bytes)
// 0x00 509F
//
// 0x00 50A0 ITC EXTI_CR1
// 0x00 50A1 EXTI_CR2
//
// 0x00 50A2 to Reserved area (17 bytes)
// 0x00 50B2
//
// 0x00 50B3 RST RST_SR
//
// 0x00 50B4 to Reserved area (12 bytes)
// 0x00 50BF

// 0x00 50C0 CLK CLK_ICKR
// 0x00 50C1 CLK_ECKR
//
// 0x00 50C2 Reserved area (1 byte)
//
// 0x00 50C3 CLK CLK_CMSR
// 0x00 50C4 CLK_SWR
// 0x00 50C5 CLK_SWCR
// 0x00 50C6 CLK_CKDIVR
// 0x00 50C7 CLK_PCKENR1
// 0x00 50C8 CLK_CSSR
// 0x00 50C9 CLK_CCOR
// 0x00 50CA CLK_PCKENR2
// 0x00 50CB CLK_CANCCR
// 0x00 50CC CLK_HSITRIMR
// 0x00 50CD CLK_SWIMCCR
//
// 0x00 50CE to Reserved area (3 bytes)
// 0x00 50D0
//
// 0x00 50D1 WWDG WWDG_CR
// 0x00 50D2 WWDG_WR
//
// 0x00 50D3 to Reserved area (13 bytes)
// 0x00 50DF
//
// 0x00 50E0 IWDG IWDG_KR
// 0x00 50E1 IWDG_PR
// 0x00 50E2 IWDG_RLR
//
// 0x00 50E3 to Reserved area (13 bytes)
// 0x00 50EF

// 0x00 50F0 AWU AWU_CSR1
// 0x00 50F1 AWU_APR
// 0x00 50F2 AWU_TBR
// 0x00 50F3 BEEP BEEP_CSR
//
// 0x00 50F4 to Reserved area (12 bytes)
// 0x00 50FF
//
// 0x00 5200 SPI SPI_CR1
// 0x00 5201 SPI_CR2
// 0x00 5202 SPI_ICR
// 0x00 5203 SPI_SR

// 0x00 5204 SPI_DR
// 0x00 5205 SPI_CRCPR
// 0x00 5206 SPI_RXCRCR
// 0x00 5207 SPI_TXCRCR
//
// 0x00 5208 to Reserved area (8 bytes)
// 0x00 520F
//
// 0x00 5210 I2C I2C_CR1
// 0x00 5211 I2C_CR2
// 0x00 5212 I2C_FREQR
// 0x00 5213 I2C_OARL
// 0x00 5214 I2C_OARH
// 0x00 5215 Reserved
// 0x00 5216 I2C_DR
// 0x00 5217 I2C_SR1
// 0x00 5218 I2C_SR2
// 0x00 5219 I2C_SR3
// 0x00 521A I2C_ITR
// 0x00 521B I2C_CCRL
// 0x00 521C I2C_CCRH
// 0x00 521D I2C_TRISER
// 0x00 521E I2C_PECR
//
// 0x00 521F to Reserved area (17 bytes)
// 0x00 522F
//
// 0x00 5230 to Reserved area (6 bytes)
// 0x00 523F
//
// 0x00 5240 UART2 UART2_SR
// 0x00 5241 UART2_DR
// 0x00 5242 UART2_BRR1
// 0x00 5243 UART2_BRR2
// 0x00 5244 UART2_CR1
// 0x00 5245 UART2_CR2
// 0x00 5246 UART2_CR3
// 0x00 5247 UART2_CR4
// 0x00 5248 UART2_CR5
// 0x00 5249 UART2_CR6
// 0x00 524A UART2_GTR
// 0x00 524B UART2_PSCR
//
// 0x00 524C to Reserved area (4 bytes)
// 0x00 524F
//
// 0x00 5250 TIM1 TIM1_CR1
// 0x00 5251 TIM1_CR2
// 0x00 5252 TIM1_SMCR
// 0x00 5253 TIM1_ETR
// 0x00 5254 TIM1_IER
// 0x00 5255 TIM1_SR1
// 0x00 5256 TIM1_SR2
// 0x00 5257 TIM1_EGR
// 0x00 5258 TIM1_CCMR1
// 0x00 5259 TIM1_CCMR2
// 0x00 525A TIM1_CCMR3
// 0x00 525B TIM1_CCMR4
// 0x00 525C TIM1_CCER1
// 0x00 525D TIM1_CCER2
// 0x00 525E TIM1_CNTRH
// 0x00 525F TIM1_CNTRL
// 0x00 5260 TIM1_PSCRH
// 0x00 5261 TIM1_PSCRL
// 0x00 5262 TIM1_ARRH
// 0x00 5263 TIM1_ARRL
// 0x00 5264 TIM1_RCR
// 0x00 5265 TIM1_CCR1H
// 0x00 5266 TIM1_CCR1L
// 0x00 5267 TIM1_CCR2H
// 0x00 5268 TIM1_CCR2L
// 0x00 5269 TIM1_CCR3H
// 0x00 526A TIM1_CCR3L
// 0x00 526B TIM1_CCR4H
// 0x00 526C TIM1_CCR4L
// 0x00 526D TIM1_BKR
// 0x00 526E TIM1_DTR
// 0x00 526F TIM1_OISR
//
// 0x00 5270 to Reserved area (147 bytes)
// 0x00 52FF
//
// 0x00 5300 TIM2 TIM2_CR1
// 0x00 5301 TIM2_IER
// 0x00 5302 TIM2_SR1
// 0x00 5303 TIM2_SR2
// 0x00 5304 TIM2_EGR
// 0x00 5305 TIM2_CCMR1
// 0x00 5306 TIM2_CCMR2
// 0x00 5307 TIM2_CCMR3
// 0x00 5308 TIM2_CCER1
// 0x00 5309 TIM2_CCER2
// 0x00 530A TIM2_CNTRH
// 0x00 530B TIM2_CNTRL
// 0x00 530C TIM2_PSCR
// 0x00 530D TIM2_ARRH
// 0x00 530E TIM2_ARRL
// 0x00 530F TIM2_CCR1H
// 0x00 5310 TIM2_CCR1L
// 0x00 5311 TIM2_CCR2H
// 0x00 5312 TIM2_CCR2L
// 0x00 5313 TIM2_CCR3H
// 0x00 5314 TIM2_CCR3L
//
// 0x00 5315 to Reserved area (11 bytes)
// 0x00 531F
//
// 0x00 5320 TIM3 TIM3_CR1
// 0x00 5321 TIM3_IER
// 0x00 5322 TIM3_SR1
// 0x00 5323 TIM3_SR2
// 0x00 5324 TIM3_EGR
// 0x00 5325 TIM3_CCMR1
// 0x00 5326 TIM3_CCMR2
// 0x00 5327 TIM3_CCER1
// 0x00 5328 TIM3_CNTRH
// 0x00 5329 TIM3_CNTRL
// 0x00 532A TIM3_PSCR
// 0x00 532B TIM3_ARRH
// 0x00 532C TIM3_ARRL
// 0x00 532D TIM3_CCR1H
// 0x00 532E TIM3_CCR1L
// 0x00 532F TIM3_CCR2H
// 0x00 5330 TIM3_CCR2L
// 0x00 5331 to Reserved area (15 bytes)
// 0x00 533F
// 0x00 5340 TIM4 TIM4_CR1
// 0x00 5341 TIM4_IER
// 0x00 5342 TIM4_SR
// 0x00 5343 TIM4_EGR
// 0x00 5344 TIM4_CNTR
// 0x00 5345 TIM4_PSCR
// 0x00 5346 TIM4_ARR
// 0x00 5347 to Reserved area (153 bytes)
// 0x00 53DF
// 0x00 53E0 to ADC1 ADC _DBxR
// 0x00 53F3
// 0x00 53F4 to Reserved area (12 bytes)
// 0x00 53FF
// 0x00 5400 ADC1 ADC _CSR
// 0x00 5401 ADC_CR1
// 0x00 5402 ADC_CR2
// 0x00 5403 ADC_CR3
// 0x00 5404 ADC_DRH
// 0x00 5405 ADC_DRL
// 0x00 5406 ADC_TDRH
// 0x00 5407 ADC_TDRL
// 0x00 5408 ADC_HTRH
// 0x00 5409 ADC_HTRL
// 0x00 540A ADC_LTRH
// 0x00 540B ADC_LTRL
// 0x00 540C ADC_AWSRH
// 0x00 540D ADC_AWSRL
// 0x00 540E ADC _AWCRH
// 0x00 540F ADC_AWCRL
// 0x00 5410 to Reserved area (1008 bytes)
// 0x00 57FF
// 0x00 7F00 CPU(1) A
// 0x00 7F01 PCE
// 0x00 7F02 PCH
// 0x00 7F03 PCL
// 0x00 7F04 XH
// 0x00 7F05 XL
// 0x00 7F06 YH
// 0x00 7F07 YL
// 0x00 7F08 SPH
// 0x00 7F09 SPL
// 0x00 7F0A CCR
// 0x00 7F0B to Reserved area (85 bytes)
// 0x00 7F5F
// 0x00 7F60 CPU CFG_GCR
// 0x00 7F70 ITC ITC_SPR1
// 0x00 7F71 ITC_SPR2
// 0x00 7F72 ITC_SPR3
// 0x00 7F73 ITC_SPR4
// 0x00 7F74 ITC_SPR5
// 0x00 7F75 ITC_SPR6
// 0x00 7F76 ITC_SPR7
// 0x00 7F77 ITC_SPR8
// 0x00 7F78 to Reserved area (2 bytes)
// 0x00 7F79
// 0x00 7F80 SWIM SWIM_CSR
// 0x00 7F81 to Reserved area (15 bytes)
// 0x00 7F8F
// 0x00 7F90 DM DM_BK1RE
// 0x00 7F91 DM_BK1RH
// 0x00 7F92 DM_BK1RL
// 0x00 7F93 DM_BK2RE
// 0x00 7F94 DM_BK2RH
// 0x00 7F95 DM_BK2RL
// 0x00 7F96 DM_CR1
// 0x00 7F97 DM_CR2
// 0x00 7F98 DM_CSR1
// 0x00 7F99 DM_CSR2
// 0x00 7F9A DM_ENFCTR
// 0x00 7F9B to Reserved area (5 bytes)
// 0x00 7F9F
//
//   RESET Reset Yes Yes 0x00 8000
//   TRAP Software interrupt - - 0x00 8004
// 0 TLI External top level interrupt - - 0x00 8008
// 1 AWU Auto wake up from halt - Yes 0x00 800C
// 2 CLK Clock controller - - 0x00 8010
// 3 EXTI0 Port A external interrupts Yes(1) Yes(1) 0x00 8014
// 4 EXTI1 Port B external interrupts Yes Yes 0x00 8018
// 5 EXTI2 Port C external interrupts Yes Yes 0x00 801C
// 6 EXTI3 Port D external interrupts Yes Yes 0x00 8020
// 7 EXTI4 Port E external interrupts Yes Yes 0x00 8024
// 8 0x00 8028
// 9 Reserved - - 0x00 802C
// 10 SPI End of transfer Yes Yes 0x00 8030
//    TIM1 update/ overflow/ - - 0x00 8034
//    underflow/ trigger/ break
// 11 TIM1
// 12 TIM1 TIM1 capture/ compare - - 0x00 8038
// 13 TIM TIM update/ overflow - - 0x00 803C
// 14 TIM TIM capture/ compare - - 0x00 8040
// 15 TIM3 Update/ overflow - - 0x00 8044
// 16 TIM3 Capture/ compare - - 0x00 8048
// 17 Reserved - - 0x00 804C
// 18 Reserved - - 0x00 8050
// 19 I2C I2C interrupt Yes Yes 0x00 8054
// 20 UART2 Tx complete - - 0x00 8058
//    Receive register DATA - - 0x00 805C
//    FULL
// 21 UART2
//    ADC1 end of conversion/ - - 0x00 8060
//    analog watchdog interrupt
// 22 ADC1
// 23 TIM TIM update/ overflow - - 0x00 8064
// 24 Flash EOP/ WR_PG_DIS - - 0x00 8068
//    0x00 806C
//    to 0x00
//    807C
// Reserved
//
// Read-out OPT0 ROP [7:0] 00h
// protection
// (ROP)
//
// 0x4800
//        User boot OPT1 UBC [7:0] 00h
//        code(UBC)
// 0x4801
// 0x4802 NOPT1 NUBC [7:0] FFh
//        Alternate OPT2 AFR7 AFR6 AFR5 AFR4 AFR3 AFR2 AFR1 AFR0 00h
//        function
// 0x4803
// 0x4804 NOPT2 NAFR7 NAFR6 NAFR5 NAFR4 NAFR3 NAFR2 NAFR1 NAFR0 FFh
//        remapping
//        (AFR)
//        WWDG 00h
//        _HALT
//        WWDG
//        _HW
//         IWDG
//        _HW
//        HSI LSI_ EN
//        TRIM
//        Miscell. OPT3 Reserved
//        option
// 0x4805 h
//        NWW FFh
//        G_HALT
//        NWWDG
//        _HW
//        NIWDG
//        _HW
//        NLSI_
//        EN
//        NHSI
//        TRIM
// 0x4806 NOPT3 Reserved
//        CKAWU PRS C1 PRS C0 00h
//        SEL
//        Clock OPT4 Reserved EXT CLK
//        option
// 0x4807
//        NPR FFh
//        SC0
//        NCKA NPRSC1
//        WUSEL
//        NEXT
//        CLK
// 0x4808 NOPT4 Reserved
//        HSE clock OPT5 HSECNT [7:0] 00h
//        startup
// 0x4809
// 0x480A NOPT5 NHSECNT [7:0] FFh
// 0x480B Reserved OPT6 Reserved 00h
//
// 0x480C NOPT6 Reserved FFh
// 0x480D Reserved OPT7 Reserved 00h
// 0x480E NOPT7 Reserved FFh
// 0x487E Bootloader OPTBL BL[7:0] 00h
// 0x487F NOPTBL NBL[7:0] FFh
//        X co-ordinate U_ID[7:0]
//        on the wafer
// 0x48CD
// 0x48CE U_ID[15:8]
//        Y co-ordinate U_ID[23:16]
//        on the wafer
// 0x48CF
// 0x48D0 U_ID[31:24]
// 0x48D1 Wafer number U_ID[39:32]
//        U_ID[47:40]
//        Lot number
// 0x48D2
// 0x48D3 U_ID[55:48]
// 0x48D4 U_ID[63:56]
// 0x48D5 U_ID[71:64]
// 0x48D6 U_ID[79:72]
// 0x48D7 U_ID[87:80]
// 0x48D8 U_ID[95:88]
//

// 内部発振 選択 16MHz 1/3=5.33MHz
// 10bitの分解能
// 16 MHz high-speed internal RC oscillator (HSI)
// 1回変換と連続変換 スキャンを完了するとオーバーフラグが立ちます。
データを読み込んだ後A/D ON-BITを立てると変換が始まります。
ADC1とADC2 が有ります
Left alignment of dataを使い上8bitはADC_DRHに入ります。

次ぎのように設定すると最初の3chを変換して終わります。
ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_2, ADC1_PRESSEL_FCPU_D2, ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_ALL, DISABLE);
ADC(0-9)=   0  112  225    0    0    0    0    0    0    0
mV(0-9) =   0  360  725    0    0    0    0    0    0    0
LCDの仕様とSTM8Sのポートを見て考えて、
STM8Sのポートは、なるべく他の機能へピンアサインされてないピンをLCD用途に使います。

WS001143.JPG
 


コメント(0) 

最適なMPUの選択 [MPU]

MPUは何々党ではありませんので、一番向いたのを選択するようにしています。

しかし、それぞれのメーカでも品種が多く、実際の機能を見つけるのは大変です。

メーカにより上部名の矢田買いやすい入手性などが違い、

国産は一般的に高め、海外は入手できる品種が限られたりします。

今回探しているのは、2chのアナログコンパレータがあること、

それに続く6uSのタイマーが使えること、

内部クロックモジュールで高速動作が出来ること、

出力フォームが必要であり、それに対応できるROMテーブル を作れること、

大分入力はモード決定の低速検出と、絶対逃せない2chの高速入力が必要で、

それをアップダウンカウンタでROMテーブルから読み出し、値はアナログ出力して

コンパレータと比較するか、

ADコンバータとして読み込みROMテーブル値と比較して、

4chのディジタル出力を操作します。

その後はハードが受け持ちゲートドライバがMOSFETを動作させ、

回路電流を検出抵抗で何らかの形に変えMPUに取り込みます。

検出抵抗にはOFFモード中には逆方向電流が流れこれを検出しないようにしなければ成りません。

あるいは負数として検出しデータに加える方法もあります。

 

ああ、この様な機能のMPUはなかなか見つかりません。

一度頭の中から追い出し考え直す必要があるようです。

さて

清水愛典さんの「PIC16F716の初期設定

www.geocities.jp/ja3dew/imgPICmicon/6FCounter716.ASM 

を見たんですが、PIC16F716 の メリットを調べてみなくっちゃー。

 

PICI6FのADC付きについて、内部発振を含めて選定してみました。

行が乱れて読みにくいですが、PIC16F916 当たりが小さくて8MHz、5cHが使えて良さそうです。

Product Family  Status  Volume Pricing  Memory Type Program Memory KBytes   Program Memory KWords   Self-write  EEPROM Data Memory  RAM I/O Pins    Pin count   Max. CPU Speed MHz  Internal Oscillator # of A/D Ch.    Timers  Temperature Range   Operation Voltage Range
                                COST    PMT     PMB PMW S/W ERM RAM    I/O PIN CPU  HF      LF      AD
PIC16F1527      In Production   $1.54   Flash   28  16  Yes 0   1536    55  64  20  16 MHz, 32 kHz  30  6 - 8-bit 3 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1526      In Production   $1.47   Flash   14  8   Yes 0   768     55  64  20  16 MHz, 32 kHz  30  6 - 8-bit 3 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1517      In Production   $1.32   Flash   14  8   Yes 0   512     36  40  20  16 MHz, 32 kHz  28  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1519      In Production   $1.37   Flash   28  16  Yes 0   1024    36  40  20  16 MHz, 32 kHz  28  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1946      In Production   $1.75   Flash   14  8   Yes 256 512     53  64  32  32 MHz, 32 kHz  17  4 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1947      In Production   $1.82   Flash   28  16  Yes 256 1024    53  64  32  32 MHz, 32 kHz  17  4 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1516      In Production   $0.95   Flash   14  8   Yes 0   512     25  28  20  16 MHz, 32 kHz  17  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1518      In Production   $1.01   Flash   28  16  Yes 0   1024    25  28  20  16 MHz, 32 kHz  17  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1512      Future Product  Call for pricing
                                        Flash   3.5 2   Yes 0   128     25  28  20  16 MHz, 32 kHz  17  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1513      Future Product  Call for pricing
                                        Flash   7   4   Yes 0   256     25  28  20  16 MHz, 32 kHz  17  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F747       In Production   $3.61   Flash   7   4   No  0   368     36  40  20  8 MHz           14  2- 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F777       In Production   $4.00   Flash   14  8   No  0   368     36  40  20  8 MHz           14  2- 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F884       In Production   $1.63   Flash   7   4   Yes 256 256     36  40  20  8 MHz, 32 kHz   14  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F887       In Production   $1.78   Flash   14  8   Yes 256 368     36  40  20  8 MHz, 32 kHz   14  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F727       In Production   $1.53   Flash   14  8   No  0   368     36  40  20  16 MHz          14  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F724       In Production   $1.38   Flash   7   4   No  0   192     36  40  20  16 MHz          14  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1934      In Production   $1.46   Flash   7   4   Yes 256 256     36  40  32  32 MHz, 32 kHz  14  4 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1937      In Production   $1.53   Flash   14  8   Yes 256 512     36  40  32  32 MHz, 32 kHz  14  4 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1939      In Production   $1.61   Flash   28  16  Yes 256 1024    36  40  32  32 MHz, 32 kHz  14  4 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F707       Samples Available?
                                $1.68   Flash   14  8   No  0   368     36  40  20  16 MHz          14  3 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16LF1904     In Production   $1.18   Flash   7   4   Yes 0   256     36  40  20  16 MHz, 32 kHz  14  1 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 3.6V
PIC16LF1907     In Production   $1.23   Flash   14  8   Yes 0   512     36  40  20  16 MHz, 32 kHz  14  1 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 3.6V
PIC16F1784      Future Product  Call for pricing
                                        Flash   7   4   Yes 256 512     36  40  32  32 MHz, 32 kHz  14  4 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1787      Future Product  Call for pricing
                                        Flash   14  8   Yes 256 1024    36  40  32  32 MHz, 32 kHz  14  4 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F785       In Production   $1.12   Flash   3.5 2   No  256 128     18  20  20  8 MHz, 32 kHz   12  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 15V
PIC16F677       In Production   $0.99   Flash   3.5 2   No  256 128     18  20  20  8 MHz, 32 kHz   12  1 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F685       In Production   $1.13   Flash   7   4   No  256 256     18  20  20  8 MHz, 32 kHz   12  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F687       In Production   $1.07   Flash   3.5 2   No  256 128     18  20  20  8 MHz, 32 kHz   12  1 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F689       In Production   $1.13   Flash   7   4   No  256 256     18  20  20  8 MHz, 32 kHz   12  1 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F690       In Production   $1.20   Flash   7   4   No  256 256     18  20  20  8 MHz, 32 kHz   12  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16HV785      In Production   Call for pricing
                                        Flash   3.5 2   No  256 128     18  20  20  8 MHz, 32 kHz   12  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 15V
PIC16F1827      In Production   $1.04   Flash   7   4   Yes 256 384     16  18  32  32 MHz, 32 kHz  12  4 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1826      In Production   $0.97   Flash   3.5 2   Yes 256 256     16  18  32  32 MHz, 32 kHz  12  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F721       In Production   $0.74   Flash   7   4   Yes 0   256     18  20  16  16 MHz          12  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F720       In Production   $0.71   Flash   3.5 2   Yes 0   128     18  20  16  16 MHz          12  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1828      In Production   $0.99   Flash   7   4   Yes 256 256     18  20  32  32 MHz, 32 kHz  12  4 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1829      In Production   $1.06   Flash   14  8   Yes 256 1024    18  20  32  32 MHz, 32 kHz  12  4 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1847      In Production   $1.09   Flash   14  8   Yes 256 1024    16  18  32  32 MHz, 32 kHz  12  4 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1507      In Production   $0.69   Flash   3.5 2   Yes 0   128     18  20  20  16 MHz, 32 kHz  12  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1508      Future Product  Call for pricing
                                          Flash   7   4   Yes 0   256     18  20  20  16 MHz, 32 kHz  12  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1509      Future Product  Call for pricing
                                        Flash   14  8   Yes 0   512     18  20  20  16 MHz, 32 kHz  12  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F737       In Production   $3.13   Flash   7   4   No  0   368     25  28  20  8 MHz           11  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F767       In Production   $3.64   Flash   14  8   No  0   368     25  28  20  8 MHz           11  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F883       In Production   $1.37   Flash   7   4   Yes 256 256     25  28  20  8 MHz, 32 kHz   11  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F886       In Production   $1.49   Flash   14  8   Yes 256 368     25  28  20  8 MHz, 32 kHz   11  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F882       In Production   $1.16   Flash   3.5 2   Yes 128 128     25  28  20  8 MHz, 32 kHz   11  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F726       In Production   $1.23   Flash   14  8   No  0   368     25  28  20  16 MHz          11  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F722       In Production Please consider device:
PIC16F722A                      $0.95   Flash   3.5 2   No  0   128     25  28  20  16 MHz          11  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F723       In Production Please consider device:
PIC16F723A                      $1.09   Flash   7   4   No  0   192     25  28  20  16 MHz          11  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1933      In Production   $1.23   Flash   7   4   Yes 256 256     25  28  32  32 MHz, 32 kHz  11  4 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1936      In Production   $1.30   Flash   14  8   Yes 256 512     25  28  32  32 MHz, 32 kHz  11  4 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1938      In Production   $1.37   Flash   28  16  Yes 256 1024    25  28  32  32 MHz, 32 kHz  11  4 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F722A      In Production   $0.78   Flash   3.5 2   No  0   128     25  28  20  16 MHz          11  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F723A      In Production   $0.85   Flash   7   14  No  0   192     25  28  20  16 MHz          11  2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16LF1902     In Production   $0.78   Flash   3.5 2   Yes 0   128     25  28  20  16 MHz, 32 kHz  11  1 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 3.6V
PIC16LF1903     In Production   $0.85   Flash   7   4   Yes 0   256     25  28  20  16 MHz, 32 kHz  11  1 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 3.6V
PIC16LF1906     In Production   $0.91   Flash   14  8   Yes 0   512     25  28  20  16 MHz, 32 kHz  11  1 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 3.6V
PIC16F1783      Future Product  Call for pricing
                                        Flash   7   4   Yes 256 512     25  28  32  32 MHz, 32 kHz  11  4 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1782      Future Product  Call for pricing
                                        Flash   3.5 2   Yes 256 256     25  28  32  32 MHz, 32 kHz  11  4 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1786      Future Product  Call for pricing
                                        Flash   14  8   Yes 256 1024    25  28  32  32 MHz, 32 kHz  11  4 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 3.6V
PIC16F676       In Production   $0.98   Flash   1.75    1   No  128     64  12  14  20  4 MHz       8   1 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F74        In Production   $3.61   Flash   7   4   No  0   192     33  40  20                  8   2 - 8-bit 1 - 16-bit    -40 to 125  2V - 5.5V
PIC16F77        In Production   $4.12   Flash   14  8   No  0   368     33  40  20                  8   2 - 8-bit 1 - 16-bit    -40 to 125  2V - 5.5V
PIC16F688       In Production   $1.04   Flash   7   4   No  256 256     12  14  20  8 MHz, 32 kHz   8   1 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F684       In Production   $0.98   Flash   3.5 2   No  256 128     12  14  20  8 MHz, 32 kHz   8   2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F914       In Production   $2.03   Flash   7   4   No  256 256     36  40  20  8 MHz, 32 kHz   8   2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F917       In Production   $2.17   Flash   14  8   No  256 352     36  40  20  8 MHz, 32 kHz   8   2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F946       In Production   $2.31   Flash   14  8   No  256 336     54  64  20  8 MHz, 32 kHz   8   2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F616       In Production   $0.69   Flash   3.5 2   No  0   128     12  14  20  4 MHz, 8 MHz    8   2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 150  2V - 15V
                In Production?
                Call for pricing
                                        Flash   3.5 2   No  0   128     12  14  20  4 MHz, 8 MHz    8   2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 15V
PIC16F1823      In Production   $0.78   Flash   3.5 2   Yes 256 128     12  14  32  32 MHz, 32 kHz  8   2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1824      In Production   $0.84   Flash   7   4   Yes 256 256     12  14  32  32 MHz, 32 kHz  8   4 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1825      In Production   $0.92   Flash   14  8   Yes 256 1024    12  14  32  32 MHz, 32 kHz  8   4 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F1503      In Production   $0.55   Flash   3.5 2   Yes 0   128     12  14  20  16 MHz, 32 kHz  8   2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  1.8V - 5.5V
PIC16F88        In Production   $2.20   Flash   7   4   Yes 256 368     16  18  20  8MHz            7   2 - 8-bit 1 - 16-bit    -40 to 125  2V - 5.5V
PIC16F72        In Production   $1.91   Flash   3.5 2   No  0   128     22  28  20                  5   2 - 8-bit 1 - 16-bit    -40 to 125  2V - 5.5V
PIC16F73        In Production   $2.97   Flash   7   4   No  0   192     22  28  20                  5   2 - 8-bit 1 - 16-bit    -40 to 125  2V - 5.5V
PIC16F76        In Production   $3.73   Flash   14  8   No  0   368     22  28  20                  5   2 - 8-bit 1 - 16-bit    -40 to 125  2V - 5.5V
PIC16F818       In Production   $1.56   Flash   1.75    1   Yes 128     128 16  18  20              5   2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F819       In Production   $1.78   Flash   3.5 2   Yes 256 256     16  18  20                  5   2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F913       In Production   $1.72   Flash   7   4   No  256 256     25  28  20  8 MHz, 32 kHz   5   2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F916       In Production   $1.93   Flash   14  8   No  256 352     25  28  20  8 MHz, 32 kHz   5   2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F716       In Production   $0.77   Flash   3.5 2   No  0   128     13  18  20                  4   2 - 8-bit 1 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F506       In Production   $0.52   Flash   1.5 1   No  0   67      12  14  20  4,8 MHz         3   1 - 8-bit 0 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
PIC16F526       In Production   $0.55   Flash   1.5 1   No  64  67      12  14  20  4,8 MHz         3   1 - 8-bit 0 - 16-bit  0 - 32-bit    -40 to 125  2V - 5.5V
 


コメント(1) 

PIC セグメント表示 [MPU]

液晶表示器 LCDモジュール(8×2)[SC802A-3.3V]

WS000961.JPG

Pin NO. Symbol LEVEL Function
1 VSS 0V GND
2 VDD 3.3V Supply Power for logic
3 V0 - VLCD voltage adjustment pin
4 RS H/L Data or Instruction select.
5 R/W H/L Read or Write
6 E H,H→L Read /Write enable signal.
7~10 DB0~DB3 H/L Data BUS for 8-bit bus mode
11~14 DB4~DB7 H/L Data BUS for 8-bit or 4bit bus mode
15 BLA +5V Supply Power for LED light
16 BLK 0V Supply Power for LED light

今度はこれを使ってみたいです。

;**********************************************************************
;   This file is a basic code template for object module code         *
;   generation on the PICmicro PIC16F886. This file contains the      *
;   basic code building blocks to build upon.  As a project minimum   *
;   the 16F886.lkr file will also be required for this file to        *
;   correctly build. The .lkr files are located in the MPLAB          *
;   directory.                                                        *
;                                                                     *
;   If interrupts are not used all code presented between the         *
;   code section "INT_VECTOR and code section "MAIN" can be removed.  *
;   In addition the variable assignments for 'w_temp' and             *
;   'status_temp' can be removed.                                     *
;                                                                     *
;   If interrupts are used, as in this template file, the 16F886.lkr  *
;   file will need to be modified as follows: Remove the lines        *
;     CODEPAGE   NAME=vectors  START=0x0      END=0x4      PROTECTED  *
;   and                                                               *
;     SECTION    NAME=STARTUP  ROM=vectors                            *
;   and change the start address of the page0 section from 0x5 to 0x0 *
;                                                                     *
;   Refer to the MPASM User's Guide for additional information on     *
;   features of the assembler and linker (Document DS33014).          *
;                                                                     *
;   Refer to the respective PICmicro data sheet for additional        *
;   information on the instruction set.                               *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Filename:         9_7_segment.asm                                *
;    Date:      2008,03,22                                            *
;    File Version:   v1.0                                             *
;                                                                     *
;    Author:                                                          *
;    Company:                                                         *
;                                                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Files required:                                                  *
;                                                                     *
;                                                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Notes:                                                           *
;                                                                     *
;                                                                     *
;                                                                     *
;                                                                     *
;**********************************************************************

;        LIST            P=PIC16F84A
;        INCLUDE         "P16F84A.INC"

    list        p=16f886    ; list directive to define processor
    #include    <p16f886.inc>    ; processor specific variable definitions
    
;    __CONFIG _EC_OSC & _WRT_OFF

; '__CONFIG' directive is used to embed configuration data within .asm file.
; The labels following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.

;**********************************************************************
;ANSEL 188h ANS4 ANS3 ANS2 ANS1 ANS0
;ANSELH 189h ANS13 ANS12 ANS11 ANS10 ANS9 ANS8
 ;
 ; 8-Digit 9-Pin Charlieplexed AC LED ISR Sample Code
 ;   (14-bit core instructions)
 ;
 ; Vars - BITPOS (float bit & digit position)
 ;        BUFPTR (buffer pointer)
 ;        DIGIT0 (start of 8 byte display data buffer)
 ;               (bit 7=dp, bit 6=G...bit 0=A)
 ;
BITPOS equ 30h;(float bit & digit position)
BUFPTR equ 31h;(buffer pointer)
DIGIT0 equ 32h;(start of 8 byte display data buffer)
DIGIT1 equ 33h;(start of 8 byte display data buffer)
DIGIT2 equ 34h;(start of 8 byte display data buffer)
DIGIT3 equ 35h;(start of 8 byte display data buffer)
DIGIT4 equ 36h;(start of 8 byte display data buffer)
DIGIT5 equ 37h;(start of 8 byte display data buffer)
DIGIT6 equ 38h;(start of 8 byte display data buffer)
DIGIT7 equ 39h;(start of 8 byte display data buffer)
DIGIT8 equ 3Ah;(start of 8 byte display data buffer)
ANSEL equ 188h;   ANS4 ANS3 ANS2 ANS1 ANS0
;RA0 AN0
;RA1 AN1
;RA2 AN2
;RA3 AN3
;RA4 -
;RA5 AN4
;RA6 -
;RA7 -
ANSELH equ 189h; ANS13 ANS12 ANS11 ANS10 ANS9 ANS8
;RB0 AN12
;RB1 AN10
;RB2 AN8
;RB3 AN9
;RB4 AN11
;RB5 AN13
;RB6 -
;RB7 -
;ANSEL equ 188h; ANS7 ANS6 ANS5
;RE0 AN5
;RE1 AN6
;RE2 AN7
 ;------------------------------------------------------------
 ; Defain
 ;------------------------------------------------------------
 FLAG            EQU     0X20            ; SYSTEM FLAG 1=OVER

 GATE_TIME1      EQU     0X22            ;
 GATE_TIME2      EQU     0X23            ;
 GATE_TIME3      EQU     0X24            ;

 WAIT1           EQU     0X25            ;
 WAIT2           EQU     0X26            ;
 WAIT3           EQU     0X27            ;
 WAIT4           EQU     0X28            ;

 TMR0_H          EQU     0x30            ; COUNT VALUE (H)
 TMR0_M          EQU     0x31            ; COUNT VALUE (M)
 TMR0_L          EQU     0x32            ; COUNT VALUE (L)
 DIGIT8          EQU     0x33            ; x10000000 (16,777,215)
 DIGIT7          EQU     0x34            ; x1000000
 DIGIT6          EQU     0X35            ; x100000
 DIGIT5          EQU     0X36            ; x10000
 DIGIT4          EQU     0x37            ; x1000
 DIGIT3          EQU     0X38            ; x100
 DIGIT2          EQU     0X39            ; x10
 DIGIT1          EQU     0X3A            ; x1
 SRLC1           EQU     0x3B            ;
 SRWK1           EQU     0x3C            ;

 SEND_DATA_H     EQU     0X40            ; UPPER SIDE
 SEND_DATA_L     EQU     0X41            ; LOWER SIDE
 STR_ADDRES      EQU     0X42            ; STRING ADDRES
 STR_POS         EQU     0X43            ; STRING POINTER
 LCD_POS         EQU     0X44            ; LCD LOCATE

 W_SAVE          EQU     0X45            ;
 STATUS_SAVE     EQU     0X46            ;

 RS              EQU             2       ;RS
 E               EQU             3       ;E

 ;------------------------------------------------------------
 ; Power On vector
 ;------------------------------------------------------------
                 ORG     0x00
                 goto    main

 ;-----------------------------
 ; DISPLAY STRINGS
 ;-----------------------------
 STRING1         DT      " F-COUNTER V0.0 ",0
 STRING2         DT      "    YSD.2006    ",0
 STRING3         DT      "OV",0
 STRING4         DT      "  ",0
 STRING5         DT      "GATE 1.0s",0

 ;------------------------------------------------------------
 ; MAIN
 ;------------------------------------------------------------
 main
    goto    start
    org    4
start    org    5

 ;------------------------------
 ; Initializing PORTA/B,ADC,INT
 ;------------------------------

                 bsf     STATUS,RP0      ;

                 movlw   B'00111001'     ; SET PORTA I/O
                 movwf   TRISA

                 movlw   B'00000001'     ; SET PORTB I/O
                 movwf   TRISB

                 movlw   B'00101000'     ; B5:TOCKI-IN / B4:RA4 EDG H->L COUNT / B3:PRESCALE 1=OFF
                 movwf   OPTION_REG

                 movlw   B'10001110'     ; DIGITL4,3,2,1 AN0
                 movwf   ADCON1          ;

                 bcf     STATUS,RP0      ;

                 clrf    INTCON


;********************************
; メインプログラム
;********************************



    movlw    b'01010101'
    movwf    DIGIT0
    movlw    b'00110011'
    movwf    DIGIT1
    movlw    b'10101010'
    movwf    DIGIT2
    movlw    b'11001100'
    movwf    DIGIT3
    movlw    b'11110000'
    movwf    DIGIT4
    movlw    b'11110000'
    movwf    DIGIT5
    movlw    b'11000011'
    movwf    DIGIT6
    movlw    b'00111100'
    movwf    DIGIT7
    movlw    b'11111111'
    movwf    DIGIT8




    movlw    b'01100000'
    iorwf    STATUS,f    ;Bank 3 (RP<10> is set)     |B3
    movlw    0
    movwf    ANSEL        ;188h
    movwf    ANSELH        ;189h
    movlw    b'01100000'
    xorwf    STATUS,f    ;Bank 0 (RP<10> is clr)     |B3

init_    movlw    b'00000001'
    movwf    BITPOS
     movlw    DIGIT0
    movwf    BUFPTR

     movlw    b'11111110'
    bsf    STATUS,RP0    ;Bank 1 (RP1 is clr)     |B1
    movwf    TRISA        ;turn off display        
    bcf    STATUS,RP0    ;Bank 0 (RP1 is clr)     |B0


isrled    movlw    b'11111111'    ;PORT ALL INPUT          
    bsf    STATUS,RP0    ;Bank 1 (RP1 is clr)     |B1
    movwf    TRISB        ;turn off display        
 ;
    bcf    STATUS,RP0    ;Bank 0 (RP1 is clr)     |B0
    movf    BITPOS,W    ;example: b'00000001'    
    movwf    PORTB        ;new output pattern      
 ;
    bsf    PORTA,0        ;turn Hi 'float bit' off
    movf    BUFPTR,W    ;ptr to current digit    
    movwf    FSR        ;setup indirect address  
    movf    INDF,W        ;get digit segment data  
    andwf    BITPOS,W    ;and float/column bit    
    btfss    STATUS,Z    ;need the float bit?     
    bcf    PORTA,0        ;yes, 'float' bit on     
 ;
    iorwf    BITPOS,W    ;pickup the BITPOS bit   
    iorwf    INDF,W        ;get digit segment bits  
    xorlw    b'11111111'    ;invert all bits         
    bsf    STATUS,RP0    ;Bank 1 (RP1 is clr)     |B1
    movwf    TRISB        ;display new digit       
 ;
    bcf    STATUS,RP0    ;Bank 0 (RP1 is clr)     |B0
    movf    BITPOS,W    ;
    andlw    b'11111111'    ;   
    btfss    STATUS,Z    ;
    goto    isrnxt
    bsf    PORTA,0        ;turn Hi 'float digit' on

     movlw    b'00000001'    
    movwf    BITPOS        ;reset to b'00000001'    
     movlw    DIGIT0        ;get buffer address      
    movwf    BUFPTR        ;reset the pointer       
    goto    israll

isrnxt    incf    BUFPTR,f    ;increment buffer ptr    
    bcf    STATUS,C    ;clear carry bit         
    rlf    BITPOS,f    ;shift our digit bit     
    btfss    STATUS,C    ;all 8 digits scanned?   
    goto    israll        ;noEND, branch           
 ;
israll    goto    isrled        ;Repete

;bin to bcd
;
;8421 8421 8421  8421 8421 8421  8421 8421 8421

;268435456
;134217728 6718864 33554432 16777216

;8388608 4194304 2097152 1048576  
;524288 262144 131072 65536  

;32768 16384 8192 4096  
;2048 1024 512 256  

;128 64 32 16  
;8 4 2 1
;                                                          T 1 1 ADD
;XXXX.XXX0|000.0 000.0|000.0 000.0|000.0 000.0|000.0 000.0|000:0.0000|0000.0000|0000.0000|0000.0000

;**** メインループ *****

 ;------------------------------
 ; Initializing SYSTEM
 ;------------------------------
                 clrf    PORTA
                 clrf    PORTB
                 clrf    FLAG
                 call    LCD_INIT                ; Initialize LCD

                 movlw   0X00
                 call    LCD_SET_LOCATE          ; 表示開始位置を00にセット

                 movlw   STRING1
                 call    LCD_SEND_STR            ; タイトル表示1

                 movlw   0X40
                 call    LCD_SET_LOCATE          ; 表示開始位置を40にセット

                 movlw   STRING2
                 call    LCD_SEND_STR            ; タイトル表示2

                 movlw   D'10'                   ; タイトル表示ウェイト
                 movwf   WAIT4                   ;
 WAIT_LOOP2
                 call    WAIT100MS
                 decfsz  WAIT4,F                 ;
                 goto    WAIT_LOOP2

                 call    LCD_CLEAR               ;画面クリア

                 call    DISPLAY_INIT            ;周波数表示初期化
                 call    DISPLAY                 ;初期表示 周波数値

                 movlw   0x40                    ; LCD LOCATE ADDRES
                 call    LCD_SET_LOCATE
                 movlw   STRING5                 ; GATE 1S
                 call    LCD_SEND_STR
 ;------------------------------
 ; MAIN LOOP
 ; FLAG1 OVER
 ;------------------------------
 MAINLOOP        
                 bcf     FLAG,1          ; オーバーフラグクリア

                 call    MEASURE         ; 測定

                 call    DISP_OVER       ; オーバー表示

                 btfsc   FLAG,1          ; OVER Detect
                 goto    MAINLOOP

                 call    hex2dec24       ; HEX TO BCD 変換

                 call    dec2char        ; ASC変換

                 call    DISPLAY         ; 測定値の表示

                 goto    MAINLOOP

 ;-------------------------------
 ; FREQUENCY MEASURE 1Sec RANGE
 ;-------------------------------
 MEASURE
                 movlw   D'10'                   ; GATE TIME = 0.1S * 10 = 1Sec
                 movwf   GATE_TIME3

                 clrf    TMR0_M
                 clrf    TMR0_H
                 bcf     INTCON,TMR0IF           ; CLEAR TMR0IF
                 clrf    TMR0                    ; GATE OPEN

 MEAS2_LOOP
                 call    FREQ_MEAS               ; FREQ MEASRE
                 decfsz  GATE_TIME3,F
                 goto    MEAS2_LOOP
                 
                 movf    TMR0,W                  ; GATE CLOSE
                 movwf   TMR0_L

                 call    FREQ_MEAS_FINAL         ; カウンター最終チェック

                 return

 ;---------------------------------
 ; FREQUENCY MEASURE 0.1Sec Master
 ;---------------------------------
 FREQ_MEAS
                 movlw   D'21'                   ;21GATE TIME ADJ LOOP
                 movwf   GATE_TIME1
 MEAS_LOOP
                 decfsz  GATE_TIME1,F
                 goto    MEAS_LOOP

                 movlw   D'247'                  ;247
                 movwf   GATE_TIME1

 MEAS_LOOP1
                 movlw   D'126'                  ;126
                 movwf   GATE_TIME2
                 goto    $+1                     ;GATE TIME ADJ
                 goto    $+1                     ;GATE TIME ADJ

 MEAS_LOOP2
                 btfss   INTCON,TMR0IF           ;繰り上がりはあるか?
                 goto    NO_CARRY
                 bcf     INTCON,TMR0IF           ;CLEAR T0IF
                 movlw   0x01                    ;繰り上がりがある時
                 goto    MEAS_NEXT

 NO_CARRY        
                 nop
                 nop
                 movlw   0x00                    ;繰り上がりが無い時。

 MEAS_NEXT
                 addwf   TMR0_M,F                ; TMR0_M + 1
                 rlf     TMR0_M,W                ; TMR0_M_CARRY
                 andlw   0x01                    ; MASK
                 addwf   TMR0_H,F                ; TMR0_H + 1 上位カウンター繰り上がり
                 btfss   STATUS,C                ; オーバー検出
                 goto    MEAS_NEXT1

                 bsf     FLAG,1                  ; SET OVER
                 return  
         
 MEAS_NEXT1
                 decfsz  GATE_TIME2,F
                 goto    MEAS_LOOP2

                 decfsz  GATE_TIME1,F
                 goto    MEAS_LOOP1

                 return

 ;---------------------------------
 ; FREQUENCY MEASURE FINAL CHECK
 ;---------------------------------
 FREQ_MEAS_FINAL
                 btfss   INTCON,TMR0IF   ; TMR0 キャリーフラグ確認
                 return

                 movlw   0x01
                 addwf   TMR0_M,F        ; ミッドカウンター加算
                 btfss   STATUS,C        ;
                 return                  ; 繰り上がりがない場合は戻る    
                 movlw   0x01
                 addwf   TMR0_H,F        ;
                 btfsc   STATUS,C        ; 繰り上がりの場合はオーバーフローか?
                 bsf     FLAG,1          ; SET OVER
                 
                 return
                 
 ;------------------------------------------------------------
 ;HEX TO BCD CONVERTER (24bit)
 ;------------------------------------------------------------
 hex2dec24
                 movlw   SRLC1           ;
                 movwf   FSR
                 call    devide          ;         1 DIGIT
                 call    devide          ;        10 DIGIT
                 call    devide          ;       100 DIGIT
                 call    devide          ;     1,000 DIGIT
                 call    devide          ;    10,000 DIGIT
                 call    devide          ;   100,000 DIGIT
                 call    devide          ; 1,000,000 DIGIT
                 call    devide          ;10,000,000 DIGIT

                 return
 devide                                  ; DEV10
                 movlw   d'24'           ;
                 movwf   SRLC1
                 clrf    SRWK1
 devide0
                 bcf     STATUS,C        ; CARRY FLAG CLEAR
                 rlf     TMR0_L,1
                 rlf     TMR0_M,1
                 rlf     TMR0_H,1
                 rlf     SRWK1,1
                 movlw   b'11110110'
                 addwf   SRWK1,0
                 btfsc   STATUS,C
                 movwf   SRWK1
                 btfsc   STATUS,C
                 incf    TMR0_L,1
                 decfsz  SRLC1,1
                 goto    devide0
                 decf    FSR,1
                 movf    SRWK1,0
                 movwf   0h
                 return
 ;------------------------------------------------------------
 ; DEC TO ASC
 ;------------------------------------------------------------
 dec2char
                 movlw   0x30
                 addwf   DIGIT8,f

                 movlw   0x30
                 addwf   DIGIT7,f

                 movlw   0x30
                 addwf   DIGIT6,f

                 movlw   0x30
                 addwf   DIGIT5,f

                 movlw   0x30
                 addwf   DIGIT4,f

                 movlw   0x30
                 addwf   DIGIT3,f

                 movlw   0x30
                 addwf   DIGIT2,f

                 movlw   0x30
                 addwf   DIGIT1,f

                 return
 ;-----------------------------
 ; DISPLAY INIT
 ;-----------------------------
 DISPLAY_INIT
                 call    LCD_CLEAR
                 clrf    TMR0_L
                 clrf    TMR0_M
                 clrf    TMR0_H
                 clrf    TMR0

                 clrf    DIGIT1
                 clrf    DIGIT2
                 clrf    DIGIT3
                 clrf    DIGIT4
                 clrf    DIGIT5
                 clrf    DIGIT6
                 clrf    DIGIT7
                 clrf    DIGIT8
                 call    dec2char

                 return
 ;------------------------------------------------------------
 ; VALUE LCD DISPLAY 1SEC
 ;------------------------------------------------------------
 DISPLAY
                 movlw   0x04            ; LCD LOCATE ADDRES
                 call    LCD_SET_LOCATE

                 movf    DIGIT8,W
                 call    LCD_SEND_CHAR

                 movf    DIGIT7,W
                 call    LCD_SEND_CHAR

                 movlw   ','
                 call    LCD_SEND_CHAR

                 movf    DIGIT6,W
                 call    LCD_SEND_CHAR

                 movf    DIGIT5,W
                 call    LCD_SEND_CHAR

                 movf    DIGIT4,W
                 call    LCD_SEND_CHAR

                 movlw   ','
                 call    LCD_SEND_CHAR

                 movf    DIGIT3,W
                 call    LCD_SEND_CHAR

                 movf    DIGIT2,W
                 call    LCD_SEND_CHAR

                 movf    DIGIT1,W
                 call    LCD_SEND_CHAR

                 movlw   'H'
                 call    LCD_SEND_CHAR

                 movlw   'z'
                 call    LCD_SEND_CHAR

                 return

 ;------------------------------------------------------------
 ; DISPLAY OVER
 ;------------------------------------------------------------
 DISP_OVER
                 movlw   0x00            ; LCD LOCATE ADDRES
                 call    LCD_SET_LOCATE

                 movlw   STRING4

                 btfsc   FLAG,1          ;OVER Detect
                 movlw   STRING3         

                 call    LCD_SEND_STR
                 return

 ;-----------------------------
 ;Initialize LCD
 ;-----------------------------
 LCD_INIT
                 call    WAIT15MS        ;15mS WAIT

                 BCF     PORTB,RS        ;RS=0 COMMAND

                 movlw   B'00110000'     ;function set 8bit
                 call    SEND_DATA_4

                 call    WAIT5MS         ;5ms WAIT

                 movlw   B'00110000'     ;function set 8bit
                 call    SEND_DATA_4

                 call    WAIT5MS         ;5mS WAIT

                 movlw   B'00110000'     ;function set 8bit
                 call    SEND_DATA_4

                 movlw   B'00100000'     ;function set 4bit
                 call    SEND_DATA_4

                 movlw   B'00101000'     ;function set 4bit 2ROW
                 call    SEND_DATA_8
                 movlw   B'00001000'     ;DISPLAY OFF
                 call    SEND_DATA_8
                 movlw   B'00000001'     ;DISPLAY CLR
                 call    SEND_DATA_8

                 call    WAIT2MS         ;CLEAR BUSY

                 movlw   B'00000110'     ;Entry MODE SET
                 call    SEND_DATA_8

                 movlw   B'00001100'     ;DISPLAY ON CURSOR OFF
                 call    SEND_DATA_8
                 return

 ;-----------------------------
 ; CLEAR LCD
 ;-----------------------------
 LCD_CLEAR
                 movlw   B'00000001'     ; LCD CLEAR COMMAND
                 call    LCD_SEND_CMD
                 call    WAIT2MS
                 return
 ;-----------------------------
 ; SET LCD LOCATE
 ; 0x00 ROW1-LEFT
 ; 0x40 ROW2-LEFT
 ;-----------------------------
 LCD_SET_LOCATE
                 iorlw   B'10000000'     ; LOCATE ADDRES TO W
                 call    LCD_SEND_CMD    ;
                 return
 ;-----------------------------
 ; LCD STRING PUT  文字列の出力
 ;-----------------------------
 LCD_SEND_STR
                 movwf   STR_ADDRES      ;GET STRING ADDRES
                 movlw   0
                 movwf   STR_POS         ;INDEX COUNTER CLEAR
 STR_LOOP        
                 addwf   STR_ADDRES,W    ;ADDRES + INDEX -> W
                 call    GET_CHAR        ;GET CHAR
                 addlw   0               ;CHECK STRING END
                 btfsc   STATUS,Z        ;0=END
                 return
                 call    LCD_SEND_CHAR   ;SEND CHAR
                 incf    STR_POS,F       ;INDEX INC
                 movf    STR_POS,W
                 goto    STR_LOOP        ;
 GET_CHAR        
                 movwf   PCL             ;CHAR TO W
 ;-----------------------------
 ; LCD CHARACTER SEND
 ;-----------------------------
 LCD_SEND_CHAR
                 BSF     PORTB,RS        ;RS=1 (CHARACTER SEND MODE)
                 call    SEND_DATA_8
                 return
 ;-----------------------------
 ; LCD COMMAND SEND
 ;-----------------------------
 LCD_SEND_CMD    
                 BCF     PORTB,RS        ;RS=0 (COMMAND SEND MODE)
                 call    SEND_DATA_8
                 return
 ;-----------------------------
 ; 8BIT [UPPER 4BIT] SEND
 ;-----------------------------
 SEND_DATA_4
 ;UPPER 4BIT
                 movwf   SEND_DATA_H

                 movlw   0XF0    
                 andwf   SEND_DATA_H,F   ; SET UPPER 4BIT
                 movf    PORTB,W         ; READ PORT
                 andlw   0X0F
                 iorwf   SEND_DATA_H,W
                 movwf   PORTB           ; OUTPUT PORTB

                 BSF     PORTB,E         ; ENABLE SIGNAL ON
                 call    WAIT01MS
                 BCF     PORTB,E         ; ENABLE SIGNAL OFF
                 call    WAIT01MS
                 return
 ;-----------------------------
 ; 8BIT -> 4BIT X 2 SEND
 ; [UPPER] -> [LOWER]
 ;-----------------------------
 SEND_DATA_8
 ;UPPER 4BIT
                 movwf   SEND_DATA_H
                 movwf   SEND_DATA_L

                 movlw   0XF0    
                 andwf   SEND_DATA_H,F   ; SET UPPER 4BIT
                 movf    PORTB,W         ; READ PORT
                 andlw   0X0F
                 iorwf   SEND_DATA_H,W
                 movwf   PORTB           ; OUTPUT PORTB

                 BSF     PORTB,E         ; ENABLE SIGNAL ON
                 call    WAIT01MS
                 BCF     PORTB,E         ; ENABLE SIGNAL OFF
                 call    WAIT01MS
 ;LOW 4BIT
                 SWAPF   SEND_DATA_L,W   ; UPPER LOW SWAP -> W
                 movwf   SEND_DATA_L

                 movlw   0XF0    
                 andwf   SEND_DATA_L,F   ; SET LOW 4BIT
                 movf    PORTB,W         ; READ PORT
                 andlw   0X0F
                 iorwf   SEND_DATA_L,W
                 movwf   PORTB           ; OUTPUT PORTB

                 BSF     PORTB,E         ; ENABLE SIGNAL ON
                 call    WAIT01MS
                 BCF     PORTB,E         ; ENABLE SIGNAL OFF
                 call    WAIT01MS

                 return

 ;-----------------------------
 ; WAIT
 ;-----------------------------
 ;100mS WAIT
 WAIT100MS  
                 movlw   D'10'     ;100mS WAIT
                 movwf   WAIT3

 WLOOP3   
                 call    WAIT10MS
                 decfsz  WAIT3,F
                 goto    WLOOP3
                 return

 ;15mS WAIT
 WAIT15MS        
                 movlw   D'150'    ;15mS WAIT
                 movwf   WAIT2
                 goto    WLOOP2
 ;10mS WAIT
 WAIT10MS        
                 movlw   D'100'    ;10mS WAIT
                 movwf   WAIT2
                 goto    WLOOP2
 ;5mS WAIT
 WAIT5MS  
                 movlw   D'50'     ;5mS WAIT
                 movwf   WAIT2
                 goto    WLOOP2
 ;2mS WAIT
 WAIT2MS  
                 movlw   D'20'     ;2mS WAIT
                 movwf   WAIT2
                 goto    WLOOP2
 ;1mS WAIT
 WAIT1MS  
                 movlw   D'10'     ;1mS WAIT
                 movwf   WAIT2

 WLOOP2   
                 call    WAIT01MS
                 decfsz  WAIT2,F
                 goto    WLOOP2
                 return
 ;-----------------------------
 ; WAIT 0.1mS
 ;-----------------------------
 WAIT01MS
                 movlw   D'165'          ;0.1mS WAIT
                 movwf   WAIT1
 WLOOP1  
                 decfsz  WAIT1,F
                 goto    WLOOP1
                 return

                 END

    end


;*********************************************************************
;
;  7 Segment LED display 4 digit counter (Clock 4.19MHz)
;
        include 16f84.h

        .osc    hs
        .pwrt   on
        .wdt    off
        .protect off

countsw equ     rb.0            ; input port for count

        org     0ch

d1      ds      1               ; count data
d2      ds      1
d3      ds      1
d4      ds      1
sd      ds      1               ; segment data (0~9)
lc      ds      1               ; loop counter for wait


        org     0
        goto    start
        org     4
        goto    start

start:                          ; initialize
        bsf     3h,5            ; page 1

;               43210           ; port ra initialize
;               ioooo
        movlw   10000b
        movwf   85h

;               76543210        ; port rb initialize
;               oooooooi
        movlw   00000001b
        movwf   86h

        bcf     3h,5            ; page 0

        clrf    d1              ; clear count data
        clrf    d2
        clrf    d3
        clrf    d4

wpe:                            ; wait for positive edge
        call    disp
        btfss   countsw         ; if input=HIGH then addition
        goto    wpe             ; else wait for input becomes HIGH

        incf    d1,1            ; addition
        movlw   10
        subwf   d1,0
        btfss   3h,2
        goto    wne
        clrf    d1

        incf    d2,1
        movlw   10
        subwf   d2,0
        btfss   3h,2
        goto    wne
        clrf    d2

        incf    d3,1
        movlw   10
        subwf   d3,0
        btfss   3h,2
        goto    wne
        clrf    d3

        incf    d4,1
        movlw   10
        subwf   d4,0
        btfss   3h,2
        goto    wne
        clrf    d4

wne:                            ; wait for negative edge
        call    disp
        btfsc   countsw         ; if input=LOW then next
        goto    wne             ; else wait for input becomes LOW

        goto    wpe

;*********************************************************************
;       7 segment decoder
;
decode:
        bcf     3h,0            ; clear carry flag
        rlf     sd,1            ; 4-times
        rlf     sd,1
        movf    sd,0            ; copy sd to w
        addwf   pc,1            ; add to PC

       ; -- RB  76543210 -------
       ; - seg  fedcbag -------- 0 -> ON , 1 -> OFF
        movlw   00000010b       ; 0
        movwf   rb
        goto    dec10
        nop
        movlw   11100110b       ; 1
        movwf   rb
        goto    dec10
        nop
        movlw   10010000b       ; 2
        movwf   rb
        goto    dec10
        nop
        movlw   11000000b       ; 3
        movwf   rb
        goto    dec10
        nop
        movlw   01100100b       ; 4
        movwf   rb
        goto    dec10
        nop
        movlw   01001000b       ; 5
        movwf   rb
        goto    dec10
        nop
        movlw   00001100b       ; 6
        movwf   rb
        goto    dec10
        nop
        movlw   11100010b       ; 7
        movwf   rb
        goto    dec10
        nop
        movlw   00000000b       ; 8
        movwf   rb
        goto    dec10
        nop
        movlw   01100000b       ; 9
        movwf   rb
dec10:
        return

;*********************************************************************
;       Display all digit
;
disp:

                                ; Digit-4
        movlw   11111110b       ; blanking
        movwf   rb
        movlw   01110b          ; select digit
        movwf   ra
        movf    d4,0            ; set segment data
        movwf   sd
        call    decode          ; decode and output
        call    wait

                                ; Digit-3
        movlw   11111110b
        movwf   rb
        movlw   01101b
        movwf   ra
        movf    d3,0
        movwf   sd
        call    decode
        call    wait

                                ; Digit-2
        movlw   11111110b
        movwf   rb
        movlw   01011b
        movwf   ra
        movf    d2,0
        movwf   sd
        call    decode
        call    wait

                                ; Digit-1
        movlw   11111110b
        movwf   rb
        movlw   00111b
        movwf   ra
        movf    d1,0
        movwf   sd
        call    decode
        call    wait

        return

;*********************************************************************
;       wait for display 1 digit
;
;;      total cycles = ( iter - 1 ) * ( 1 + 2 ) + 1 + 1 + 2 + 2
;;                                     dec goto  mov mov dec ret
;;      this case is 195 cycles
;;      238.4ns * 4 * 195 = 186us ( at clock 4.19MHz )
;;                          ~~~~~
wait:
        movlw   64              ; # of iteration
        movwf   lc
wait10:
        decfsz  lc,1
        goto    wait10
        return

;*****************************************

ここから別プログラム

;                          ------   ------                              
;        <- RA2/AN2/VREF   |1    ---   18| RA1/AN1             ->       
;        <- RA3/AN3/CMP1   |2          17| RA0/AN0             <=       
;        => RA4/TOCKI/CMP2 |3          16| RA7/OSC1/CLKIN      <=       
; +5 VDC -> RA5/MCLR/VPP   |4          15| RA6/OSC2/CLKOUT     -- N/C   
;    GND -> VSS            |5 16F648a  14| VDD                 <- +5 VDC
;        <- RB0/INT        |6          13| RB7/T1OSI/PGD       ->       
;        <- RB1/RX/DT      |7          12| RB6/T1OSO/T1CKI/PGC ->       
;        <- RB2/TX/CK      |8          11| RB5                 ->       
;        <- RB3/CCP1       |9          10| RB4/PGM             ->       
;                          ---------------                              
; RA3 Reading SW & pulse,
; RA4 Frequency count input
; RB6 Reciprocal measurement input
;                              ------  -------                          
;  1 RE3/MCLR/VPP              | 1   --   28 | -- 28 RB7/ICSPDAT        
;  2 RA0/AN0/ULPWU/C12IN0-     | 2        27 |-- 28 RB6/ICSPCLK         
;  3 RA1/AN1/C12IN1-           | 3        26 |-- 28 RB5/AN13/T1G        
;  4 RA2/AN2/VREF-/CVREF/C2IN+ | 4        25 | -- 28 RB4/AN11/P1D       
;  5 RA3/AN3/VREF+/C1IN+       | 5        24 | -- 28 RB3/AN9/PGM/C12IN2-
;  6 RA4/T0CKI/C1OUT           | 6        23 | -- 28 RB2/AN8/P1B        
;  7 RA5/AN4/SS/C2OUT          | 7        22 | -- 28 RB1/AN10/P1C/C12IN3-
;  8 VSS GND                   | 8 16F886 21 | -- 28 RB0/AN12/INT       
;  9 RA7/OSC1/CLKIN            | 9        20 | -- 28 VDD                
; 10 RA6/OSC2/CLKOUT           |10        19 | -- 28 VSS                
; 11 RC0/T1OSO/T1CKI           |11        18 | -- 28 RC7/RX/DT          
; 12 RC1/T1OSI/CCP2            |12        17 | -- 28 RC6/TX/CK          
; 13 RC2/P1A/CCP1              |13        16 | -- 28 RC5/SDO            
; 14 RC3/SCK/SCL               |14        15 | -- 28 RC4/SDI/SDA        
;                              ---------------                          

   list      p=16F648A           ; list directive to define processor
    #include <p16F648A.inc>       ; processor specific variable definitions
    __CONFIG _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _EXTCLK_OSC
 ; 9-Digit 9-Pin Charlieplexed AC LED ISR Sample Code
 ;   (14-bit core instructions)
 ; Vars - BITPOS (float bit & digit position)
 ;        BUFPTR (buffer pointer)
 ;        DIGIT0 (start of 8 byte display data buffer)
 ;               (bit 7=dp, bit 6=G...bit 0=A)
 ;LEDMPX coment |B is bank
    org    20h
BITPOS    res    1
BUFPTR    res    1
DIGIT0    res    1
DIGIT1    res    1
DIGIT2    res    1
DIGIT3    res    1
DIGIT4    res    1
DIGIT5    res    1
DIGIT6    res    1
DIGIT7    res    1
DIGIT8    res    1
DIGIT9    res    1
WORK    res    1
SDWPA    res    1
SDWPB    res    1
SDWTA    res    1
SDWTB    res    1
;CLOCKFREQ    EQU    12.8        ;  12.8 MHz X-tal used
; dispdata
D0_  equ b'00111111'
D1_  equ b'00000110'
D2_  equ b'01011011'
D3_  equ b'01001111'
D4_  equ b'01100110'
D5_  equ b'01101101'
D6_  equ b'01111101'
D7_  equ b'00000111'
D8_  equ b'01111111'
D9_  equ b'01101111'
Dp_  equ b'10111111'
D0p_ equ b'10111111'
D1p_ equ b'10000110'
D2p_ equ b'11011011'
D3p_ equ b'11001111'
D4p_ equ b'11100110'
D5p_ equ b'11101101'
D6p_ equ b'11111101'
D7p_ equ b'10000111'
D8p_ equ b'11111111'
D9p_ equ b'11101111'
    org    0
    goto    start
    org    4
start    org    5
    goto init_
init_;
    movlw    D0_
    movwf    DIGIT0
    movlw    D1_
    movwf    DIGIT1
    movlw    D2_
    movwf    DIGIT2
    movlw    D3_
    movwf    DIGIT3
    movlw    D4_
    movwf    DIGIT4
    movlw    D5_
    movwf    DIGIT5
    movlw    D6_
    movwf    DIGIT6
    movlw    D7_
    movwf    DIGIT7
    movlw    D8_
    movwf    DIGIT8
    movlw    D9_
    movwf    DIGIT9
    movlw    b'00000111'    ;all DIGTAL
    movwf    CMCON        ;
    goto    isb9
isrled;
    movf    BUFPTR,W    ;Z,32~3A
    movwf    FSR          ;setup indirect address
;9dig Hi
    movf    BITPOS,W    ;Z,DigData '00000001'    digPOS
      bcf    SDWPA,0        ; ,DP9=0      Dig9    9dig Lo
    btfsc    STATUS,Z    ; ,DG9 ? 0 1        9dig ?=1
    bsf    SDWPA,0        ; ,DP9=1 | *        9dig Hi
;1,2,3,5,6,7,8dig Hi=Com
    xorwf    SDWPB,W        ; ,Old Com Data
    andlw    b'11110111'    ; ,Not Bit3
    xorwf    SDWPB,F        ; ,NeW Com Data
;4dig Hi
    bcf    SDWPA,1        ; ,DP4=0      Dig4    4dig Lo
    btfsc    BITPOS,3    ; ,PB3 ? 0 1        4dig ?=1
    bsf    SDWPA,1        ; ,DP4=1 | *         4dig Hi
;Fbit,9dig on
    andwf    INDF,W        ;Z,
    bsf    SDWTA,0        ; ,DT9=1      F&D9    Fbit,9dig off
    btfsc    STATUS,Z    ; ,Fbt ? 0 1        Fbit ?=0 on
    btfsc    SDWPA,0        ; ,DG9 ? | 0 1        9dig ?=1 on
    bcf    SDWTA,0        ; ,DT9=0 * | *        Fbit,9dig on
;Seg                ; ,       *
    movf    BITPOS,W    ;Z,pickup the BITPOS bit  |B0 * 00000001
    iorwf    INDF,W        ;Z,get digit segment bits |B0   00000110 00000111
    movwf    WORK        ;
;Dbit,4dig on
    bsf    SDWTA,1        ; ,DT4=1      F&D4    Dbit,4dig off
    btfsc    WORK,3        ; ,PB3 ? 0 1        Dbit,4dig ?=1
    bcf    SDWTA,1        ; ,DT4=0 | *  SegD    Dbit,4dig on
    comf    WORK,W        ;Z,     R~>W
        xorwf    SDWTB,W        ; ,Old Data
    andlw    b'11110111'    ; ,Not Bit3
        xorwf    SDWTB,F        ; ,NeW Data
    movf    SDWPA,W        ;
    movwf PORTA        ;display new digit
    movf    SDWPB,W        ;
    movwf PORTB        ;display new digit
    movf    SDWTA,W        ;
    bsf   STATUS,RP0    ;Bank 1 (RP1 is clr)     |B1
    movwf TRISA        ;display new digit
    bcf   STATUS,RP0    ;Bank 0 (RP1 is clr)     |B0
    movf    SDWTB,W        ;
    bsf   STATUS,RP0    ;Bank 1 (RP1 is clr)     |B1
    movwf TRISB        ;display new digit
    bcf   STATUS,RP0    ;Bank 0 (RP1 is clr)     |B0
    movf    BITPOS,W    ;DigData '00000001'Z
;                          ;STATUS,Z'xxxxx2xx'
    btfss    STATUS,Z    ;Z=          1 0
    goto     isbp         ;         | *@
isb9;                ;         |  |
    movlw     b'00000001'     ;Digitreset1 *  |
     movwf     BITPOS         ;LoDigit write  |
     movlw     DIGIT0         ;Segment Data   |
     movwf     BUFPTR         ;Pointa Write   |
    goto     israll         ;Next Flow      |
isbp;                ;            |
    incf     BUFPTR,f     ;DigitPointa +1 *
     bcf     STATUS,C     ;cl carry      *
    rlf     BITPOS,f     ;Shift Left      |
    goto     israll         ;Next Flow   | *@ |
;                ;            |
israll;                ;            |
    nop            ;            *
     goto     isrled
;next flow is on time & etc prosses
     end
    
    
     


コメント(0) 

ついに出たプロペラ VS Arudino [MPU]

プロペラフォーラムでプロペラ互換シールドの話題が出ていた。

大分以前からあったらしい。( 08-30-2009, 11:09 PM )

http://forums.parallax.com/showthread.php?t=115629

( 10-05-2010, 05:47 PM )

http://forums.parallax.com/showthread.php?t=126146&highlight=arduino+prop

此処の一番下に幾つか書いてあるので、興味がある方はご覧下さい。

それぞれの意見があって面白いですよ。

 


コメント(0) 

Fedora 紹介 [MPU]

面白そうなページを見つけました。

日本語のトップページです。

http://fedoraproject.org/ja/index

少し読んでみたんですが、まだ良く判りません。

http://chitlesh.fedorapeople.org/FEL/embedded.html

このページには 

Supported compilers :

  • the Small Device C Compiler, the GNU PIC Utilities, the PICC compilers,
  • the PIC30 toolchain, the C18 compiler, the JAL and JALV2 compilers,
  • the CSC compiler, and the Boost compilers.

と訳の分からないことが書いてありました。

 

 


コメント(0) 

PIC AVR戦争 [MPU]

PIC AVR戦争
なんかと言うとPICとAVR使いは仲が悪いようです、
両方使うと相手にしてくれなかったり(それはオーバー?)

しかし私はPICとAVRは共存できると思う。
昔バベルの塔でされたように、言葉が違いすぎるからで、
少しは共通で使える、「アルゴル  Pascal」風の言葉で
それなりの定義やライブラリを持つと、共用、混合でも
使えるのではないかと思う。
次のサイトは参考になりませんか?

最近見つけた、Aruduinoでjalv2とjatの討論です。

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1282662630/0

「AVR、ARM、その他...マルチプラットフォームです。 」と有りました。


http://www.casadeyork.com/jalv2/
http://www.ustr.net/avrfiles/avrfiles.shtml

http://www.e-lab.de/AVRco/index.html
リリースのAVRco標準無料
Codegrösse Beschränkung auf 4kB Flash. 4kBフラッシュへのコードサイズの制限。
AVRco Demo Version full download (30MB)
リリースのAVRco Mega8/Meg88の無料
Codegrösse Beschränkung auf 8kB Flash & Mega8/88. 8kBフラッシュと
Mega8/88、コードサイズの制限。
Mega8/Mega88 Version kostenloser download (30MB)


残念ながら、私には「AVRco」は使いこなせなかった、どのデバイスも同じ画面、不思議なエラーも出た。

http://www.mikroe.com/eng/products/view/410/mikropascal-for-pic/

jatというのがあった。
http://code.google.com/p/jallib/source/browse#svn/trunk/jat
直下にはなくて、その下にファイルがあり、
jal から Arduinoのファイルが出来るという。

明日試してみよう。

http://jallib.googlecode.com/svn%E2%80%BAtrunk%E2%80%BAjat/trunk/

WS000444.JPG

なにかつかえるかな?

http://groups.google.com/group/jallib/browse_thread/thread/e678ae2a66e77722

jalv2

http://www.casadeyork.com/jalv2/

http://code.google.com/p/jallib/

http://jal.sunish.net/

jat

http://jallib.googlecode.com/svn%E2%80%BAtrunk%E2%80%BAjat/trunk/jat/

ジャルイノと読むんだろうか?

http://justanotherlanguage.org/content/jaluino

jalv2とかで開発するらしい。

ついでにArduinoもjalv2で出来ればいいのだが・・


コメント(0) 

EEPROMの秘密 [MPU]

最近はPICやAVRなどのMPUに低電圧プログラム書き込みが有ります。

始まりはEPROMと言うゲートを越えて
高電圧で電荷を打ち込み記憶をさせ、
紫外線イオナイズ消去で消す、便利なPROMが誕生し、
プログラマーは、
常に殺菌灯で作った4wの蛍光灯を持っていたものです。
(始めは蓋点き、
後はROMの上に伏せてボタンを押すと勝手に1回タイマーが働く)

FuseROMと言われ接続部を溶断して
永久書き込みをするタイプ、も有りました。

NOVRAMと言われるパンチスルー書き込み
(絶縁ゲートを越えて電荷を打ち込む)
とオーバーパンチスルーによる消去可能なタイプを経て

在来のEEPROMが誕生、
それに特殊な処理を施して、低電圧で書き込み消去が可能となるものが誕生

これらが更に発展してMPUに組み込まれ
プログラマブル(或いはフラッシュ)と
呼ばれるタイプが当たり前になってきています。

少し古くはPICの高電圧書き込みが主流で、
その後AVRの低電圧書き込みがそれを奪いました。
(ATMEやMicrochipLはEEPROMメーカーとして有名です)

さてこのシステムは本当に低電圧で書き込めるのでしょうか?

次のサイトを見ますと、
http://www.rohm.co.jp/ad/eeprom2/
I2Cフラッシュの書き込み解説があり、
低電圧書き込みのヒントが書かれています。
http://ww1.microchip.com/downloads/jp/DeviceDoc/22239A_JP.pdf
(一度保存して表示させた方がトラブルが少なくなります。
C:\WINDOWS\Tempはダメです)

低電圧書き込みの秘密はチャージポンプで
約12vまで昇圧する事だったのです。
この操作のため規定電圧にUPする時間待たされたり、
回路を起動する合い言葉が要ったり、
(誤って起動しないように)
ポンプのためのクロックを必要としたりします。

PICの方が高信頼などと言われるのは、
高電圧書き込みを主体としてきたからであり、
AVRが消去でトラブルのは、
低電圧書き込みを主体としてきたからです。

しかし、AVRも正しくリセットを掛け、
クロックを与えて、正しい書き込みで書いてやれば、
Fuseバイトの初期化も問題有りません。

少し問題なのは、AVRのデバイスの高電圧書き込み
PIN配列パターンが多様な形態を持っていることです、
Dragonを持っていても専用のジャンパケーブルを作らねば成らず、
パッチケーブルでは心許ないので、
ついデバイス種類を増やしたくないと思ってしまいます。

PIC-LVPにおいては「AN910」に次のように載っています。

The programming
voltage for the memory array is generated
by an internal charge pump when normal operating
voltage (VDD) is placed on the pin. When the PGC and
PGD pins are held to logic low at the same time as VDD
is applied to both PGM and MCLR, the microcontroller
enters Programming mode.

他のサイトから

EEPROM endurance for the ATMEGA128 is listed at 100K erase/write cycles.
The scheme outlined above uses approximately 4 1440 bytes with each byte
being written once per day. So the question is whether the 100K
endurance applies at the per-byte level or overall. The answer obviously
represents a thousand fold difference in performance with the part
lasting either two months or 250  years.

I could not find any good documentation from Atmel with a precise
definition of endurance. I did find an article from Microchip that
mentioned that EEPROM byte writes tend to be harder on parts than
page/bulk due to current issues related to the internal charge pump used
to write the EEPROM.

 


コメント(0) 

MSP-EXP430G2 - MSP430 LaunchPad [MPU]

TiのMPU少しはAKIで買ったんですが、toolがない
8月にこれを注文しようとして、失敗。

何故か判らなくて Ti Jに聞きますと代理店から
電話があってオーダーしたのですが、そのご返事がない?

これはきっと Kit が安すぎて旨味がないのかな。

もう一度トライしたがやはり出来ない。

次に進めボタンがない・・IEでないとダメか?

ひょっとしてと思い「ファイアフォックス」ではなく
「シーモンキー」からアクセスするとちゃんと出来た。

送料無料で$13しないんだから(3個で)

これは、内部にDSPがあるらしい、PICやAVRで出来なかった。
(タンにおまえの能力が低いんだろうって)

PWMの合成が簡単に出来るかも・・チョット甘いか。

画像はまたね。

この物は来ない、12月のクリスマスプレゼントだって・・

換わりに注文した、eZ430-F2013の方は1週間掛からなかった。

国内では4pin型が販売されているそうですが、直販ですと6P型になっていました。


コメント(0) 

MPU と PDIUSBD12 [MPU]

前に書いたPDIUSBD12はどうも最強であるらしい。
しかし何で廃れてしまったのだろう、
(現にディスコネクト品のようだ)
FTDIやCP何とかもUSBデヴァイスを出し続けている。
(これらは低機能 MPUや携帯アダプタにUSBを与える・・)

どうも原因は高性能=MPU+USB含包と言うことらしく、
民生用 パラレルUSB コントローラの出番は
無くなってしまったようだ。

ARMとかはパソコン風ネットブックの心臓になっている 。
(この場合十分すぎるほどのメモリがないと使いにくいらしい)

さてここからが本題の MPU比べ に行こうと思う、
もしPDIUSBD12を使う場合は、パラレルバスでMPUとつなぐ必要がある、
というか、つながないと何にも出来ない。

いつもはじめは 「何をしたいか」「何を使えば出来るか」 から
「デバイスの入手」を試みて、有れば「まな板(ピッチ変換基板)」に
載せてみる、部分回路図を書き、全体回路図と合わせる。

全体のサイズを決め少し大きめの基板の中央寄りに集める。
(USBコネクタのように端にしか付けられないものはそちらに寄せるか、
切り離してからコネクタを実装する)

UEWや耐熱テープなんて便利なものもあるが、
アレは試作用でずっと使うには、
ショートや断線の受難が末受けている。

せめてまな板を使い、UEWで配線して途中は
固着化(線が振れて切れる、くっつくのを防止)
のためポッティング処理をする。
(松ヤニ、高周波ニス、ホットボンドなどでソリッド化)
接続はヘッダピンコネクタ類で受け、分断を容易にするか
小さく組んで手のリサイズにするかです。

ではどんなMPUがよいか?、
此処を「十分調査」してみました。

PICとの組み合わせ回路図(SXは同族でさらに高速)
mega8やmega32との組み合わせ回路図
プロペラはなかった。

MSP430は単体でUSBに強いらしい。

要するにどんな MPU でも良い、速度が要求されれば速いものを、
ポートが沢山欲しければ足の多いやつを、高度な計算が必要なれば、
それら専用ハードデバイスを積んだDSP対応品、
またはdsp擬きを積んだdsPICなどを選ぶ。

基本は「D12」と言われる「PDIUSB12専用」の
サンプルアプリケーションが総てを網羅しているらしい。
(少しのバグが残っているとか?)

これが手に入ったので、何かのアプリケーションを考えてみよう?か
どうも頭が悪いので適当な使い道が浮かばない。
(此処が最大の問題)

いぜんから、モッチャクされていた?「AT90USB162」の
使い道が見つかったらしい。

このシリーズはATMEGA**Uとして進化していて
進化版は日本ではほとんど入手できない。

海外でもmaga16やmega32のアプリケーションが交通渋滞している。
ATMELはアマチュア向けに力を入れていないのかも知れない。

その点、パララックスはユーザーのほとんどを
アマチュアと信じてドンドン新手を繰り出してくれる。

主催ページだけでほとんどのデータが集まる。
スタンプ(SX-BASIC)、ジベリアン(SX-Jave)、スピン(プロペラ)
これがパーツさえ集められたら組上がってしまう。
ファームウエアも揃っている(SXは書き込みが難しい)

プログラムを考えるプログラムやさん、
システムを考えるシステムやさん、
回路を考える回路やさん、
人それぞれ特異点(得意)があり、全部を併せ持つ人は居ないようだ。

それぞれ分担して進められるのが理想だが、金がカラムので無理のようだ。
せめてアマチュアはそうありたいもの、海外では普遍的になっているのに
日本はまだ遅れているのか?
コメント(0) 
メッセージを送る

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。