- Labornetzteil AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 18 von 18

Thema: Problem bei if-Abfrage

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    22.11.2007
    Beiträge
    7
    Anzeige

    E-Bike
    Ich verwende Programmers Notepad und zwar so wie es in der Anleitung beschrieben ist. Bei mir Kommt beim kompilieren von meinem eigenen Programm aber auch beim geänderten:
    avr-gcc -c -mmcu=atmega8 -I. -g -Os -ID:/ASURO_SRC/library2.7.1/lib/inc -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
    test.c:5: error: expected identifier or '(' before numeric constant
    test.c: In function 'main':
    test.c:27: warning: statement with no effect
    test.c:32:2: warning: no newline at end of file
    make: *** [test.o] Error 1

    Könnte es vllt. sein, dass das gar kein Fehler in dem Programm ist(selbes .hex file funktioniert auf dem ASURO von nem Freund), sondern dass einfach der Prozessor/Speicher/sonstwas an der Hardware kaputt ist?

  2. #12
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Wenn bei beiden Varianten die selben Fehlermeldungen (inclusive der Zeilennummern!) kommen, ist es wohl auch der selbe Quellcode. Der erste Fehler in Zeile 5 verursacht Folgefehler/-Warnungen weil der Kompiler durcheinander kommt. Ein Fehler im Mikrokontroller kann der Kompiler nicht erkennen, ein Hardwarefehler scheidet bei deinem Problem definitiv aus.

    Grundsätzlich solltest du immer den Progammcode mit den Fehlermeldungen zusammen posten, sonst können wir nur raten was nicht stimmt. Und speichern vor dem Kompilieren nicht vergessen!

    Wenn beim Kompilieren Fehler auftreten ist das erzeugte Hex-File (wenn es überhaupt erzeugt wird) nicht funktionsfähig! Es kann also auch nicht bei deinem Kumpel funktionieren. Irgendwas macht ihr wohl falsch. Flasht ihr die richtige Datei? Hat sich nach dem Kompilieren die Uhrzeit der Dateierstellung oder die Größe der Datei geändert? Du kannst Hex-Dateien auch als Anhang anfügen, dann können wir es auf unseren asuros testen.

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    was mir grad auffällt...

    Code:
       MotorDir(FWD,FWD);
       MotorSpeed(250,250);
    sollte nach möglichkeit nur EINMAL aufgerufen werden und zwar wenn der asuro steht oder fertig ist mit rückwärts fahren, wenn du das permanent ausführst kann es gut sein das du die autoencodefunktion für die odometrie damit blockierst ... das sollte sowieso der fall sein wenn du dauernd pollswitch aufrufst ... liess die taster besser über interrupt aus und prüf einfach ob die switched variable gesetzt ist oder nicht

  4. #14
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Die von mir weiter oben gepostete Variante funktioniert. Kritisch ist das Wiederholte aufrufen von MotorSpeed() wenn es zu schnell geschied, z.B. mit while(1) MotorSpeed(123,123);. Wir haben aber zwei AD-Wandlungen, die If-Abfrage und die endlos-while-Sprünge dazwischen.

    Ich bin kein Freund der erweiterten Library-Funktionen. Man entfernt sich zunehmend von der Hardware und ihrer Funktionenweise wenn man nur den vorgekauten Library-Brei verwendet. Zum Lösen der Aufgabe genügt hier die orginale Lib mit PollSwitch(), MotorDir() und MotorSpeed() vollkommen.

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #15
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    naja gut ok, ich meine ja nur weil er ein "anfänger" ist und sich nciht unbedingt selber die odometrie schreiben will kann das später problematisch werden wenn er mal autoencode verwendet ... in meinem kleinen projekt bin ich fast verzweifelt warum meine odometrie nicht geklappt hat bis mir klar wurde das ich linedata nicht zu oft pollen darf!!!

  6. #16
    Neuer Benutzer Öfters hier
    Registriert seit
    22.11.2007
    Beiträge
    7
    Ich habe nun die Datei neu kompiliert.
    Jetzt kommt keine Fehlermeldung mehr!
    Der ASURO fährt aber trotzdem weiterhin rückwärts, allerdings stockt er regelmäßig(sieht so aus als ob er kurz vorwärts fährt), fährt dann aber weiter rückwärts.
    Als Attachement ist das .hex file angehängt
    Angehängte Dateien Angehängte Dateien

  7. #17
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo sebwolf

    Mit meinem asuro funktioniert deine Hex-Datei tadellos.

    Vermutlich sind die Tasten an deinem asuro nicht richtig kalibriert/ falsch bestückt/ Lötfehler...

    Lösungsmöglichkeiten: Noch eine (oder mehrere) Werte einlesen und vergleichen:

    t1 = PollSwitch();
    t2 = PollSwitch();
    t3 = PollSwitch();
    t4 = PollSwitch();
    if((t1 == t2) && (t1 == t2) && (t1 == t3) && (t1 == t4)){

    und/oder anschliessend auf spezielle Tasten prüfen, z. B. die beiden vorderen Tasten:

    if((t1 == 2) || (t1 == 16)){

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  8. #18
    Neuer Benutzer Öfters hier
    Registriert seit
    22.11.2007
    Beiträge
    7
    So jetzt hab ich mal wieder meinen ASURO programmiert.

    Ich habe deine Version des Programms mit den 4 Variablen ausprobiert:
    und siehe da er fährt vorwärts(auch wenn die Schalter gedrückt sind).

    Meiner Meinung nach bedeutet dass das die Schalter gering unterschiedliche Werte zurückgeben.

    Ich habe mal gehört, dass man im makefile die Schalterwerte irgendwie anpassen kann.

    Macht das hier Sinn und wenn ja wie muss ich diese Werte anpassen?


    Vllt. könnte ja auch jemand aus dem Forum bitte hier eine funktionierende .hex-Datei für Kollisionserkennung hochladen(am besten auf nem ASURO getestet). Dann wüsste ich ob mein ASURO kaputt ist oder mein Compiler

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen