Temporary Connector Reversed Version

Dependencies:   UniGraphic mbed vt100

afero_poc15_180403R , J1 のピン配置を反転させたヴァージョンです。

Color2系を使用するためには以下のピンをジャンパで接続してください。
J1-D7 <-> J1-D0
J1-D6 <-> J1-D1

(調査中) また、こちらでテストした範囲では、
FRDM-KL25Z の V3.3 を、Modulo2 の VCC_3V3 ピンに接続してやる必要がありました。

尚、J1-D1, D0 を使用するために UART を無効にしているため
ログは表示されません。

TFTモジュールについて 
aitendoのTFTモジュールはデフォルトでは8bit bus モードになっています。
/media/uploads/Rhyme/img_2364.jpg

半田のジャンパを変えて、SPIの設定にしてください。
/media/uploads/Rhyme/img_2363.jpg

サーミスタについて
POC1.5 では サーミスタは 25℃の時に抵抗値が 50.0kΩになる502AT-11 が
4.95kΩのプルアップ(実際は10kΩx2の並列)で使用されていました。

今回の試作では抵抗値が 10.0kΩの 103AT-11 が
5.1kΩのプルアップで使用されていますので、係数を合わせるために
SMTC502AT-11 のコンストラクタを 
R0 = 10.0
R1 = 5.1
B = 3435
T0 = 298.15
で呼ぶように変更しました。

Committer:
Rhyme
Date:
Tue Apr 24 12:18:10 2018 +0000
Revision:
1:6c54dc8acf96
Parent:
0:0b6732b53bf4
to adjust with 103AT-11 with 5.1k pull-up, the constructor of 502AT-11 is called with R0=10.0, R1=5.1, B=3435, T0=298.15

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Rhyme 0:0b6732b53bf4 1 #include "mbed.h"
Rhyme 0:0b6732b53bf4 2 #include "vt100.h"
Rhyme 0:0b6732b53bf4 3 #include "afLib.h"
Rhyme 0:0b6732b53bf4 4 #include "af_mgr.h"
Rhyme 0:0b6732b53bf4 5 #include "edge_mgr.h"
Rhyme 0:0b6732b53bf4 6 #include "edge_time.h"
Rhyme 0:0b6732b53bf4 7 #include "edge_reset_mgr.h"
Rhyme 0:0b6732b53bf4 8 /**
Rhyme 0:0b6732b53bf4 9 * afero poc1.5 25-Dec-2017 version
Rhyme 0:0b6732b53bf4 10 * from this version, watch dog timer joined again.
Rhyme 0:0b6732b53bf4 11 */
Rhyme 0:0b6732b53bf4 12
Rhyme 0:0b6732b53bf4 13 vt100 *tty = 0 ;
Rhyme 0:0b6732b53bf4 14 uint32_t wait_tolerance = 500 ; /* 5sec */
Rhyme 0:0b6732b53bf4 15 uint32_t connect_tolerance = 60 ; /* after 60 trials, reboot */
Rhyme 0:0b6732b53bf4 16 uint32_t wait_count = 0 ;
Rhyme 0:0b6732b53bf4 17 uint32_t connect_trial_count = 0 ;
Rhyme 0:0b6732b53bf4 18
Rhyme 0:0b6732b53bf4 19 /**
Rhyme 0:0b6732b53bf4 20 * wait_connection
Rhyme 0:0b6732b53bf4 21 * When gConnected == false, which is connection is lost.
Rhyme 0:0b6732b53bf4 22 * Each 5sec check attribute ATTR_WIFI_STDY_STATE to see
Rhyme 0:0b6732b53bf4 23 * if the connection has recovered.
Rhyme 0:0b6732b53bf4 24 * Meantime even if connection is established communicated
Rhyme 0:0b6732b53bf4 25 * data is invalid, so AF_SYSTEM_ASR_STATE is also
Rhyme 0:0b6732b53bf4 26 * checked for gLinked ;
Rhyme 0:0b6732b53bf4 27 * And in case connect_tolerance trials failed
Rhyme 0:0b6732b53bf4 28 * try to reboot the system if it can improve the situation.
Rhyme 0:0b6732b53bf4 29 */
Rhyme 0:0b6732b53bf4 30 void wait_connection(void)
Rhyme 0:0b6732b53bf4 31 {
Rhyme 0:0b6732b53bf4 32 int result ;
Rhyme 0:0b6732b53bf4 33 wait_count++ ;
Rhyme 0:0b6732b53bf4 34 if (wait_count > wait_tolerance) {
Rhyme 0:0b6732b53bf4 35 reset_watch_dog() ;
Rhyme 0:0b6732b53bf4 36 if (gConnected == false) {
Rhyme 0:0b6732b53bf4 37 result = afero->getAttribute(ATTR_WIFI_STDY_STATE) ;
Rhyme 0:0b6732b53bf4 38 if (result != afSUCCESS) {
Rhyme 0:0b6732b53bf4 39 print_af_error(result) ;
Rhyme 0:0b6732b53bf4 40 }
Rhyme 0:0b6732b53bf4 41 }
Rhyme 0:0b6732b53bf4 42 if (gLinked == false) {
Rhyme 0:0b6732b53bf4 43 result = afero->getAttribute(AF_SYSTEM_ASR_STATE) ;
Rhyme 0:0b6732b53bf4 44 if (result != afSUCCESS) {
Rhyme 0:0b6732b53bf4 45 print_af_error(result) ;
Rhyme 0:0b6732b53bf4 46 }
Rhyme 0:0b6732b53bf4 47 }
Rhyme 0:0b6732b53bf4 48 connect_trial_count++ ;
Rhyme 0:0b6732b53bf4 49 if (connect_trial_count > connect_tolerance) {
Rhyme 0:0b6732b53bf4 50 reboot_edge() ;
Rhyme 0:0b6732b53bf4 51 }
Rhyme 0:0b6732b53bf4 52 wait_count = 0 ;
Rhyme 0:0b6732b53bf4 53 }
Rhyme 0:0b6732b53bf4 54 }
Rhyme 0:0b6732b53bf4 55
Rhyme 0:0b6732b53bf4 56 void kill_uart(void)
Rhyme 0:0b6732b53bf4 57 {
Rhyme 0:0b6732b53bf4 58 uint32_t *pta1_ctrl = (uint32_t *)0x40049004 ;
Rhyme 0:0b6732b53bf4 59 uint32_t *pta2_ctrl = (uint32_t *)0x40049008 ;
Rhyme 0:0b6732b53bf4 60 *pta1_ctrl = 0x0 ;
Rhyme 0:0b6732b53bf4 61 *pta2_ctrl = 0x0 ;
Rhyme 0:0b6732b53bf4 62 }
Rhyme 0:0b6732b53bf4 63
Rhyme 0:0b6732b53bf4 64 void init_hardware(void)
Rhyme 0:0b6732b53bf4 65 {
Rhyme 0:0b6732b53bf4 66 int i ;
Rhyme 0:0b6732b53bf4 67 int result ;
Rhyme 0:0b6732b53bf4 68
Rhyme 0:0b6732b53bf4 69 reset_watch_dog() ;
Rhyme 0:0b6732b53bf4 70 init_display() ;
Rhyme 0:0b6732b53bf4 71 reset_watch_dog() ;
Rhyme 0:0b6732b53bf4 72 init_aflib() ;
Rhyme 0:0b6732b53bf4 73 reset_watch_dog() ;
Rhyme 0:0b6732b53bf4 74 kill_uart() ;
Rhyme 0:0b6732b53bf4 75 init_sensors() ;
Rhyme 0:0b6732b53bf4 76 reset_watch_dog() ;
Rhyme 0:0b6732b53bf4 77 init_timer() ;
Rhyme 0:0b6732b53bf4 78
Rhyme 0:0b6732b53bf4 79 while(true) {
Rhyme 0:0b6732b53bf4 80 reset_watch_dog() ;
Rhyme 0:0b6732b53bf4 81 for (i = 0 ; i < 10 ; i++ ) {
Rhyme 0:0b6732b53bf4 82 afero->loop() ;
Rhyme 0:0b6732b53bf4 83 reset_watch_dog() ;
Rhyme 0:0b6732b53bf4 84 }
Rhyme 0:0b6732b53bf4 85 if ((gLinked == true)&&(gConnected == true)) {
Rhyme 0:0b6732b53bf4 86 wait_count = 0 ;
Rhyme 0:0b6732b53bf4 87 connect_trial_count = 0 ;
Rhyme 0:0b6732b53bf4 88 if (afero->isIdle()) {
Rhyme 0:0b6732b53bf4 89 result = init_edge_attribute() ;
Rhyme 0:0b6732b53bf4 90 if (result == 0) {
Rhyme 0:0b6732b53bf4 91 break ;
Rhyme 0:0b6732b53bf4 92 }
Rhyme 0:0b6732b53bf4 93 }
Rhyme 0:0b6732b53bf4 94 } else { /* gLinked == false */
Rhyme 0:0b6732b53bf4 95 wait_connection() ;
Rhyme 0:0b6732b53bf4 96 }
Rhyme 0:0b6732b53bf4 97 wait_ms(10) ;
Rhyme 0:0b6732b53bf4 98 }
Rhyme 0:0b6732b53bf4 99 do {
Rhyme 0:0b6732b53bf4 100 // while(!afero->isIdle()) {
Rhyme 0:0b6732b53bf4 101 reset_watch_dog() ;
Rhyme 0:0b6732b53bf4 102 for (i = 0 ; i < 10 ; i++ ) {
Rhyme 0:0b6732b53bf4 103 afero->loop() ;
Rhyme 0:0b6732b53bf4 104 wait_ms(100) ;
Rhyme 0:0b6732b53bf4 105 }
Rhyme 0:0b6732b53bf4 106 } while(!afero->isIdle()) ;
Rhyme 0:0b6732b53bf4 107 edge_mgr_status = EDGE_MGR_RUNNING ;
Rhyme 0:0b6732b53bf4 108 }
Rhyme 0:0b6732b53bf4 109
Rhyme 0:0b6732b53bf4 110 // main() runs in its own thread in the OS
Rhyme 0:0b6732b53bf4 111 int main() {
Rhyme 0:0b6732b53bf4 112 static uint32_t count_robin = 0 ;
Rhyme 0:0b6732b53bf4 113
Rhyme 0:0b6732b53bf4 114 tty = new vt100() ;
Rhyme 0:0b6732b53bf4 115 // tty->cls() ;
Rhyme 0:0b6732b53bf4 116 printf("Afero test program (ver. %s) started\n", __DATE__) ;
Rhyme 0:0b6732b53bf4 117 printf("=== Reset Reason ===\n") ;
Rhyme 0:0b6732b53bf4 118 print_reset_reason() ;
Rhyme 0:0b6732b53bf4 119 printf("====================\n") ;
Rhyme 0:0b6732b53bf4 120
Rhyme 0:0b6732b53bf4 121 init_hardware() ;
Rhyme 0:0b6732b53bf4 122
Rhyme 0:0b6732b53bf4 123 edge_splash() ;
Rhyme 0:0b6732b53bf4 124
Rhyme 0:0b6732b53bf4 125 while (true) {
Rhyme 0:0b6732b53bf4 126 count_robin++ ;
Rhyme 0:0b6732b53bf4 127 afero->loop() ;
Rhyme 0:0b6732b53bf4 128 if ((gLinked == true)&&(gConnected == true)) {
Rhyme 0:0b6732b53bf4 129 wait_count = 0 ;
Rhyme 0:0b6732b53bf4 130 connect_trial_count = 0 ;
Rhyme 0:0b6732b53bf4 131 if (afero->isIdle()) {
Rhyme 0:0b6732b53bf4 132 edge_loop(count_robin) ;
Rhyme 0:0b6732b53bf4 133 }
Rhyme 0:0b6732b53bf4 134 } else { /* gLinked == false */
Rhyme 0:0b6732b53bf4 135 wait_connection() ;
Rhyme 0:0b6732b53bf4 136 }
Rhyme 0:0b6732b53bf4 137 wait_ms(10) ;
Rhyme 0:0b6732b53bf4 138 }
Rhyme 0:0b6732b53bf4 139 }