Some cleanup
This commit is contained in:
parent
7fc1e4c3ec
commit
18aef38fb8
|
@ -3,7 +3,7 @@ F_CPU = 8000000
|
|||
|
||||
VERSION = 0.1
|
||||
|
||||
HEADERS =
|
||||
HEADERS = pwm.h
|
||||
SRC = main.c
|
||||
TARGET = mate-driver-$(AVRMCU)
|
||||
OBJDIR = bin
|
||||
|
|
|
@ -1,70 +1,7 @@
|
|||
#include <avr/io.h>
|
||||
#include <util/delay.h>
|
||||
|
||||
static inline void hbridge_init() {
|
||||
DDRB |= (1 << PB2); // PWM
|
||||
DDRB |= (1 << PB0) | (1 << PB1); // H1 L1
|
||||
DDRB |= (1 << PB3) | (1 << PB4); // H2 L2
|
||||
}
|
||||
|
||||
|
||||
static inline void hbridge_set_h1() {
|
||||
PORTB |= (1 << PB0);
|
||||
}
|
||||
static inline void hbridge_unset_h1() {
|
||||
PORTB &= ~(1 << PB0);
|
||||
}
|
||||
|
||||
static inline void hbridge_set_l1() {
|
||||
PORTB |= (1 << PB1);
|
||||
}
|
||||
static inline void hbridge_unset_l1() {
|
||||
PORTB &= ~(1 << PB1);
|
||||
}
|
||||
|
||||
static inline void hbridge_set_h2() {
|
||||
PORTB |= (1 << PB3);
|
||||
}
|
||||
static inline void hbridge_unset_h2() {
|
||||
PORTB &= ~(1 << PB3);
|
||||
}
|
||||
|
||||
static inline void hbridge_set_l2() {
|
||||
PORTB |= (1 << PB4);
|
||||
}
|
||||
static inline void hbridge_unset_l2() {
|
||||
PORTB &= ~(1 << PB4);
|
||||
}
|
||||
|
||||
|
||||
static inline void pwm_cycle_backwards(uint8_t speed) {
|
||||
hbridge_unset_l2();
|
||||
hbridge_set_l1();
|
||||
for(uint8_t i = 0; i < 8; i++) {
|
||||
if((speed & (1 << i)) != 0) {
|
||||
hbridge_set_h2();
|
||||
}
|
||||
for(uint8_t j = 0; j < (1 << i); j++) {
|
||||
_delay_us(2);
|
||||
}
|
||||
hbridge_unset_h2();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static inline void pwm_cycle_forwards(uint8_t speed) {
|
||||
hbridge_unset_l1();
|
||||
hbridge_set_l2();
|
||||
for(uint8_t i = 0; i < 8; i++) {
|
||||
if((speed & (1 << i)) != 0) {
|
||||
hbridge_set_h1();
|
||||
}
|
||||
for(uint8_t j = 0; j < (1 << i); j++) {
|
||||
_delay_us(2);
|
||||
}
|
||||
hbridge_unset_h1();
|
||||
}
|
||||
}
|
||||
#include "pwm.h"
|
||||
|
||||
int main(void) {
|
||||
|
||||
|
@ -77,7 +14,7 @@ int main(void) {
|
|||
while(1) {
|
||||
//hbridge_set_l1();
|
||||
|
||||
for(uint8_t speed = 20; speed <= 230; speed++) {
|
||||
for(uint8_t speed = 0; speed <= 250; speed++) {
|
||||
for(uint16_t i = 0; i < 250; i++) {
|
||||
pwm_cycle_forwards(speed);
|
||||
}
|
||||
|
@ -91,7 +28,7 @@ int main(void) {
|
|||
hbridge_unset_l2();
|
||||
hbridge_unset_l2();
|
||||
|
||||
for(uint8_t speed = 20; speed <= 230; speed++) {
|
||||
for(uint8_t speed = 0; speed <= 250; speed++) {
|
||||
for(uint16_t i = 0; i < 250; i++) {
|
||||
pwm_cycle_backwards(speed);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,79 @@
|
|||
#ifndef _PWM_H
|
||||
#define _PWM_H
|
||||
|
||||
#include <avr/io.h>
|
||||
#include <util/delay.h>
|
||||
|
||||
static inline void hbridge_init(void) {
|
||||
DDRB |= (1 << PB2); // PWM
|
||||
DDRB |= (1 << PB0) | (1 << PB1); // H1 L1
|
||||
DDRB |= (1 << PB3) | (1 << PB4); // H2 L2
|
||||
|
||||
DDRD |= (1 << PD1);
|
||||
}
|
||||
|
||||
|
||||
static inline void hbridge_set_h1(void) {
|
||||
PORTB |= (1 << PB0);
|
||||
}
|
||||
static inline void hbridge_unset_h1(void) {
|
||||
PORTB &= ~(1 << PB0);
|
||||
}
|
||||
|
||||
static inline void hbridge_set_l1(void) {
|
||||
PORTB |= (1 << PB1);
|
||||
}
|
||||
static inline void hbridge_unset_l1(void) {
|
||||
PORTB &= ~(1 << PB1);
|
||||
}
|
||||
|
||||
static inline void hbridge_set_h2(void) {
|
||||
PORTB |= (1 << PB3);
|
||||
}
|
||||
static inline void hbridge_unset_h2(void) {
|
||||
PORTB &= ~(1 << PB3);
|
||||
}
|
||||
|
||||
static inline void hbridge_set_l2(void) {
|
||||
PORTB |= (1 << PB4);
|
||||
}
|
||||
static inline void hbridge_unset_l2(void) {
|
||||
PORTB &= ~(1 << PB4);
|
||||
}
|
||||
|
||||
const double delay_time = 2.0;
|
||||
|
||||
static inline void pwm_cycle_backwards(uint8_t speed) {
|
||||
PIND |= (1 << PD1);
|
||||
|
||||
hbridge_unset_l2();
|
||||
hbridge_set_l1();
|
||||
for(uint8_t i = 0; i < 8; i++) {
|
||||
if((speed & (1 << i)) != 0) {
|
||||
hbridge_set_h2();
|
||||
}
|
||||
for(uint8_t j = 0; j < (1 << i); j++) {
|
||||
_delay_us(delay_time);
|
||||
}
|
||||
hbridge_unset_h2();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static inline void pwm_cycle_forwards(uint8_t speed) {
|
||||
PIND |= (1 << PD1);
|
||||
|
||||
hbridge_unset_l1();
|
||||
hbridge_set_l2();
|
||||
for(uint8_t i = 0; i < 8; i++) {
|
||||
if((speed & (1 << i)) != 0) {
|
||||
hbridge_set_h1();
|
||||
}
|
||||
for(uint8_t j = 0; j < (1 << i); j++) {
|
||||
_delay_us(delay_time);
|
||||
}
|
||||
hbridge_unset_h1();
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue