Project

General

Profile

Revision e92b8d00

IDe92b8d0015d1196d785c036bd43bedba09c18f62
Parent 48418a96
Child 606be93c, abbee6ec

Added by Thomas Mullins almost 10 years ago

Changed twi_run() loop to smb_poll() in a loop

View differences:

scout_avr/bom/bootloader.c
64 64
  }
65 65
}
66 66

  
67
static void timer_init(void) {
68
  TCNT0 = 0;
69

  
70
  OCR0A = 200;
71

  
72
  // clear on compare match A
73
  TCCR0A |= _BV(WGM01);
74
  // 1024 prescaler
75
  TCCR0B |= _BV(CS02) | _BV(CS00);
76
}
77

  
67 78
int main() {
68 79
  smb_init(slave_rx);
69 80
  smb_set_address(3); // TODO parameterize address
70
  twi_run();
71
  // TODO timeout
81
  while (1) {
82
    smb_poll();
83
  }
72 84
  return 0;
73 85
}
scout_avr/bom/tiny-twi-sync.c
168 168
  }
169 169
}
170 170

  
171
void twi_run(void) {
172
  while (1) {
173
    if (USISR & _BV(USISIF)) {
174
      twi_start();
175
      USISR |= _BV(USISIF);
176
    }
177
    if (USISR & _BV(USIOIF)) {
178
      twi_on_overflow();
179
      USISR |= _BV(USIOIF);
180
    }
181
    if (USISR & _BV(USIPF)) {
182
      twi_on_stop();
183
      USISR |= _BV(USIPF);
184
    }
171
void smb_poll(void) {
172
  if (USISR & _BV(USISIF)) {
173
    twi_start();
174
    USISR |= _BV(USISIF);
175
  }
176
  if (USISR & _BV(USIOIF)) {
177
    twi_on_overflow();
178
    USISR |= _BV(USIOIF);
179
  }
180
  if (USISR & _BV(USIPF)) {
181
    twi_on_stop();
182
    USISR |= _BV(USIPF);
185 183
  }
186 184
}
scout_avr/bom/tiny-twi-sync.h
10 10
void smb_init(slave_rx_t slave_rx);
11 11
void smb_set_address(uint8_t addr);
12 12
void smb_send_data(uint8_t* data, uint8_t length);
13
void twi_run(void);
13
void smb_poll(void);
14 14

  
15 15
#endif

Also available in: Unified diff