;Basic hardware test for Mega88. ;With this program you can see the motor rotating 60 degrees steps/second .include "HWESC.inc" ;V1.0*/ /* PPM CMin AMin APlus MISO SCK Free1 Free2 Null_A Null_B Null_C LED_Red SDA SCL Resetx RxD TxD Int0 BPlus BMin CPlus MotorM LED_Green */ ;Counters ;CPlus (D5) =OC0B #define C0_OFF (1< Define PINs Macros ON/OFF sbi @0 .ENDMACRO .MACRO Off ;> Define PINs Macros ON/OFF cbi @0 .ENDMACRO ;************************************************** ;Motor MACROS ;************************************************** ;************************************************** .include "m88def.inc" ;************************************************** .def status = r17 ;temporário .def temp = r30 ;temporário .def temp2 = r31 ;temporário .def Phase = r19 ;0/5 .def PWM_OCR = r18 ; ;org 0 .include "m88Hand.inc" H_EXT_INT0 : ; IRQ0 Handler H_EXT_INT1 : ; IRQ1 Handler H_PCINT0 : ; PCINT0 Handler=Pin Change Interrupt Request 0 H_PCINT1 : ; PCINT1 Handler H_PCINT2 : ; PCINT2 Handler H_WDT : ; Watchdog Timer Handler H_TIM2_COMPA: ; Timer2 Compare A Handler H_TIM2_COMPB: ; Timer2 Compare B Handler H_TIM2_OVF : ; Timer2 Overflow Handler H_TIM1_CAPT : ; Timer1 Capture Handler H_TIM1_COMPA: ; Timer1 Compare A Handler H_TIM1_COMPB: ; Timer1 Compare B Handler H_TIM1_OVF : ; Timer1 Overflow Handler H_TIM0_COMPA: ; Timer0 Compare A Handler H_TIM0_COMPB: ; Timer0 Compare B Handler~ H_TIM0_OVF : ; Timer0 Overflow Handler H_SPI_STC : ; SPI Transfer Complete Handler H_USART_RXC : ; USART, RX Complete Handler H_USART_UDRE: ; USART, UDR Empty Handler H_USART_TXC : ; USART, TX Complete Handler H_ADC : ; ADC Conversion Complete Handler H_EE_RDY : ; EEPROM Ready Handler H_ANA_COMP : ; Analog Comparator Handler H_TWI : ; 2-wire Serial Interface Handler H_SPM_RDY : ; Store Program Memory Ready Handler ;--------------------------------------------------------------- ;-----*** Ini Interrupt----------------------------------------- ;--------------------------------------------------------------- Blink_LED: On LED_Green Delay 1000 On LED_Red Delay 1000 Off LED_Red Delay 1000 Off LED_Green ret CMINim: cbi AMin cbi BMin sbi CMin ret BMINim: cbi AMin sbi BMin cbi CMin ret AMINim: sbi AMin cbi BMin cbi CMin ret PWM_CPLUS: ;D5=OC0B ldi temp, C2_OFF sts TCCR2A, temp ;C2 Normal port ldi temp, C0_ON out TCCR0A, temp ;Clear OC0B on match, Set BOT ret PWM_BPLUS: ;D3=OC2B ldi temp, C0_OFF out TCCR0A, temp ;C0 Normal port ldi temp, C2B_ON sts TCCR2A, temp ;Clear OC2B on match, Set BOT ret PWM_APLUS: ;B3=OC2A ldi temp, C0_OFF out TCCR0A, temp ;C0 Normal port ldi temp, C2A_ON sts TCCR2A, temp ;Clear OC2A on match, Set BOT ret Start_Phase: cpi phase,0 breq Phase0 cpi phase,1 breq Phase1 cpi phase,2 breq Phase2 cpi phase,3 breq Phase3 cpi phase,4 breq Phase4 phase5: ; rcall PWM_CPlus rcall BMINim clr Phase rjmp start_phase_End Phase0: rcall BMINim rcall PWM_APlus ldi Phase,1 rjmp start_phase_End Phase1: ; rcall PWM_APlus rcall CMINim ldi Phase,2 rjmp start_phase_End Phase2: ; rcall CMIN rcall PWM_BPlus ldi Phase,3 rjmp start_phase_End Phase3: ; rcall PWM_BPlus rcall AMINim ldi Phase,4 rjmp start_phase_End Phase4: ; rcall AMIN rcall PWM_CPlus ldi Phase,5 ; rjmp start_phase_End start_phase_End: ret Espera: Delay 1000 ret ;--***-------------------------------------------***-- ;--***-------------------------------------------***-- ; rotinas de inicializ do processador RESET: ; Reset Handler ;STACK ldi temp,0x03 ;Main program start out SPH,temp ;Set Stack Pointer to $300 (100-300) ldi temp,0x00 out SPL,temp ; cli ;Disable interrupts ; ldi temp,(1<