Funktioniert der Selbsttest? Nach der Fehlerbeschreibung in deinem anderen Thread stimmt etwas mit deiner Hardware nicht ...
mfG
Markus
Hallo,
mit diesem Code
sollte Asuru eigentlich geradeausfahren, aber er macht einfach...nixCode:#include "asuro.h" int main(void) { Init (); while (1) { MotorDir (FWD, FWD); MotorSpeed (150, 150); StatusLED (GREEN); } while (1); return 0; }
mfg Fleix
Funktioniert der Selbsttest? Nach der Fehlerbeschreibung in deinem anderen Thread stimmt etwas mit deiner Hardware nicht ...
mfG
Markus
Habst du den .c Datei gespeichert vor dem du das Make Kommando gegeben hat. Vermutlich habst du ein hex Datei geflashed das den FirstTry program Gehört.
Genau was markusj sagt. Erst sicher machen das deine Kommunikationsstelle richtig arbeitet.
die motorrichtung und geschwindigkeit in einer endlosschleife dauernd einzustellen kann schon das problem sein, denn meines wissens nach stoppt das ändern den drehrichtung ständig den motor und danach VERSUCHST du ihn wieder anlaufen zu lassen, was aber durch die folgende richtungsänderung gleich wieder verhindert wird!
das while(1) am ende des programm soll nur verhindern, dass die main() methode verlassen wird, was zu undefinierten zuständen im µC führen kann!!
wenn du eine ÄNDERUNG der zustände des asuro (speed richtung oder sonstwas) erreichen willst, solltest du IMMER kontrollieren, ob sich der neue zustand vom alten unterscheidet und nur DANN die änderung herbeiführen! sonst einfach weiterschleifen ^^
Einspruch, Ceos!
Wenn er den Zustand nicht ändert macht es auch nichts wenn er zum hundertsten Mal MotorDir aufruft.
Problematisch sind dagegen eher große Änderungen in hoher Frequenz, weil dann das Risiko besteht dass diese überschrieben werden ehe sie sich auswirken können.
mfg
Markus
okay ich gestehe, dass meine kenntnisse über die asurolib veraltet sind, ich wusste nicht dass dort bereits eine derartige zustandsüberwachung integriert ist (ist sie doch oder??)man kann sich ja auch mal irren ^^denn meines wissens nach stoppt das ändern den drehrichtung ständig den motor
dennoch sollte man über die unsinnigkeit des while(1) im oberen teil des programms informiert sein (oder des while(1) am ende, da es eh nicht erreicht wird)
meckert der compiler denn da garnicht ? nicht mal ne warnung ?
EDIT: in nem anderen thread hab cih schonmal den overhead der methoden erwähnt, den sollte man auch nchit verachten und der rechenzeit wegen unnötige methodenaufrufe sparen ^^ (ein reiner designhinweis)
Nö, die Geschwindigkeitswerte werden direkt in die Output-Compare-Register (PWM) geschrieben, die Richtungswerte gehen direkt auf die Konfigurationspins der H-Brücken. Das ganze ist komplett unabhängig vom alten Zustand.Zitat von Ceos
Der Inhalt von MotorDir() aus der DLR-Lib:
Der Code aus der RN-Lib macht genau das gleiche, meine Lib ebenso.Code:PORTD = (PORTD &~ ((1 << PD4) | (1 << PD5))) | left_dir; PORTB = (PORTB &~ ((1 << PB4) | (1 << PB5))) | right_dir;
mfG
Markus
Lesezeichen