ではLED10個を全部点滅させるにはどうするか?であるが、PIOの場合、与える値のビットフィールドがそのままそれぞれのLEDのOn/Offとなる。つまり0bit目(LSB)がLED0、1bit目がLED1……となって、9bit目がLED9に相当する。というわけで、プログラムをList 3の様に書き換えて実行した結果がこちら(Movie02)である。ちゃんと全LEDが正しく点滅するのがお分かりいただけるかと思う。
List 3: /* * "Hello World" example. * * This example prints 'Hello from Nios II' to the STDOUT stream. It runs on * the Nios II 'standard', 'full_featured', 'fast', and 'low_cost' example * designs. It runs with or without the MicroC/OS-II RTOS and requires a STDOUT * device in your system's hardware. * The memory footprint of this hosted application is ~69 kbytes by default * using the standard reference design. * * For a reduced footprint version of this template, and an explanation of how * to reduce the memory footprint for a given application, see the * "small_hello_world" template. * */ #include <stdio.h> #include "system.h" #include "altera_avalon_pio_regs.h" int main() { printf("Hello from Nios II!\n"); unsigned long cnt = 0; long delay; while(1) { IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, (cnt&0x3ff)); for(delay = 0; delay < 20000; delay++); cnt++; } return 0; } endmodule
次回はもう少しいろいろな周辺回路をNIOS IIからアクセスしてみたい。
Copyright © ITmedia, Inc. All Rights Reserved.