-
-
Neuer Benutzer
Öfters hier
Hab schon gelesen, dass ein paar Leute ihn ausgebaut haben, due Lösung hat mir aber nicht so gut gefallen. Jetzt lade ich ihn einfach über den Interruptpin, das funktioniert ganz gut.
Ich verwende bisher noch die alte asuro.c, hol mir ersmal nur Anregungen aus der neuen, und bastel mir dann zusätzliche source-files für die unrterschiedlichen anwendungen.
-
Heißt das also, dass man in der original asuro.c in PollSwitch() die Zeile mit SWITCH_OFF vor dem return durch ein SWITCH_ON ersetzen muss? Genau das bewirkt doch, dass der Pin per Pullup hochgezogen wird, oder?
Gruß farratt
-
Moderator
Robotik Einstein
-
Naja, Mooses78 hat geschrieben, dass das Problem darin liegt, dass der Pin nach der Messung auf 0 ist und erst langsam über das RC-Glied wieder geladen wird. Das bedeutet, dass eine StartSwich()-Anweisung einen Interrupt auslöst, wenn sie direkt hinter einem PollSwitch() ausgeführt wird.
Dieses Verhalten ließe sich vermeiden, wenn man den Pin manuell auf high legt und genau das macht doch SWITCH_ON, oder?
SWITCH_ON steht für PORTD |= 1<<PD3.
Und das bewirkt doch, dass der Pin mittels internem PullUp auf high gezogen wird oder?
Außerdem hab ich seit dem ich das gemacht hab keine Probleme mehr; es funktioniert alles bestens. Auch bei komplexen Programmen mit viellen PollSwitch-, StartSwitch- und StopSwitch-Anweisungen.
Gibt es denn noch eine andere Lösung? (Ich meine Lösung, nicht Workaround
)
Gruß farratt
-
Moderator
Robotik Einstein
das klingt sehr vernünftig, da bin ich nicht drauf gekommen. recht hast du. aber verfälscht das dann nicht die pollswitch werte bei der nächsten messung durch die zusätzliche spannung über den pullup?
-
also wie gesagt. bei mir funktionierts. Außerdem wird die Anweisung SWITCH_ON am Anfang jeder PollSwitch()-Anweisung ausgeführt. Das bedeutet, dass der Pullup bei jeder Messung sowieso im Spiel ist.
Aber denk ruhig noch ein bisschen drauf rum. Die Entwickler der original-Lib haben sich doch bestimmt was dabei gedacht, am Ende von PollSwitch SWITCH_OFF und nicht (wie von mir vorgeschlagen) SWITCH_ON zu schreiben.
Gruß farratt
-
Moderator
Robotik Einstein
das ist anzunehmen, ja... evtl um ein kleies bisschen strom zu sparen, denn über den pullup fließt ja dauerhaft strom nach masse. aber ob das alles ist.... o0 diese pullups waren doch einige kΩ groß, dementsprechend könnte man nur einige µA sparen. kann mir nicht vorstellen dass das alles ist, wenn ich ehrlich bin.
-
kannst du das vielleicht auch mal testen?
-
Moderator
Robotik Einstein
mein asuro ist gerade in mehr teile zerlegt, als in dem bausatz waren... aber allein von der theorie her wäre es so. schalte ein multimeter zwischen batterien und asuro, und probiere es aus.
-
Könnte man sagen, dass es sich bei der Geschichte um einen Bug handelt?
Wenn ja, dann müssten sich doch jetzt auch mal die Leute, die die Lib pflegen dazu melden. So wies im Moment ist, kann mans jedenfalls nicht lassen.
Ich glaube jedenfalls eine Lösung gefunden zu haben, aber das müsste man eben groß angelegt testen. Ich werde mal ein kleines Programm zum testen hochladen.
Gruß farratt
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen