c95

コミックマーケット95

出すぞ

  • JTAG
  • SWD

抵抗つけろよとかそういう話,ARMの規格書とか参照 .

HALはタイマ使ってるので,RTOS使うなら別に一つ割当してやる話
LLAPIやっちゃう?

STM32 microcontroller debug toolboxより解説できそうな部分をいかに抜粋,この辺は書きたいなぁ

一部のレジスタ設定してやればよい.
ハンドラに飛んでくれるようになる(はず)

基本的にGCC(SW4STM32含む)ベース
基本的にint __io_putchar(int ch)を定義してやることで解決
syscall.cの有無,コンパイラにより追加で関数が必要になる.基本的に取り上げるのはGCCだけだけどね

#include "stdio.h"
int __io_putchar(int ch){
  HAL_UART_Transmit(&UartHandle, (uint8_t *)&ch, 1, 0xFFFF);
  return ch;
}

syscall.cを使用しない場合には以下も追加

int _write(int file, char *ptr, int len){
  int DataIdx;
  for (DataIdx = 0; DataIdx < len; DataIdx++){
    __io_putchar( *ptr++ );
  }
  return len;
}
#include "stdio.h"
int __io_putchar(int ch){
  ITM_SendChar(ch);
  return(ch);
}

syscall.cを使用しない場合には以下も追加

int _write(int file, char *ptr, int len){
  int DataIdx;
  for (DataIdx = 0; DataIdx < len; DataIdx++){
    __io_putchar(*ptr++);
  }
  return len;
}

EclipseのWEBヘルプを参照
各ソフトウェアのバージョンを確認する,いまのところ最新入れとけば問題ない

以下の事項に注意しよう

  • ソフトウェアブレークポイント(BKPT)を取り除く#ifdef DEBUGなどのステートメントを使う
  • printf()が最終製品がきちんと動く関数なのか確認する,semihostingやSWOはhardfaultを引き起こすので注意
  • コードの最適化レベルを確認する.
  • 適切なFaultハンドラを実装する
  • DBGMCUレジスタをデフォルトにリセットする.

抵抗2つとMOSFET1つでok
MOSFETにダイオードが入ってることがミソ
Vgs(th)が低電圧側の電源電圧より低いこと,Vdsが高電圧側の電源電圧より高いMOSFETを選んでやれば,任意のレベル変換ができる?
小信号用のFETを使えばいいと思うが,めちゃくちゃ高速な信号のレベル変換には適さないと思う,それが問題になるレベルであれば素直にバッファ回路を組んで上げるほうが確実

  • c95.txt
  • 最終更新: 2018/12/03
  • by yuki_kusakabe