Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* -----------------------------------------------------------------------------
- * File: stepper.c
- * Project: Stepper Motor Example using timer
- * Author: Leandro Schwarz
- * Last modified: 29/08/2014
- * -------------------------------------------------------------------------- */
- // System definitions
- #define F_CPU 16000000UL
- #define MCU_8_BITS
- // Header files
- #include "LS_defines.h"
- #include "LS_ATmega328.h"
- // Project definitions
- #define STEPPER_PHASE1_DDR DDRB
- #define STEPPER_PHASE1_PORT PORTB
- #define STEPPER_PHASE1_BIT PB0
- #define STEPPER_PHASE2_DDR DDRB
- #define STEPPER_PHASE2_PORT PORTB
- #define STEPPER_PHASE2_BIT PB1
- #define STEPPER_PHASE3_DDR DDRB
- #define STEPPER_PHASE3_PORT PORTB
- #define STEPPER_PHASE3_BIT PB2
- #define STEPPER_PHASE4_DDR DDRB
- #define STEPPER_PHASE4_PORT PORTB
- #define STEPPER_PHASE4_BIT PB3
- // Function declaration
- void stepperMove(void);
- // Global variables
- volatile uint8 stepperPosition = 0;
- // main function
- int main()
- {
- // Port configuration
- setBit(STEPPER_PHASE1_DDR, STEPPER_PHASE1_BIT);
- setBit(STEPPER_PHASE2_DDR, STEPPER_PHASE2_BIT);
- setBit(STEPPER_PHASE3_DDR, STEPPER_PHASE3_BIT);
- setBit(STEPPER_PHASE4_DDR, STEPPER_PHASE4_BIT);
- // Timer0 configuration
- timer0ClockPrescaller1024();
- timer0CTCMode();
- timer0OC0AOff();
- timer0OC0BOff();
- timer0ActivateCompareAInterrupt();
- timer0SetCompareAValue(155);
- sei();
- while(1){
- }
- return 0;
- }
- ISR(TIMER0_COMPA_vect)
- {
- stepperMove();
- stepperPosition = (stepperPosition == 3)?0:(stepperPosition + 1);
- return;
- }
- void stepperMove(void)
- {
- switch(stepperPosition){
- case 0:
- setBit(STEPPER_PHASE1_PORT, STEPPER_PHASE1_BIT);
- clrBit(STEPPER_PHASE2_PORT, STEPPER_PHASE2_BIT);
- clrBit(STEPPER_PHASE3_PORT, STEPPER_PHASE3_BIT);
- clrBit(STEPPER_PHASE4_PORT, STEPPER_PHASE4_BIT);
- break;
- case 1:
- clrBit(STEPPER_PHASE1_PORT, STEPPER_PHASE1_BIT);
- setBit(STEPPER_PHASE2_PORT, STEPPER_PHASE2_BIT);
- clrBit(STEPPER_PHASE3_PORT, STEPPER_PHASE3_BIT);
- clrBit(STEPPER_PHASE4_PORT, STEPPER_PHASE4_BIT);
- break;
- case 2:
- clrBit(STEPPER_PHASE1_PORT, STEPPER_PHASE1_BIT);
- clrBit(STEPPER_PHASE2_PORT, STEPPER_PHASE2_BIT);
- setBit(STEPPER_PHASE3_PORT, STEPPER_PHASE3_BIT);
- clrBit(STEPPER_PHASE4_PORT, STEPPER_PHASE4_BIT);
- break;
- case 3:
- clrBit(STEPPER_PHASE1_PORT, STEPPER_PHASE1_BIT);
- clrBit(STEPPER_PHASE2_PORT, STEPPER_PHASE2_BIT);
- clrBit(STEPPER_PHASE3_PORT, STEPPER_PHASE3_BIT);
- setBit(STEPPER_PHASE4_PORT, STEPPER_PHASE4_BIT);
- break;
- default:
- clrBit(STEPPER_PHASE1_PORT, STEPPER_PHASE1_BIT);
- clrBit(STEPPER_PHASE2_PORT, STEPPER_PHASE2_BIT);
- clrBit(STEPPER_PHASE3_PORT, STEPPER_PHASE3_BIT);
- clrBit(STEPPER_PHASE4_PORT, STEPPER_PHASE4_BIT);
- break;
- }
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment