140 likes | 360 Views
Example 12 Pulse-Width Modulation (PWM): Motors and Servos. Lecture L8.1. PIM_9DP256 Block Diagram. PWM Port. PWM Pins PP0 – PP7. Pins 4,3,2,1, 112,111,110,109. PWM Pins PP0 – PP7. Pins 4,3,2,1, 112,111,110,109. Motor Driver Circuit. Solid-state relay. MOS FET Relays. G3VM-61B1.
E N D
Example 12 Pulse-Width Modulation (PWM):Motors and Servos Lecture L8.1
PIM_9DP256 Block Diagram PWM Port
PWM Pins PP0 – PP7 Pins 4,3,2,1, 112,111,110,109
PWM Pins PP0 – PP7 Pins 4,3,2,1, 112,111,110,109
Motor Driver Circuit Solid-state relay
MOS FET Relays G3VM-61B1
// Example 12a: Motor demo #include <hidef.h> /* common defines and macros */ #include <mc9s12dp256.h> /* derivative information */ #include "main_asm.h" /* interface to the assembly module */ #pragma LINK_INFO DERIVATIVE "mc9s12dp256b" void main(void) { int val; int speed; PLL_init(); // set system clock frequency to 24 MHz ad0_enable(); // enable a/d converter 0 lcd_init(); // enable lcd motor1_init(); // enable 8-bit pwm1 for motor while(1) { val = ad0conv(7); // 0 - 1023 speed = val >> 2; // 0 - 255 set_lcd_addr(0x40); // 2nd line of lcd display write_int_lcd(speed); // display speed motor1(speed); // set motor speed ms_delay(100); // delay 100 ms } }
// Example 12b: Servo demo #include <hidef.h> /* common defines and macros */ #include <mc9s12dp256.h> /* derivative information */ #include "main_asm.h" /* interface to the assembly module */ #pragma LINK_INFO DERIVATIVE "mc9s12dp256b" void main(void) { int val; int width; PLL_init(); // set system clock frequency to 24 MHz ad0_enable(); // enable a/d converter 0 lcd_init(); // enable lcd servo1_init(); // enable pwm1 for servo while(1) { val = ad0conv(7); // 0 - 1023 width = (val << 1) + 3536; // width: 3536 - 5582 set_lcd_addr(0x40); // line 2 of lcd display write_int_lcd(width); // display width on lcd set_servo1(width); // move servo to pos width ms_delay(100); // delay 100 ms } }