这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » Renesas » 一步一步玩转SAKURA板 [离线编译--HEW+GCC]

共19条 1/2 1 2 跳转至

一步一步玩转SAKURA板 [离线编译--HEW+GCC]

菜鸟
2012-11-08 15:34:36     打赏
如何连接Sakura和PC,以及如何使用Renesas Web Compiler请参考:
http://sakuraboard.net/index_en.html

或参考campozeng的进程贴,一步步写得很详细  http://forum.eepw.com.cn/thread/222049/1#2

进程:
11-8  No.1LED,一闪一闪亮晶晶(Digital)
11-8  No.2 呼吸吧,LED灯(AnalogWrite)
11-9  No.3 DUO/RE/MI 叫醒你的耳朵(Tone)
11-16 No.4 时间到啦,定时器生成10ms的周期中断(timer)
11-20 No.5 串口PC通讯,请问你找谁(Serial)
11-23 No.6 等待有多长,等待看得见(AnalogRead)
12-26 HEW+GCC 离线编译
01-9  Arduino文档参考

板子露个脸,某人的微单还是不错的



关键词: 一步     玩转     SAKURA     离线     编译     --HEW+    

菜鸟
2012-11-08 15:40:58     打赏
2楼
No.1 LED,一闪一闪亮晶晶

硬件构成

代码:  gr_sketch.cpp
- - - - - - - - - - - - - - - - - - -  - -  - -  -
#include <rxduino.h>

void setup()
{
    pinMode(0, OUTPUT);
}

void loop()
{
    digitalWrite(0, 1);
    delay(100);
    digitalWrite(0, 0);
    delay(100);
}

- - - - - - - - - - - - - - - - - - - - - - - - - -
接口函数 
Digital I/O
pinMode
概要     选择输入或输出模式
语法     pinMode(pin, mode)
参数     pin: 引脚号
    mode: INPUT(输入)、OUTPUT(输出)、INPUT_PULLUP(输入上拉)
返回值     无

digitalWrite
概要     引脚输出高/低电平。
语法     digitalWrite(pin, value)
参数     pin: 引脚号
    value:HIGH、LOW
返回值     无

digitalRead
概要     从引脚读入高/低电平
语法     digitaRead(pin)
参数     pin: 引脚号
返回值     HIGH、 LOW

void delay  ( unsigned long  ms )

菜鸟
2012-11-08 15:58:10     打赏
3楼
NO2  呼吸吧,LED灯

硬件构成

代码:  gr_sketch.cpp
- - - - - - - - - - - - - - - - - - -  - -  - -  -
#include <rxduino.h>
unsigned char g_bright = 0;

void setup()
{
    pinMode(0, OUTPUT);
}

void loop()
{
    analogWrite(0, g_bright);
    delay(10);
    g_bright++;
    if ( g_bright > 200 ) g_bright = 0;
}

- - - - - - - - - - - - - - - - - - - - - - -
接口函数
void analogWrite  ( int  analog_portnum,    int  val8bit   )
 analog_portnum:引脚编号
 val8bit:输出PWM占空比(0~255)


菜鸟
2012-11-08 16:33:03     打赏
4楼
不学跟不上大家的进程啊 跟着你后面走

菜鸟
2012-11-09 10:06:14     打赏
5楼
NO3.  DUO/RE/MI 叫醒你的耳朵

硬件构成
   --无源蜂鸣器

代码:  gr_sketch.cpp
- - - - - - - - - - - - - - - - - - -  - - - - -
#include <rxduino.h>
void setup()
{
    pinMode(0,OUTPUT);
}

void loop()
{
    tone(0, 523);
    delay(500);
    tone(0, 587);
    delay(500);
    tone(0, 659);
    delay(500);
}
- - - - - - - - - - - - - - - - - - - - - - -
接口函数
void tone  ( int  pin,    int  frequency,    int  duration_ms = 0   )
生成矩形波
pin     IO
frequency 输出频率[Hz] 
duration_ms 持续时间[ms]。0为持续输出,可省略

菜鸟
2012-11-09 10:09:20     打赏
6楼
元芳,你怎么看?

菜鸟
2012-11-16 15:13:33     打赏
7楼

No.4 时间到啦,定时器生成10ms的周期中断(timer)

身份被一步步地泄露,唉....

话说板子里的确没有定时器周期性中断函数可以用,还真不习惯


粗略看了下工程,基本库里用了CMT定时器,那我用TMR试试,用的8位定时器生成一个10ms的周期中断,Excep_TMR0_CMIA0是对应的中断函数,在intvect.c里有矢量声明
跑下来可以断定外设时钟PCLK果然是48MHz了...

#include <rxduino.h>
#include "iodefine_gcc63n.h"
#include "intvect.h"

void TMR0_init(void);

