PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro: Taster -> Wert für PollSwitch() Funktion & Bibliothek neu übersetzen



tobitronik
05.11.2011, 20:39
Hallo zusammen,

ich stoße als Asuro-Neuling in euer Forum und habe eine Frage:

Der Aufbau ist vollendet, allerdings funktionieren die Taster beim Selbsttest nicht.

Um das zu beheben, habe ich aus dem Asuro-Wiki "Tast Sensor Test C " (erste Spalte), "Tasten Kalibrierung C" (2. Spalte) durchgeführt und die Widerstände gemessen (3. Spalte. Mit eingebauten ICs, da er zu fest drin saß). In Klammer noch die Idealwerte:

K1: 30-----(32)-----64, 65-----------------1,99k (2k)
K2: 15-----(16)-----64, 65, 66, 67----------3,97k (4k)
K3: 7------(8)-----------------67-74------8,08k (8k)
K4: 3-------(4)-----------------67-74 -----15,7k (16k)
K5: 1 ------(2)------nichts-----------------32,0k (32k)
K6: nichts--(1)------nichts------------------63,5k (68k)

Wenn ich K5 und K6 zusammen drücken, ergibt sich der Wert 2. Ich schätze die Tests sprechen dafür, dass ich die Software anpassen muss und die Hardware okay ist.

Laut dem Wiki wäre der nächste Schritt die PollSwitch() Funktion in der Datei myasuro.h zu ändern.

Laut der Auswertung gibt es keinen passenden Wert für die PollSwitch() Funktion?
Und wie übersetze ich die Bibliothek neu?

Grüße, Tobias

Abnormal
05.11.2011, 22:21
hatte auch taster probleme. den passenden Wert für die Funktion ergab sich durch ausprobieren. Stand auch überall in den Foren so geschrieben - wollt es nur nicht glauben. Im Endeffekt dann doch einfach ein paar Werte durchprobiert bis es gepasst hat.

tobitronik
05.11.2011, 22:36
Danke für die Antwort! Kannst du mir erklären, wie ich die Funktion ändere und auf den Asuro überspiele? Ich kenne mich da wenig aus. Funktioniert das auch mit dem Programmers Notepad und einer Make Datei?

radbruch
05.11.2011, 22:51
Den Wert kann man in der Datei asuro.c am Ende der Funktion PollSwitch() finden:


/* function to read out switches */
unsigned char PollSwitch (void)
{
unsigned int i;
int ec_bak=autoencode;
autoencode=FALSE;
DDRD |= SWITCHES; // Switches as Output
SWITCH_ON; // Output HIGH for measurement
ADMUX = (1 << REFS0) | SWITCH; // AVCC reference with external capacitor
Sleep(10);

ADCSRA |= (1 << ADSC); // Start conversion
while (!(ADCSRA & (1 << ADIF)));// wait for conversion complete
ADCSRA |= (1 << ADIF); // clear ADCIF
i = ADCL + (ADCH << 8);

SWITCH_OFF;
Sleep(5);
autoencode=ec_bak;
//return ((unsigned char) ((( 1024.0/(float)i - 1.0)) * 61.0 + 0.5));
//return ((10240000L/(long)i-10000L)*61L+5000L)/10000;
return ((10240000L/(long)i-10000L)*63L+5000L)/10000;
}
(Aus asuro.c v2.3)

Nach dem Ändern die Datei speichern und das Projekt kompilieren (Make all)

Abnormal
06.11.2011, 08:15
so ist es. Wenn die Funktion einmal angepasst ist brauchst Du Dich darum nie wieder kümmern, da Dein Compiler ja immer die Funktionen aus "Asoro.c" abruft und dort dann der richtige Wert steht. Ein "überspielen" auf den Asuro bemerkst Du praktisch also nicht. Das geht dann alles von "selbst".

tobitronik
06.11.2011, 18:46
yipppiii =) Jetzt funktionieren auch die Taster beim Selbsttest.
Danke für die Hilfe!

Falls jemand das selbe Problem hat wie ich: die PollSwitch Funktion lässt sich abändern wie oben beschrieben. Wenn man die vorgefertigten Programme der lib v2.71 benutzt, ändert man die Variable in der myasuro.h Datei und führt danach im lib Ordner die make-lib Datei im Notepad mit Tools aus.

Zusätzlich musste ich noch R30 ersetzen. Der hatte nur 63,5k anstatt 68k (oben in der Tabelle hatte ich zuerst fälschlicherweise 64k als Ideal wert stehen. Das ist zu wenig...)

Valen
07.11.2011, 18:24
...

Zusätzlich musste ich noch R30 ersetzen. Der hatte nur 63,5k anstatt 68k (oben in der Tabelle hatte ich zuerst fälschlicherweise 64k als Ideal wert stehen. Das ist zu wenig...)Naja, 63,5K ist nicht laut das Schaltplan. Aber doch sicher genauer an den 6e Macht von 2 (64), als den 68k Widerstand. Ich wurde das so behalten! Und nur die wert im asuro.c Datei ändern zu was immer auch funktioniert für ALLE Tastern.