Subversion Repositories svnkaklik

Rev

Rev 366 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log

Rev Author Line No. Line
365 kakl 1
#include "motor.h"
366 kakl 2
//#use i2c(Slave,Fast,sda=PIN_B1,scl=PIN_B4,force_hw,address=0xA0) // Motor 1
368 kakl 3
//#use i2c(Slave,Fast,sda=PIN_B1,scl=PIN_B4,force_hw,address=0xA2) // Motor 2
365 kakl 4
 
5
#define H1 PIN_A1
6
#define L1 PIN_A2
7
#define H2 PIN_A3
8
#define L2 PIN_A4
9
 
368 kakl 10
signed int8 command;  // rozsah +-127
365 kakl 11
 
12
#INT_SSP
13
void ssp_interupt ()
14
{
15
   BYTE incoming, state;
368 kakl 16
 
365 kakl 17
   output_low(H1);
18
   output_low(L1);
19
   output_low(H2);
20
   output_low(L2);
21
 
22
	state = i2c_isr_state();
23
 
24
	if(state < 0x80)							//Master is sending data
25
	{
368 kakl 26
//      output_toggle(PIN_A0);
365 kakl 27
		command = i2c_read();
28
	}
368 kakl 29
 
365 kakl 30
	if(state == 0x80)							//Master is requesting data
31
	{
32
		i2c_write(command);
33
	}
34
}
35
 
36
 
37
void main()
38
{
368 kakl 39
   int8 speed;
365 kakl 40
 
41
   setup_adc_ports(NO_ANALOGS|VSS_VDD);
42
   setup_adc(ADC_OFF);
368 kakl 43
//   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
44
   setup_timer_0(RTCC_INTERNAL);setup_wdt(WDT_144MS);
365 kakl 45
   setup_timer_1(T1_DISABLED);
46
   setup_timer_2(T2_DISABLED,0,1);
47
   setup_comparator(NC_NC_NC_NC);
48
   setup_vref(FALSE);
49
   setup_oscillator(OSC_8MHZ|OSC_INTRC);
368 kakl 50
 
365 kakl 51
   enable_interrupts(GLOBAL);
52
   enable_interrupts(INT_SSP);
368 kakl 53
 
54
   command=0;  // zastaveni po resetu
55
 
365 kakl 56
   while(true)
57
   {
58
 
368 kakl 59
      if ((0==command) || (command>127) || (command<-127)) // prikaz na odpojeni mustky nebo chybna hodnota
365 kakl 60
      {
61
         output_low(H1);      // stop
62
         output_low(H2);
63
         output_low(L1);
64
         output_low(L2);
65
         continue;
66
      };
368 kakl 67
 
68
      speed=command+127;   // posunuti 0 pro zaporna cisla
69
 
70
      output_a(0b10010);
71
      delay_us(speed);
72
      output_a(0);
73
      delay_us(1);
74
      restart_wdt();
75
      output_a(0b01100);
76
      delay_us(254-speed);
77
      output_a(0);
78
      delay_us(1);
79
 
80
/*
81
      output_high(H1);     // vpred
82
      output_high(L2);
83
      delay_us(speed);
84
 
85
      output_low(H1);      // stop, aby se neseply tranzistory proti sobe!
365 kakl 86
      output_low(H2);
87
      output_low(L1);
88
      output_low(L2);
368 kakl 89
 
90
      output_high(H2);     // vzad
91
      output_high(L1);
92
      delay_us(32-speed);
93
 
94
      output_low(H1);      // stop, aby se neseply tranzistory proti sobe!
95
      output_low(H2);
96
      output_low(L1);
97
      output_low(L2);
98
*/
365 kakl 99
   }
100
}
101
 
102
 
103