GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
下記コードでP5_10 から、
3秒おきに20kHzのDu50%の波形がでることを期待しているのですが、常時LOWのままです。
どこか、ミスしていますか?
何度も、データシートの確認はしていて、TCNT_4が動作していることも確認済みです
ポートの設定が怪しそうではありますが、
何度確認してもあっています。。
#include "mbed.h"#include "ESP32Interface.h"#include "TCPSocket.h"#include "TCPServer.h"#include "rtos.h"#include "iodefine.h"#include "Servo.h"
//Servo myservo(P5_14);//void servo_thread(void const *args)//{// while(true) {// for(int i=0; i<100; i++) {// myservo = i/100.0;// Thread::wait(20);// }// for(int i=100; i>0; i--) {// myservo = i/100.0;// Thread::wait(20);// }// }//}
DigitalOut lamp(P5_15);DigitalOut kaiten(P5_9);#define KAITEN_PIN 10 //TIOC4C P5_10 D5void kaiten_thread(void const *args){ MTU2TCR_4 = (1<<7)|(1<<5); //TGRCのコンペアマッチ/立ち上がりエッジでカウント/32MHz(分周なし)カウンタクロックの選択 MTU2TIORL_4 = (1<<1)|(1<<0); //初期出力は0出力//コンペアマッチでトグル出力 MTU2TGRC_4=800; //周期20kHz MTU2TGRD_4=400; //Duty:50% MTU2TMDR_4 = (1<<1);//PWMモード1
GPIOPIBC5 &= ~(1<<KAITEN_PIN); GPIOPBDC5 &= ~(1<<KAITEN_PIN); GPIOPM5 |= (1<<KAITEN_PIN); GPIOPMC5 &= ~(1<<KAITEN_PIN); GPIOPIPC5 &= ~(1<<KAITEN_PIN);
GPIOPBDC5 &= ~(1<<KAITEN_PIN); GPIOPFC5 &= ~(1<<KAITEN_PIN); GPIOPFCE5 |= (1<<KAITEN_PIN); GPIOPFCAE5 &= ~(1<<KAITEN_PIN); GPIOPMC5 |= (1<<KAITEN_PIN); GPIOPM5 &= ~(1<<KAITEN_PIN);
lamp = 1; kaiten = 1; while(true) { static bool flag = 1; if(flag==1) { lamp = 0; kaiten = 0; MTU2TSTR |= (1<<7); //カウント動作開始 } else { lamp = 1; kaiten = 1; MTU2TSTR &= ~(1<<7); //カウント動作停止 } printf("%d\n", MTU2TCNT_4); flag = flag^0x01; Thread::wait(3000); }}
ESP32Interface wifi(P5_3, P3_14, P7_1, P0_1, false);void wifi_init(){ printf("NetworkSocketAPI Example\r\n");
wifi.connect("xxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxx"); printf("IP address: %s\n", wifi.get_ip_address()); printf("MAC address: %s\n", wifi.get_mac_address());
TCPSocket socket(&wifi); socket.connect("4.ifcfg.me", 23);
char buffer[64]; int count = socket.recv(buffer, sizeof(buffer)); buffer[count]='\0'; printf("public IP address is: %.15s\n", &buffer[15]);
socket.close();// wifi.disconnect();
printf("Done\n");}
#define TCP_RESPONSE "OK\n"
TCPServer srv;TCPSocket client_sock;SocketAddress client_addr;
void tcpserver_thread(void const *args){ wifi_init();
srv.open(&wifi); printf("open\n"); srv.bind(wifi.get_ip_address(), 8558); printf("bind\n"); srv.listen(1); printf("listen\n");
while(1) { srv.accept(&client_sock, &client_addr); printf("accept %s:%d\n", client_addr.get_ip_address(), client_addr.get_port());
char buffer[64]; int count = client_sock.recv(buffer, sizeof(buffer)); buffer[count]='\0';
printf("%d:character received\n", count);
printf("%s", buffer);
client_sock.send(TCP_RESPONSE, strlen(TCP_RESPONSE)); printf("send\n");
client_sock.close(); printf("close\n"); }//end while}
int main(){ Thread t(tcpserver_thread, NULL, osPriorityNormal, 300 * 1024); Thread t2(kaiten_thread, NULL, osPriorityAboveNormal, 10 * 1024); // Thread t3(servo_thread, NULL, osPriorityHigh, 10 * 1024); Thread::wait(osWaitForever);}