int main(void){ rpi_init(); printf("HelloWorld\n"); return 0; }
int main(void){ rpi_init(); // JTAG用設定 // 3.3V : ARM_VREF // GPIO22 (ALT4): ARM_TRST // GPIO4 (ALT5): ARM_TDI // GPIO27 (ALT4): ARM_TMS // GPIO25 (ALT4): ARM_TCK // GPIO24 (ALT4): ARM_TDO // GND : ARM_GND pinMode(22, ALT4); pinMode(4, ALT5); pinMode(27, ALT4); pinMode(25, ALT4); pinMode(24, ALT4); // LED init pinMode(47,OUTPUT); printf("main: cpsr = %08x\n",getmode()); while(1){ digitalWrite(47, HIGH); delay(1000); digitalWrite(47, LOW); delay(1000); _swi_caller(10); } return 0; }
int main(void){ rpi_init(); /**** 初期設定開始 ***/ // UART無効化 *UART0_CR = 0; //ポートの設定 pinMode(14,INPUT_PULLDOWN); pinMode(15,INPUT_PULLDOWN); pinMode(14,ALT0); pinMode(15,ALT0); // ボーレートの設定 //(3000000 / (16 * 115200) = 1.627 //(0.627*64)+0.5 = 40 // IBRD 1 FBRD 40 *UART0_IBRD = 1; *UART0_FBRD = 40; // LCRH // stick parity dis, 8bit, FIFO en, two stop bit no, odd parity, parity dis, break no *UART0_LCRH = 0x70; // CTS dis, RTS dis, OUT1-2=0, RTS dis, DTR dis, RXE en, TXE en, loop back dis, SIRLP=0, SIREN=0, UARTEN en *UART0_CR = 0x0301; /**** 初期設定終了 ***/ return 0; }
int main(void){ rpi_init(); /**** 初期設定開始 ***/ // UART無効化 *UART0_CR = 0; //ポートの設定 pinMode(14,INPUT_PULLDOWN); pinMode(15,INPUT_PULLDOWN); pinMode(14,ALT0); pinMode(15,ALT0); // ボーレートの設定 //(3000000 / (16 * 115200) = 1.627 //(0.627*64)+0.5 = 40 // IBRD 1 FBRD 40 *UART0_IBRD = 1; *UART0_FBRD = 40; // LCRH // stick parity dis, 8bit, FIFO en, two stop bit no, odd parity, parity dis, break no *UART0_LCRH = 0x70; // CR // CTS dis, RTS dis, OUT1-2=0, RTS dis, DTR dis, RXE en, TXE en, loop back dis, SIRLP=0, SIREN=0, UARTEN en *UART0_CR = 0x0301; /**** 初期設定終了 ***/ char echo[256]; int i,c,length; while(1){ length = 0; // 255文字以下で改行(LF)が来るまで読み込む // (255文字以下の文字列を読み込む) do{ // 受信FIFOにデータが来るのを待つ while (*UART0_FR & (1 << 4)); // 受信データを読み込む c = *UART0_DR; echo[length] = c & 0xff; length++; }while(c != '\n' && length < 256); // 受け取った文字列を返信 for(i=0;i<length;i++){ // FIFOが空くまで待つ while(*UART0_FR & (0x01 << 5)); // 1文字ずつ送る *UART0_DR = echo[i]; } } return 0; }
int main(void){ rpi_init(); Timer_initialize(4000000); Timer_attachInterrupt(LEDblink); while(1); return 0; }
int main(void) { rpi_init(); while(1) { // 1秒ごとにHelloWorld送信 printf("HelloWorld\n"); delay(1000); } return 0; }
int main(void){ rpi_init(); // GPIO16をOutputにセット *(volatile unsigned int *)GPFSEL1 = 0x01 << (3*6); // GPIO16をLにセット *(volatile unsigned int *)GPCLR0 = 0x01 << 16; while(1); return 0; }
int main(void){ rpi_init(); // GPIO16をOutputにセット pinMode(16,OUTPUT); // GPIO18をINPUT_PULLUPにセット pinMode(18,INPUT_PULLUP); digitalWrite(16,HIGH); while(1){ // GPIO18がLOW(=ボタンが押された)ならLED点灯 if(digitalRead(18) == LOW){ digitalWrite(16,LOW); } else{ digitalWrite(16,HIGH); } } return 0; }
int main(void){ rpi_init(); // debug pinMode(22, ALT4); pinMode(4, ALT5); pinMode(27, ALT4); pinMode(25, ALT4); pinMode(24, ALT4); double d=10; uint32_t ui = 100; d = (d + ui) / 1000.0; printf("d = %lf",d); while(1); return 0; }
int main(void){ rpi_init(); // システムタイマーを初期化 *(volatile unsigned int *)SYST_CHI = 0; *(volatile unsigned int *)SYST_CLO = 0; // GPIO16をOutputにセット *(volatile unsigned int *)GPFSEL1 |= 0x01 << (3*6); while(1){ // GPIO16をLにセット *(volatile unsigned int *)GPCLR0 |= 0x01 << 16; // wait 500ms delay_ms(500); // GPIO16をHにセット *(volatile unsigned int *)GPSET0 |= 0x01 << 16; // wait 500ms delay_ms(500); } return 0; }
int main(void){ uint32_t rawtemp; double temp; rpi_init(); // pin setting // SS pinMode( 8, ALT0); // MISO pinMode( 9, ALT0); // MOSI pinMode(10, ALT0); // SCLK pinMode(11, ALT0); // SPI0 configure *SPI0_CS = 0; // CSPOL0=HIGH, TA=0, CS=CS0 *SPI0_CS |= SPI0_CS_CSPOL0_LOW | SPI0_CS_CS_CS0; // 送受信バッファ初期化 *SPI0_CS |= SPI0_CS_CLEAR_ALL; // Clock setting // 3.81[kHz] *SPI0_CLK = 0; // MODE10 *SPI0_CS |= SPI0_CS_MODE_11; // software reset // 通信開始(TA = 1) *SPI0_CS |= SPI0_CS_TA_ACTIVE; // 送信可能待ち(wait TXD) while(!(*SPI0_CS & SPI0_CS_TXD_MASK)); // ソフトウェアリセット(32bit連続1書き込み) *SPI0_FIFO = 0xFF; *SPI0_FIFO = 0xFF; *SPI0_FIFO = 0xFF; *SPI0_FIFO = 0xFF; // 送信完了待ち while(!(*SPI0_CS & SPI0_CS_DONE_MASK)); // 通信終了(TA = 0) *SPI0_CS &= ~SPI0_CS_TA_ACTIVE; delay(50); // Configuretionレジスタ設定 // 通信開始(TA = 1) *SPI0_CS |= SPI0_CS_TA_ACTIVE; // 送信可能待ち(wait TXD) while(!(*SPI0_CS & SPI0_CS_TXD_MASK)); // Command Byte送信 // Resister address=0x01, Write mode *SPI0_FIFO = ADT7310_CMD_ADDR_CONFIG | ADT7310_CMD_WRITE; // Configuretion resisterをセット // Resolution=16bit, Oparation mode=standard *SPI0_FIFO = 0x80; // 送信完了待ち while(!(*SPI0_CS & SPI0_CS_DONE_MASK)); // 通信終了(TA = 0) *SPI0_CS &= ~SPI0_CS_TA_ACTIVE; delay(500); // 通信開始(TA = 1) *SPI0_CS |= SPI0_CS_TA_ACTIVE; // Command Byte送信 // Resister address=0x02, Read mode, Conrinuousモード *SPI0_FIFO = ADT7310_CMD_ADDR_TEMP | ADT7310_CMD_READ | ADT7310_CMD_CONRINUOUS; // 転送完了待ち while(!(*SPI0_CS & SPI0_CS_DONE_MASK)); // 通信終了(TA = 0) *SPI0_CS &= ~SPI0_CS_TA_ACTIVE; delay(500); while(1){ // init rawtemp = 0; temp = 0.0; // 送受信バッファ初期化 *SPI0_CS |= SPI0_CS_CLEAR_ALL; // start get temperature // 通信開始(TA = 1) *SPI0_CS |= SPI0_CS_TA_ACTIVE; // 温度読み込み(Conrinuousモード) *SPI0_FIFO = 0; *SPI0_FIFO = 0; // 受信待ち while(!(*SPI0_CS & SPI0_CS_RXD_MASK)); // 上位8bit受信 rawtemp = *SPI0_FIFO; rawtemp = rawtemp << 8; // 受信待ち while(!(*SPI0_CS & SPI0_CS_RXD_MASK)); // 下位8bit受信 rawtemp |= *SPI0_FIFO; // 転送完了待ち while(!(*SPI0_CS & SPI0_CS_DONE_MASK)); // 通信終了(TA = 0) *SPI0_CS &= ~SPI0_CS_TA_ACTIVE; // end get temperature // 温度計算 if(rawtemp & 0x8000){ // MSBが1ならネガティブ temp = (rawtemp - 32768) / 128.0; } else{ // MSBが0ならポジティブ temp = rawtemp / 128.0; } // temperetureレジスタ値表示 printf("temperature register : 0x%04x\n",rawtemp); // 温度表示 printf("temperature : %f (dec)\n",temp); // wait 3sec delay(3000); } return 0; }