H8_3048F

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

参考材料:
1.Program Explanation Manual kit07 Version.pdf 2.北斗公司的 RY3048FONEH_s.pdf 3.日立 H8 3048系列单片机应用技术
定时单元( ) 集成定时单元(ITO)
CPU初始化程序
510 : /* ITU0 interrupt every 1 ms */ 511 : ITU0_TCR = 0x23; 512 : ITU0_GRA = TIMER_CYCLE; 513 : ITU0_IER = 0x01; Lines omitted 524 : /* ITU count start */ 525 : ITU_STR = 0x09;
• DDR 数据方向寄存器 • DR 数据寄存器
主要使用到的接口:
• Port 7:CPU板通过port 7口读取各个传感器 的状态,并通过计算输出的内容,决定舵 机转动的方向以及角度。
• Port B:通过port B将输出的数据传送给舵 机。
Port B Detail
注意:
没有被连接的接口一定要设置为output.如果未连接导 线的端口被设置为输入,可能会对CPU造成不可预测的 影响。 Port 7 只能被设置为输入。在没使用时应当连接上拉 电阻或者下拉电阻。
ITU0寄存器
• ITU0_TCR 可以为外部四种时钟输入或者四 种内部时钟输入。 • ITU0 中的TCNT记数寄存器记数,并与GRA 寄存器进行比较,相同则触发中断。
ITU0 中断函数
531 : #pragma interrupt( interrupt_timer0 ) 532 : void interrupt_timer0( void ) 533 : { 534 : ITU0_TSR &= 0xfe; /* Clear flag */ 535 : cnt0++; 536 : cnt1++; 537 : }
void Speed() { …… /* Left motor */ if( accele_l >= 0 ) { PBDR &= 0xfb; ITU3_BRB = (unsigned long)speed_max* accele_l / 100; } else { PBDR |= 0x04; accele_l = -accele_l; ITU3_BRB = (unsigned long)speed_max * accele_l / 100; } /* Right motor */ if( accele_r >= 0 ) { PBDR &= 0xf7; ITU4_BRA = (unsigned long)speed_max* accele_r / 100; } else { PBDR |= 0x08; accele_r = -accele_r; ITU4_BRA = (unsigned long)speed_max * accele_r / 100; } }
输入输出引脚篇
CPU初始化程序
/************************************************************************/ 492 : /* Initialize H8/3048F-ONE on-chip peripheral functions */ 493 : /************************************************************************/ 494 : void init( void ) 495 : { 496 : /*I/O port input/output settings */ 497 : P1DDR = 0xff; 498 : P2DDR = 0xff; 499 : P3DDR = 0xff; 500 : P4DDR = 0xff; 501 : P5DDR = 0xff; 502 : P6DDR = 0xf0; /* DIP switches on CPU board */ 503 : P8DDR = 0xff; 504 : P9DDR = 0xf7; /* Communication ports */ 505 : PADDR = 0xff; 506 : PBDR = 0xc0; 507 : PBDDR = 0xfe; /* Motor drive board, Vol. 3 */ 508 : /* Note: Pin 7 on the sensor board is input-only, so no I/O setting is needed. */
复位同步PWM含义简单举例:
void handle( int angle ) { …… { if(angle-lastDegree>4) for(i=lastDegree;i<angle;i+=3) ITU4_BRB = SERVO_CENTER - i * HANDLE_STEP; else if(angle-lastDegree<-4) for(i=lastDegree;i>angle;i-=3) ITU4_BRB = SERVO_CENTER - i * HANDLE_STEP; ITU4_BRB = SERVO_CENTER - angle * HANDLE_STEP; lastDegree = angle; } }
H8/3048F CPU BOARD 在瑞萨模型车上的使用说明
H8/3048F CPU概述
• 内部体系结构为 32位 • 16个16位通用寄存器(可用作8个32位寄存 器使用) • 128K字节ROM,4K字节RAM • 最高时钟周期速率为18MHz • 7个外部引脚中断 NMI IRQ1-IRQ6 • 30个内部中断 • 16位集成定时单元(ITU)
• ITU0 中 TSR寄存器 为定时器状态寄存器。
中断运行其他条件: 中断运行其他条件: 1.在程序的开始开中断: void main( void ) { init(); /* Initialization */ set_ccr( 0x00 ); /* Make sure to enable interrupts. */
2.在工程文件的.src文件中修改中断向量表 .DATA.L RESERVE ; 24 H'000060 ITU0 IMIA0
.DATA.L
_interrupt_timer0
; 24 H'000060 ITU0 IMIA0
ITU3 和ITU4 复位同步PWM方式控制后轮左右电机和舵机
515 : /* ITU3 and ITU4 reset synchronized PWM modes for left and right motors and servo */ 516 : ITU3_TCR = 0x23; 517 : ITU_FCR = 0x3e; 518 : ITU3_GRA = PWM_CYCLE; /* Frequency setting */ 519 : ITU3_GRB = ITU3_BRB = 0; /* Left motor PWM setting */ 520 : ITU4_GRA = ITU4_BRA = 0; /* Right motor PWM setting */ 521 : ITU4_GRB = ITU4_BRB = SERVO_CENTER; /* Servo PWM setting */ 522 : ITU_TOER = 0x38; 523 : 524 : /* ITU count start */ 525 : ITU_STR = 0x09;
相关文档
最新文档