-
-
dazu muss ich wahrscheinlich die Messfunktionen etwas umschreiben, sprich $data = ADCL + (ADCH <<
in die SIG_ADC routine verlagern.
Um zu gucken was ich gerade gemessen habe, kann ich ADMUX lesen?
Die Anpassung würe ich jedoch in der main lassen, da man ggf. auf eine Zweite Änderung warten muss, bis man den in den Ursprungszustand zurückgeht denn so wie ich es verstanden habe blockieren SIGNAL Routinen das Hauptprogramm.
Dann noch was zu den Tastern:
was spuckt der AD-Wandler eigentlich aus, dass man "es" mit dieser komplizierten Formel erst umwandeln muss?
angenommen ich nehme aus den Lese Methoden von asuro.c das eigentlich lesen des AD Wandlers aus, würde mein Code etwa so aussehen:
[php:1:cbaae07140]#include "asuro.h"
#define INITIAL 0
#define BLOCKED 1
unsigned char status = INITIAL;
int main(void)
{
Init();
StartSwitch();
while(TRUE) {
switch (status) {
case BLOCKED:
// zurücksetzen, z.B. LineData lesen
break;
//...
default:
LineData(IR_LEFT); // auch leicht abgewandelt
// der Rest
break;
}
}
return 0;
}
SIGNAL(SIG_ADC) {
unsigned int data = ADCL + (ADCH <<
;
switch (ADMUX) {
case (1 << REFS0) | SWITCH:
status = BLOCKED;
break;
case (1 << REFS0) | IR_LEFT:
if(status == BLOCKED) {
status = was_anderes
}
//data speichern, vergleichen, status setzen
break;
}
}
SIGNAL(SIG_INTERRUPT1) {
MotorSpeed(0,0);
PollSwitch();
}[/php:1:cbaae07140]
kommt das hin?
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen