FC2カウンター

現在の訪問者数

現在の閲覧者数:

カレンダー

03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -

プロフィール

剣菱P

Author:剣菱P
剣菱Pと申します。
性別:男
年齢:27
二兎を追って一兎も得られないタイプ

マイコンやプログラミング、ニコニコ動画、雑記等
方向性は見えずとも、ちょっとずつ更新していく予定です!

リンクフリーです。
こんなブログでよかったらよろしくお願いしま~す。

公開メール kenbishiP@gmail.com

検索フォーム

最新記事

最新コメント

カテゴリ

メールフォーム

名前:
メール:
件名:
本文:

月別アーカイブ

最新トラックバック

リンク

ブロとも一覧

ブロとも申請フォーム

ランキング

ランキング参加中です。気が向いたらクリックしてあげてください。


にほんブログ村 その他趣味ブログへ
にほんブログ村 その他趣味ブログ 趣味の工作へ

スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

NIOS2奮闘記【17】タイムスタンプ NIOS2奮闘記【15】printf»

コメント

コメントの投稿













管理者にだけ表示を許可する

NIOS2奮闘記【16】割込み


PIOの割込みに挑戦してみる

スイッチを押したら割り込みが発生して、なんらか処理がなされる

まずPIOに割り込み機能を付ける

PIO_1を2bitの入力用にしていたので
20120710_183343.jpg
ダブルクリックして

20120710_183408.jpg
Generate IRQにチェックを入れる

20120710_183426.jpg
右側の所にIRQが追加されているが Jtag_uartのIRQと番号が同じなので番号を変えなきゃいけない
なので、エラーが出ている
20120710_183431.jpg
Error: cpu_0.d_irq: interrupt number conflict (jtag_uart_0.irq,pio_1.irq)on 0

Image2c.jpg
System -> Auto-Assing IRQsをクリックして
自動で番号の割り当てを変更してもらう

20120710_183554.jpg


#include <stdio.h>
#include "sys/alt_stdio.h"
#include "system.h"         //システム情報 
#include "altera_avalon_pio_regs.h"
#include "my_wait.h"
#include "alt_types.h"        //変数の型定義 
#include "sys/alt_irq.h"       //割込み用 

volatile int n = 0;
volatile int edge_capture;

void handle_button_interrupts(void* context, alt_u32 id)
{
    volatile int* edge_capture_ptr = (volatile int*)context; 

    *edge_capture_ptr = IORD_ALTERA_AVALON_PIO_EDGE_CAP(PIO_1_BASE); 
    //***************割り込み処理**********************// 
    n++; 
    printf("%d\n",n); 
    _1ms_wait(400); 

    //**********************************************// 
    IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_1_BASE,0); //キャプチャレジスタリセット 
    IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_1_BASE,0xf); //割り込み機能のリセット 

}

void init_pio()                                 //PIO割込みの初期化 
{
    void* edge_capture_ptr = (void*) &edge_capture; 
    IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_1_BASE,0xf);     //割込み機能のリセット 
    IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_1_BASE,0x0);    //キャプチャレジスタリセット 
    alt_irq_register(PIO_1_IRQ, edge_capture_ptr, handle_button_interrupts); 
                                                  //割り込みハンドラの登録 
}

int main()
{
    init_pio(); 
    printf("Hello from Nios II!\n"); 

    while (1){ 

    }  

    return 0; 
}

20120710_193741.jpg

PIO_1に付けてある2つのスイッチのうちどちらかが押されると数字が帰ってくる

うまく動いた

スポンサーサイト

NIOS2奮闘記【17】タイムスタンプ NIOS2奮闘記【15】printf»

コメント

コメントの投稿













管理者にだけ表示を許可する


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。