git.ucc.asn.au
/
uccvend-snackrom.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
More things to hopefully make this work.
[uccvend-snackrom.git]
/
ROM2
/
motors.c
diff --git
a/ROM2/motors.c
b/ROM2/motors.c
index
13316ff
..
e7cb6b5
100644
(file)
--- a/
ROM2/motors.c
+++ b/
ROM2/motors.c
@@
-93,35
+93,37
@@
bool is_motor(u8 slot) {
return motor_here(slot);
}
return motor_here(slot);
}
-bool
left_home
(u8 slot) {
+bool
start_motor
(u8 slot) {
u16 i;
u8 r = slot%10;
if (r >= 5) r--;
r = 1 << (r-1);
u16 i;
u8 r = slot%10;
if (r >= 5) r--;
r = 1 << (r-1);
+ motor_on(slot);
+ delay(100);
for (i = 0; i < 1000; i++) {
for (i = 0; i < 1000; i++) {
- if ((home_sensors & r)
=
= 0) return 1;
+ if ((home_sensors & r)
!
= 0) return 1;
delay(1);
}
/* it never left */
delay(1);
}
/* it never left */
+ motors_off();
return 0;
}
return 0;
}
-#define is_overcurrent() ((_io_ports[M6811_PORTE] & PORTE_MOTOR_NOT_OVERCURRENT)==0)
-
bool back_home(u8 slot) {
u8 i, r = slot%10;
if (r >= 5) r--;
r = 1 << (r-1);
for (i = 0; i < 5; i++) {
bool back_home(u8 slot) {
u8 i, r = slot%10;
if (r >= 5) r--;
r = 1 << (r-1);
for (i = 0; i < 5; i++) {
- if ((home_sensors & r)
!
= 0) return 1;
-
if (is_overcurrent()) return MOTOR_CURRENT_FAIL
;
+ if ((home_sensors & r)
=
= 0) return 1;
+
delay(1)
;
}
/* it never arrived */
return 0;
}
}
/* it never arrived */
return 0;
}
+#define is_overcurrent() ((_io_ports[M6811_PORTE] & PORTE_MOTOR_NOT_OVERCURRENT)==0)
bool motor_overcurrent() {
u8 good_passes = 0, t;
for (t = 0; t < 8; t++) {
bool motor_overcurrent() {
u8 good_passes = 0, t;
for (t = 0; t < 8; t++) {
@@
-136,13
+138,7
@@
bool motor_overcurrent() {
u8 dispense_motor(u8 slot) {
if (!is_motor(slot)) return MOTOR_NOSLOT;
u8 dispense_motor(u8 slot) {
if (!is_motor(slot)) return MOTOR_NOSLOT;
-
- motor_on(slot);
-
- if (!left_home(slot)) {
- motors_off();
- return MOTOR_HOME_FAIL;
- }
+ if (!start_motor(slot)) return MOTOR_HOME_FAIL;
while (1) {
if (motor_overcurrent()) {
while (1) {
if (motor_overcurrent()) {
UCC
git Repository :: git.ucc.asn.au