void TMR0_init(void)
{
    SYSTEM.PRCR.WORD = 0xA502;    // setting PRCR1 - writes enabled
    MSTP(TMR0) = 0;
    SYSTEM.PRCR.WORD = 0xA500;    // clearing PRCR1 - writes disabled
   
    TMR0.TCORA = 58;            // 10ms interrupt rate
    TMR0.TCR.BIT.CCLR = 1;        // cleared by compare match A
    TMR0.TCR.BIT.CMIEA = 1;        // compare match A interrupt enabled
    TMR0.TCCR.BIT.CSS = 1;
    TMR0.TCCR.BIT.CKS = 6;        // counter = Pclk/8192 (48MHz/8192)

    IEN(TMR0, CMIA0) = 1;        // enable compare match interrupt A
    IPR(TMR0, CMIA0) = 15;        // compare match interrupt A priority
    IR(TMR0, CMIA0) = 0;        // clear compare match interrupt A flag
}

void Excep_TMR0_CMIA0(void)
{
   /*hahahahahaha*/
}

RX63N的定时器资源丰富,但很多已经被众多的应用占用了
CMT0用于系统定时器(6MHz计数,1ms周期)
CMT1~CMT3 用于tone函数
MTU0~MTU5用于伺服,TPU0~~5用于analogwrite

TMR是8位定时器,但是2个TMR定时器可以级联组成16位定时器
TPU6~TPU11虽然没有用,但中断号与MTU冲突,如果使用中断的话,不建议使用


菜鸟
2012-11-20 16:17:10     打赏
8楼

No.5 串口PC通讯,请问你找谁(Serial)

campozeng同学写得太详细了,为了不啰嗦,简单写写吧
先到这个网页里下个驱动,campozeng上传到EEPW了:
http://share.eepw.com.cn/share/download/id/79366
我系统是win7-32位的,可以用.

代码很简单:
#include <rxduino.h>

#define D_INTERVAL          1000

void setup()
{
    Serial.begin( 38400 ); //
}

void loop()
{
    Serial.print("Renesas little fish");
    delay(D_INTERVAL);

}

看看初始化的Serial.begin(int speed, port)函数:\
speed: 波特率
port: 使用的串口(如果省略、使用默认的USB转虚拟COM口)

            - SCI_NONE : 不使用SCI
            - SCI_AUTO : 自动选择SCI
            - SCI_USB0 : 使用USB0虚拟COM口
            - SCI_SCI0P2x : SCI0 (PIN_P20,PIN_P21/IO0(RxD)、IO1(TxD))
            - SCI_SCI2A : SCI2A (PIN_P13,PIN_12/IO30(RxD)和IO31(TxD))
            - SCI_SCI2B : SCI2B (PIN_P50,PIN_P52/IO24(TxD)、IO26(RxD)).访问XBee时使用
            - SCI_SCI6B : SCI6B (PIN_P32,PIN_P33/IO6(TxD)、IO7(RxD))

向串口输出ASCII数据
Serial.print(val)
Serial.print(val, format)
其中format:BIN:2进制、OCT:8进制、DEC:10进制、HEX:16进制
可参考arduino的介绍:http://arduino.cc/en/Serial/Print

电脑上随便找个串口调试软件,设定波特率38400,8数据位,1停止位,无校验,打开串口就可以看到接收的数据了,So Easy


菜鸟
2012-11-21 08:43:10     打赏
9楼
我也是win7 32bit的,设备管理器上Sakura板里有问号,你装驱动看看

菜鸟
2012-11-23 11:29:28     打赏
10楼

No.6 等待有多长,等待看得见(AnalogRead)

弄了个电位器,补上analogRead函数,闪闪板上的灯,很简单也算更新吧,总要给自己周末前一个交代的说
本来想也去折腾SD卡,老是忘记带SD卡....
电位器硬件连接 1-3.3V  2-AN0 3-GND

/*GR-SAKURA Sketch Template Version: V1.02*/
#include <rxduino.h>

#include <rxduino.h>
unsigned int readvalue=0;
void setup()
{
    pinMode(PIN_LED0,OUTPUT);   
    analogReference(DEFAULT);  
    Serial.begin( 38400 ); //

}
void loop()
{
    readvalue = analogRead(A0)*2;
    Serial.print(readvalue,DEC);
    digitalWrite(PIN_LED0, HIGH);
    delay(readvalue);
    digitalWrite(PIN_LED0, LOW);
    delay(readvalue);
}


- -  - - - - -- - - - - -- -- --- -- -- - - - - -- - - - -
int analogRead(analog_pin)
analog_pin:模拟引脚(A0~A7,0~7)
返回值:0~1023,选择12位AD转换时为0~4096

注意不要向模拟输入引脚输入超过3.3V的电压,analogReference(mode)函数默认为与Arduino兼容的5V参考电压,所以如果输入3.3V电压,analogRead返回的值为675,
附analogReference(mode)
mode:
     DEFAULT:5.0V (Arduino兼容)
     INTERNAL:1.1V (内部电压)
     EXTERNAL:AVREF引脚电压
     RAW12BIT:3.3V (12bitA/D变换)


共19条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]