いよいよUSBに対応したMSP430の新製品が出るようです(TIのニュースリリース)。
MSP430F5xxのページ
パッケージがよく分からないです。64RGCとか80ZQEとか。TIでの呼び名なんでしょうか。
MSP430F5xxのページ
パッケージがよく分からないです。64RGCとか80ZQEとか。TIでの呼び名なんでしょうか。
#include <Wire.h> // Arduino i2c-lcd // Dig 2 ----- 1pin rst (pull-up 10k ohm) // Ana 5 ----- 2pin scl (pull-up 2.2k ohm) // Ana 4 ----- 3pin sda (pull-up 2.2k ohm) // GND ------- 4pin // 5V -------- 5pin int ledPin = 13; int resetPin = 2; int sdaPin = 18; // analog pin 4 int sclPin = 19; // analog pin 5 int i2cadr = 0x3e; byte contrast = 7; // 0-63 5V系だとかなり少なくする void lcd_cmd(byte x) { Wire.beginTransmission(i2cadr); Wire.send(0x00); Wire.send(x); Wire.endTransmission(); } void lcd_data(byte x) { Wire.beginTransmission(i2cadr); Wire.send(0x40); Wire.send(x); Wire.endTransmission(); } void lcd_puts(const char *s) { while(*s) lcd_data(*s++); } void lcd_init() { // reset delay(500); pinMode(resetPin, OUTPUT); digitalWrite(resetPin, LOW); delay(1); digitalWrite(resetPin, HIGH); delay(10); // LCD initialize delay(40); Wire.begin(); lcd_cmd(0x38); // function set lcd_cmd(0x39); // function set lcd_cmd(0x14); // interval osc lcd_cmd(0x70 | (contrast & 15)); // contrast low lcd_cmd(0x5c | (contrast >> 4 & 3)); // contrast high / icon / power lcd_cmd(0x6c); // follower control delay(300); lcd_cmd(0x38); // function set lcd_cmd(0x0c); // display on lcd_cmd(0x01); // clear display delay(2); } void lcd_move(byte pos){ lcd_cmd(0x80 | pos); } void setup() { lcd_init(); lcd_puts("Hello, Arduino!"); lcd_move(0x40); lcd_puts("i2c LCD module"); pinMode(ledPin, OUTPUT); // Lチカ } void loop() { digitalWrite(ledPin, HIGH); delay(100); digitalWrite(ledPin, LOW); delay(500); }
// dice_top.vhd `default_nettype none typedef enum logic [2:0] { ST1, ST2, ST3, ST4, ST5, ST6 } STATE; typedef struct packed { logic a_n, b_n, c_n, d_n, e_n, f_n, g_n; } SEVENSEG; module dice_top ( input reset_sw, input clk, input roll, output [3:0] an_n, output a_n, b_n, c_n, d_n, e_n, f_n, g_n, output dp_n); logic roll_sig; // とりあえずなんでもlogic logic roll_ena; STATE state; assign an_n = 4'b1110; assign dp_n = 1'b1; reject_chatter inst_reject_chatter ( .* // パラメータ完全省略 ); dice_state_machine inst_dice_sm ( .*, .roll(roll_sig) // 違う所だけ書くのもあり ); seven_seg_dec inst_seven_seg_dec ( .state(state), // 全パラメータ記述 .ss({a_n, b_n, c_n, d_n, e_n, f_n, g_n}) // packed構造体渡し ); endmodule // reject_chatter.vhd module reject_chatter ( input reset_sw, input clk, input roll, output roll_sig, output logic roll_ena); // parameter frequency_KHz = 1; parameter frequency_KHz = 50000; parameter divided_200Hz = frequency_KHz * 5; logic [17:0] sw_cnt; logic [1:0] roll_cnt; logic roll_node; // 200Hz, 5ms always_ff @(posedge clk, negedge reset_sw) // FF指定 コンマ区切り if(~reset_sw) sw_cnt <= 18'h0; else if(sw_cnt == (divided_200Hz - 1)) sw_cnt <= 18'h0; else sw_cnt <= sw_cnt + 1; always_ff @(posedge clk, negedge reset_sw) if(~reset_sw) roll_node <= 1'b1; else if(sw_cnt == (divided_200Hz - 1)) roll_node <= roll; assign roll_sig = roll_node; // 50Hz, 20ms always_ff @(posedge clk, negedge reset_sw) if(~reset_sw) begin roll_cnt <= 2'b00; roll_ena <= 1'b0; end else if(sw_cnt == (divided_200Hz - 1)) if(roll_cnt == 2'b11) begin roll_cnt <= 2'b00; roll_ena <= 1'b1; end else begin roll_cnt <= roll_cnt + 1; roll_ena <= 1'b0; end else roll_ena <= 1'b0; endmodule // dice_state_machine.vhd module dice_state_machine ( input reset_sw, input clk, input roll, roll_ena, output STATE state); // enum出力 always_ff @(posedge clk, negedge reset_sw) if(~reset_sw) state <= ST1; else if(roll & roll_ena) unique case(state) ST1 : state <= ST2; ST2 : state <= ST3; ST3 : state <= ST4; ST4 : state <= ST5; ST5 : state <= ST6; ST6 : state <= ST1; default : state <= ST1; endcase endmodule // seven_seg_dec.vhd module seven_seg_dec ( input STATE state, output SEVENSEG ss); always_comb // 組み合わせ回路指定 unique case(state) // uniqueなcase ST1: begin ss.a_n = 1'b1; ss.b_n = 1'b0; ss.c_n = 1'b0; ss.d_n = 1'b1; ss.e_n = 1'b1; ss.f_n = 1'b1; ss.g_n = 1'b1; end ST2: ss = 7'b0010010; // こんな書き方もあり ST3: ss = 7'b0_0_0_0_1_1_0; ST4: ss = {1'b1, 1'b0, 1'b0, 1'b1, 1'b1, 1'b0, 1'b0}; ST5: ss = 7'b0100100; ST6: ss = 7'b0100000; default : ss = 7'b1001111; endcase endmodule
typedef enum logic [5:0] { ST1 = 6'b100000, ST2 = 6'b010000, ST3 = 6'b001000, ST4 = 6'b000100, ST5 = 6'b000010, ST6 = 6'b000001 } STATE;