PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro Kollisonstaster reagieren nicht



intergo
05.01.2012, 15:04
Hi , habe ein Problem mit dem Asuro und zwar habe einen Tastertest durchgeführt, dass beim betätigen des Tasters die Statusled rot leuchten sollte, aber es passiert nichts.
Bei den Kollegen geht alles!
Brauche hilfe.

Danke

radbruch
05.01.2012, 15:14
Meine Glaskugel sagt: "Taster kalibrieren"

Der Quellcode des Programms wäre dann noch interessant...

"Bei den Kollegen geht alles!" Selbe Hex-Datei?

intergo
05.01.2012, 19:45
#include <asuro.h>
int main(void)
{
Init()
while(1){
if (PollSwitch()>0) {StatusLED (RED);}
else (StatusLED (GREEN);}


diesen Code habe ich aus der Asuro anleitung entnommen auf seite 60.

Sorry was mienstest du mit Taster kalibrieren?

Also wir haben einen Fehler gefunden und zwar waren zwei Widerstände falsch eingelötet und haben diese dann in Ordnung gebracht.

Aber trtzdem geht es nichtrichtig , nur bei Selftest der beim Asuro schon draufgeladen sit, haben wir gemerkt, dass nachdem wir das mit dem Widerständen repariert haben, dass sie Statusled auch reagiert hat.
Aber mit dem obigen Kode passiert nichts.

radbruch
05.01.2012, 20:08
Das Beispiel auf Seite 60 der Anleitung ähnelt deinem Programm tatsächlich:


#include "asuro.h"

int main(void)
{
Init();
while(1)
{
if (PollSwitch()>0) StatusLED(RED);
else StatusLED(GREEN);
}
return(0);
}


Das sollte funktionieren. Das Beispiel von Seite 60 läßt sich wegen den falschen "" in der #include-Anweisung eh nicht kompilieren. Da aber auch dein Programm nicht fehlerfrei kompiliert werden kann, stellt sich die Frage, was du deinem asuro letztlich geflasht hast.

intergo
05.01.2012, 20:11
ja habe diesen code geflasht und habe die "" durch < > ersetzt.
komisch

radbruch
05.01.2012, 20:17
Egal ob "" oder <>, ohne ; nach dem Init() macht der Kompiler nicht weiter.

Hast du das Programm gespeichert bevor du es kompiliert hast? Da sind wir nun wieder bei deinen Kollegen: Schreibt da jeder sein eigenes Programm, kompiliert und flasht es dann auf seinen asuro? Oder verwendet ihr einen gemeinamen PC und flasht alle asuros mit der selben Hex-Datei?

intergo
05.01.2012, 20:39
ne wird sind eine Gruppe, wir haben es abgespeichert und wir verwenden ein Asuro als Gruppe.
Warum sollte er nach dem Inint nciht weitermachen?

radbruch
05.01.2012, 20:57
Oje, das kapier ich nicht. Aber egal. Mal angenommen, auf deinem asuro befindet sich das funktionierende Tastertestprogramm. Dann sollte bei jeder Kombination von gedrückten Tasten die StatusLED rot leuchten. Und da die Tasten beim Selbsttest halbwegs richtig reagieren sollte man davon ausgehen, dass sie auch in deinem Testprogramm einen Wert > 0 liefern. Nun ist es zufällig ein recht häufiges Problem, dass die Tasterwerte nie (oder selten) wirklich 0 sind. Das liegt in erster Linie an den Bauteiletoleranzen und/oder schlechter Kalibrierung (https://www.roboternetz.de/community/threads/8488-Asuro-Schalterproblem-gel%F6st). Wenn also dein asuro immer einen Wert > 0 liefern würde, dann wäre deine StatusLED falsch herum eingelötet. Mit diesem Programm sollte sie grün leuchten:


#include "asuro.h"

int main(void)
{
Init(); // StatusLED leuchtet grün nach Init()
while(1);
return(0);
}

intergo
05.01.2012, 21:20
Danke dir werde es versuchen.
Also damit es verständlich ist, es ist ein gruppenprojekt das in einer 4-Gruppe gemacht wird. und wird wollen einen Sumokampf gegen eine andere Gruppe machen.
Dnake wertde es versuchen.

intergo
05.01.2012, 21:23
also hatte ich vergessen, d.h. da eventuell der wert immer >0 ist, passiert beim drücken der taster nichts( also led reagiert nicht), also sollte ich einfach die bedingung >0 entfernen, aber woher weiß das programm, wenn ich einen Taster drücke, bräuchte ich nicht die pollSwitch funktion, wie im obigen Beispiel?

radbruch
05.01.2012, 21:35
Es ging ja nur um eine möglicherweise falsch eingelötete StatusLED. Alternative wäre:


#include "asuro.h"

int main(void)
{
Init();
while(1)
{
if (PollSwitch()>0) BackLED(ON, OFF); // linke BackLED an
else BackLED(OFF, ON); // rechte BackLED an
}
return(0);
}

intergo
05.01.2012, 21:39
ah ok verstehe, danke dir! sonst könnte man die Taster auch über die BAck-LED prüfen.

intergo
08.01.2012, 19:25
ich werde es mal ausprobieren und mich dann mal melden, kann es eventuell sein,dass auch die Taster nicht in Ordnung sind?
Eventuell mal durchmessen?

intergo
26.01.2012, 22:14
Ja bin jetzt auf dem Fehler gekommen, die Taster wie du schon sagtest, haben schon von anfang an Dauerspannung, und wir haben rausgefunden, dass jeder Taster bestimmte werte ausgibt und zwar : K1=32, K2=16, K3=8, K4=4 , K5=2, K6=1. nun haben wir gemerkt, dass wenn folgendes angeben: if (PollSwitch()>0) BackLED(ON, OFF); bzw <16, dann geht es mit den Tastern. Die Frage ist, geben diese Zahlen auch gleichzeitg die Spannung an?

UnIgor
27.01.2012, 01:28
Also ich habe meinen Asuro zwar erst gestern zusammengelötet und habe es noch nicht geschaft mich mit der Programmierung desselbigen zu beschäftigen, aber ich tippe mal darauf, dass K1=32, K2=16 usw. ganz einfach für die Binärkodierung der Taster steht.

Beispiel:

K1=32 entspricht 100000, was den ersten Taster versinnbildlichen soll.
K6=1 wäre dann natürlich 000001, also der letzte in der Reihe.

Diese Werte haben also absolut nichts mit der Spannung zu tun. Wäre ja sonst auch nobelpreisverdächtig. Denn wo sollten die 32 V an K1 wohl herkommen? ;)

MfG
Unigor

masasibe
27.01.2012, 07:01
Hallo unigor,
die Taster sind wirklich binär kodiert, aber da das Ganze über einen Adc Pin in den Atmega hineinkomt und die Taster geschickt mit verschiedenen Widerstandswerten beschaltet sind hat das Ganze natürlich zuerst schon etwas mit der Spannung zu tun, wobei der Befehl PollSwitch die Spanungswerte dann schon auswertet und eben wie du gesagt hast binär kodiert!

UnIgor
27.01.2012, 09:52
Hallo masasibe,

Da hast Du Recht.

Meinte ja auch, dass die Werte nicht mit der Spannung als solche gleichzusetzen sind - wie es evtl. aus intergo's letzter Frage missverständlicherweise herauszulesen war.

Grüße

Unigor

radbruch
27.01.2012, 11:20
Hallo

Infos zur Formel und den Tastenspannungen:
https://www.roboternetz.de/community/threads/50158-T9-glimmt-nur-und-Schalter-funktionieren-nicht-richtig?p=483740&viewfull=1#post483740

Die Tabelle aus dem Thread:



Taster, Sollwiderstand, Spannung am ADC4, ADC-Messwert, errechneter Pollswitch()-Wert (wird als int zurückgegeben)

K1 2k 3,33V 681 32,23
K2 4k 4,00V 818 16,36
K3 8k 4,44V 908 8,54
K4 16k 4,70V 961 4,63
K5 33k 4,85V 992 2,53
K6 68k 4,92V 1007 1,56

Gruß

mic

oderlachs
27.01.2012, 12:53
Ich hatte auch Probleme mal damit:

1. StatusLED leuchtet verkehrt... Ursache falsch eingelötet.
2 falsche Auswertung ..... Ursache Wiederstandsnetwerk 2 R vertauscht

Den ersten Fehler habe ich mit logischen Denken herrausgefunden, den zweiten mit Digimeter am R-Netzwerk/Taster gemessen und Messwerte rechnerisch verglichen.
Wenn der Testcode richtig kompiliert wird sollte es von dem her keine Ursachen für solche Fehler geben, sei denn es wurden dort Werte geändert.

Wirklich nochmals richtig hinschauen ob bei den Widerstandsanschlüssen im Netzwerk jedes Drähtchen im der richtigen Bohnrung steckt/verlötet ist.

Gerhard