From e5deeadfcd0dc50f607e388712f6d349a36c383c Mon Sep 17 00:00:00 2001 From: schodet Date: Mon, 5 May 2003 19:20:25 +0000 Subject: Activations des interruptions. Ajout de la classe servo et IR. --- 2003/i/buzz/src/busp/test_busp.cc | 99 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 94 insertions(+), 5 deletions(-) (limited to '2003/i/buzz/src/busp/test_busp.cc') diff --git a/2003/i/buzz/src/busp/test_busp.cc b/2003/i/buzz/src/busp/test_busp.cc index 81bc21a..a63417b 100644 --- a/2003/i/buzz/src/busp/test_busp.cc +++ b/2003/i/buzz/src/busp/test_busp.cc @@ -7,6 +7,11 @@ #include #include +#include +#include + +// Mode de controle des servos. +void testServos (void); int main (int argc, char **argv) @@ -21,17 +26,39 @@ main (int argc, char **argv) // Ecriture. addr = strtol (argv[1], 0, 0); data = strtol (argv[2], 0, 0); - cout << "write " << addr << " " << data << endl; busp.write (addr, data); break; case 2: - // Lecture. - addr = strtol (argv[1], 0, 0); - cout << "read " << addr << " = " << busp.read (addr) << endl; + if (strcmp (argv[1], "irq") == 0) + { + // Attend des interuptions. + cout << "irq" << endl; + char c; + cin >> c; + } + else if (strcmp (argv[1], "servo") == 0) + { + // Passe en mode contrôle servos. + testServos (); + } + else if (strcmp (argv[1], "reset") == 0) + { + // Ne fait rien, juste reset. + busp.reset (); + cout << "reset" << endl; + } + else + { + // Lecture. + addr = strtol (argv[1], 0, 0); + } break; default: cerr << argv[0] << ": teste le bus parallèle." << endl - << "\t" << argv[0] << " adresse [donnée]" << endl; + << "\t" << argv[0] << " []" << endl + << "\t" << argv[0] << " reset" << endl + << "\t" << argv[0] << " irq" << endl + << "\t" << argv[0] << " servo" << endl; return 1; } } @@ -42,3 +69,65 @@ main (int argc, char **argv) } return 0; } + +// Mode de controle des servos. +void +testServos (void) +{ + char c; + int diff, servo = 0; + cout << "Mode servos\n" + "0-9 : choix du servo.\n" + "y : -1, h : +1, u : -1, j : +1, i : -20, k : +20\n" + "r : reset, g : goto \n"; + while (!cin.eof ()) + { + cin >> c; + diff = 0; + switch (c) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + servo = c - '0'; + break; + case 'y': + diff = -1; + break; + case 'h': + diff = 1; + break; + case 'u': + diff = -5; + break; + case 'j': + diff = 5; + break; + case 'i': + diff = -20; + break; + case 'k': + diff = 20; + break; + } + if (diff) + { + Busp::getInstance ().getServo ().move (servo, diff); + } + else if (c == 'g') + { + int pos; + cin >> pos; + Busp::getInstance ().getServo ().moveTo (servo, pos); + } + else if (c == 'r') + { + Busp::getInstance ().reset (); + } + } +} -- cgit v1.2.3