- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 18

Thema: Asuro Go/Turn

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    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

    "Du kannst also einfach in deine .c Datei folgendes hinter den includes schreiben:" dürfte ja wohl zu spät sein, wenn die Definition in asuro.c fehlt. Vielleicht hilft es auf die schnelle F_CPU in der Zeile 145 in asuro.c zu ersetzen. Vermutlich werden an dieser Stelle einmalig die Werte für die Baudratenregister des USART berechnet. Das könnte man auch von Hand erledigen und die Werte direkt im Code eintragen. Dann würde es wieder weitergehen...

    https://www.roboternetz.de/community...53308-AsuroLib

    Gruß

    mic
    Geändert von radbruch (10.06.2012 um 05:40 Uhr)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    25.12.2011
    Ort
    Deutschland BadenWürttemberg
    Beiträge
    43
    Hallo,
    ich hoffe ich nerve jetzt nicht aber es funktioniert immernoch nicht.
    Ich hab alle ausprobiert was hier gesagt wurde, ich hab es ins Makefile geschrieben und in asuro.c in die Zeile 145 F_CPU = 8000000 geschrieben (Was zu nem ganzen haufen Fehlern geführt hat).
    Und F_CPU = 8000000 ganz einfach in mein Programm zuschreiben hat auch nicht fuktioniert.

    Danke

  3. #3
    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

    in asuro.c in die Zeile 145 F_CPU = 8000000 geschrieben (Was zu nem ganzen haufen Fehlern geführt hat).
    Keine Ahnung was du damit meinst. Der betreffende Bereich in asuro.c sieht so aus:

    Code:
      /*
        Die serielle Schnittstelle wurde waerend der Boot-Phase schon
        programmiert und gestartet. Hier werden die Parameter auf 2400 1N8 gesetzt.
      */
    #if defined(__AVR_ATmega168__)
       UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1);
       UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8;
       UCSR0B = (1<<RXEN0) | (1<<TXEN0);
       UCSR0C = (1<<UCSZ00) | (1<<UCSZ01);
    #else
      UBRRH = (((F_CPU/BAUD_RATE)/16)-1)>>8; 	// set baud rate
      UBRRL = (((F_CPU/BAUD_RATE)/16)-1);
      UCSRB = (1<<RXEN)|(1<<TXEN);  // enable Rx & Tx
      UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);  // config USART; 8N1
    #endif
    Zeile 145 ist rot markiert. Hier ersetzt du F_CPU durch 8000000 oder rechnest den Wert für das jeweilige Register selbst aus:

    UBRRH = (((8000000/2400)/16)-1)>>8; // set baud rate
    UBRRL = (((8000000/2400)/16)-1);

    Oder du verwendest direkt den Wert für UBRR aus dem Datenblatt unter "Examples of Baud Rate Setting"

    UBRRH=0; // set baud rate
    UBRRL=207;

    Das funktioniert aber nur, weil der asuro alle seine Zeiten selbst berechnet und nicht delay.h verwendet.

    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!

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    25.12.2011
    Ort
    Deutschland BadenWürttemberg
    Beiträge
    43
    Danke,
    jetzt weiss ich wass du meinst, und ich habs genaus so gemacht, aber dann kommen nurnoch mehr Fehler.
    Der Code aus asuro .c:
    Code:
    #else
      UBRRH = (((8000000/2400)/16)-1)>>8; // set baud rate
      UBRRL = (((8000000/2400)/16)-1);
      UCSRB = (1<<RXEN)|(1<<TXEN);  // enable Rx & Tx
      UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);  // config USART; 8N1
    #endif
    Das führt zu diesen Fehlern:
    test.o: In function `main':
    C:\Users\Grau\Desktop\Asuro/test.c:8: undefined reference to `EncoderInit'
    C:\Users\Grau\Desktop\Asuro/test.c:10: undefined reference to `GoTurn'
    C:\Users\Grau\Desktop\Asuro/test.c:11: undefined reference to `GoTurn'
    asuro.o: In function `__vector_4':
    C:\Users\Grau\Desktop\Asuro/asuro.c:225: undefined reference to `count36kHz'
    C:\Users\Grau\Desktop\Asuro/asuro.c:225: undefined reference to `count36kHz'
    C:\Users\Grau\Desktop\Asuro/asuro.c:226: undefined reference to `count36kHz'
    C:\Users\Grau\Desktop\Asuro/asuro.c:227: undefined reference to `timebase'
    C:\Users\Grau\Desktop\Asuro/asuro.c:227: undefined reference to `timebase'
    C:\Users\Grau\Desktop\Asuro/asuro.c:227: undefined reference to `timebase'
    C:\Users\Grau\Desktop\Asuro/asuro.c:227: undefined reference to `timebase'
    C:\Users\Grau\Desktop\Asuro/asuro.c:227: undefined reference to `timebase'
    asuro.o:C:\Users\Grau\Desktop\Asuro/asuro.c:227: more undefined references to `timebase' follow
    asuro.o: In function `__vector_4':
    C:\Users\Grau\Desktop\Asuro/asuro.c:228: undefined reference to `Ovr2IntFunc'
    C:\Users\Grau\Desktop\Asuro/asuro.c:228: undefined reference to `Ovr2IntFunc'
    C:\Users\Grau\Desktop\Asuro/asuro.c:229: undefined reference to `Ovr2IntFunc'
    C:\Users\Grau\Desktop\Asuro/asuro.c:229: undefined reference to `Ovr2IntFunc'
    asuro.o: In function `__vector_3':
    C:\Users\Grau\Desktop\Asuro/asuro.c:242: undefined reference to `count36kHz'
    C:\Users\Grau\Desktop\Asuro/asuro.c:242: undefined reference to `count36kHz'
    C:\Users\Grau\Desktop\Asuro/asuro.c:243: undefined reference to `count36kHz'
    C:\Users\Grau\Desktop\Asuro/asuro.c:244: undefined reference to `timebase'
    C:\Users\Grau\Desktop\Asuro/asuro.c:244: undefined reference to `timebase'
    C:\Users\Grau\Desktop\Asuro/asuro.c:244: undefined reference to `timebase'
    C:\Users\Grau\Desktop\Asuro/asuro.c:244: undefined reference to `timebase'
    C:\Users\Grau\Desktop\Asuro/asuro.c:244: undefined reference to `timebase'
    asuro.o:C:\Users\Grau\Desktop\Asuro/asuro.c:244: more undefined references to `timebase' follow
    asuro.o: In function `__vector_2':
    C:\Users\Grau\Desktop\Asuro/asuro.c:269: undefined reference to `switched'
    C:\Users\Grau\Desktop\Asuro/asuro.c:269: undefined reference to `switched'
    asuro.o: In function `__vector_14':
    C:\Users\Grau\Desktop\Asuro/asuro.c:303: undefined reference to `AdcIntFunc'
    C:\Users\Grau\Desktop\Asuro/asuro.c:303: undefined reference to `AdcIntFunc'
    C:\Users\Grau\Desktop\Asuro/asuro.c:304: undefined reference to `AdcIntFunc'
    C:\Users\Grau\Desktop\Asuro/asuro.c:304: undefined reference to `AdcIntFunc'
    asuro.o: In function `Init':
    C:\Users\Grau\Desktop\Asuro/asuro.c:181: undefined reference to `FrontLED'
    C:\Users\Grau\Desktop\Asuro/asuro.c:182: undefined reference to `BackLED'
    C:\Users\Grau\Desktop\Asuro/asuro.c:183: undefined reference to `BackLED'
    C:\Users\Grau\Desktop\Asuro/asuro.c:184: undefined reference to `StatusLED'
    C:\Users\Grau\Desktop\Asuro/asuro.c:186: undefined reference to `MotorDir'
    C:\Users\Grau\Desktop\Asuro/asuro.c:187: undefined reference to `MotorSpeed'
    C:\Users\Grau\Desktop\Asuro/asuro.c:189: undefined reference to `autoencode'
    C:\Users\Grau\Desktop\Asuro/asuro.c:189: undefined reference to `autoencode'
    C:\Users\Grau\Desktop\Asuro/asuro.c:191: undefined reference to `Ovr2IntFunc'
    C:\Users\Grau\Desktop\Asuro/asuro.c:191: undefined reference to `Ovr2IntFunc'
    C:\Users\Grau\Desktop\Asuro/asuro.c:192: undefined reference to `AdcIntFunc'
    C:\Users\Grau\Desktop\Asuro/asuro.c:192: undefined reference to `AdcIntFunc'
    Danke für die Gedult

  5. #5
    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

    Nur keine Panik. Das F-CPU-Problem betraf den Preprocessor der vor dem Kompilieren die #defines ersetzt. Das scheint jetzt funktioniert zu haben, denn nun wird versucht, das C-Programm in die Maschinensprache der AVRs zu übersetzen. Dabei "merkt" der Kompiler, dass er für einige Funktionen die Definitionen nicht findet: "undefined reference to"

    Das passiert, wenn asuro.c nicht gefunden wurde. Die Meldung dazu sollte etwa so aussehen: "temp.c:5:20: error: asuro.h: No such file or directory" Aber das erscheint ja bei dir offensichtlich nicht. Hier kann ich nun wirklich nur raten: Du includest die Datei asuro.h mit "", für die aktuelle Library muss man sie aber mit <> einbinden (""= im selben Verzeichniss wie der Quellcode des Programms, <> im GCC-Pfad) Das ist aber eher geraten als gewußt, denn ich verwende Version 2.3 der Lib.

    Gruß

    mic


    [Edit]
    Das count36kHz nicht gefunden wird zeigt, dass wirklich die orginale CD-Library eingebunden wurde. Ab Version 2.3, und deshalb auch in der aktuellen Lib, ist count36kHz bekannt.
    Geändert von radbruch (10.06.2012 um 16:53 Uhr)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    25.12.2011
    Ort
    Deutschland BadenWürttemberg
    Beiträge
    43
    Hi,
    danke erstmal, ich hab das mit <> ausprobiert, doch leider verändert sich nichts. Aber ich denke muss muss eine einfachere Lösung geben, bei anderen funktioniert es ja auch, vielleicht könnte es helfen eine andere Version der Lib zu benutzen.
    Für weitere Tipps wäre ich dankbar.

    Danke
    Mfg

  7. #7
    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

    ...vielleicht könnte es helfen eine andere Version der Lib zu benutzen.
    Nicht wirklich. Wenn du Go() oder Turn() und die anderen Errungenschaften der aktuellen Library nutzen willst, dann ist die aktuelle Version 2.8 die erste Wahl.

    bei anderen funktioniert es ja auch
    , wenn auch nicht immer auf Anhieb. Der große Unterschied ist der Speicherort der Libraries. Bis ca. Version 2.6(?) bestand die Library lediglich aus den Dateien asuro.h und asuro.c die im Verzeichniss des Quellcodes abgelegt und mit "" eingebunden wurden. Die aktuelle Library wird nun im WinAVR-Bereich angelegt und über den Pfad gefunden, weil sie mit <> eingebunden wird. Wenn der Pfad nicht stimmt, wird diese Lib nicht gefunden und deshalb deren Funktionen auch nicht eingebunden. Erschwerend kommt noch dazu, dass die aktuelle Lib schon vorkompiliert ist und nicht der Quellcode sondern nur die Objektdateien eingebunden werden (oder so ähnlich):

    https://www.roboternetz.de/community...ieb-genommen-3

    Gruß

    mic
    Geändert von radbruch (12.06.2012 um 06:45 Uhr) Grund: Rechtschreibung
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Zitat Zitat von µcFlo Beitrag anzeigen
    Hi,


    danke erstmal, ich hab das mit <> ausprobiert, doch leider verändert sich nichts. Aber ich denke muss muss eine einfachere Lösung geben, bei anderen funktioniert es ja auch, vielleicht könnte es helfen eine andere Version der Lib zu benutzen.
    Für weitere Tipps wäre ich dankbar.

    Danke
    Mfg
    Bist du angefangen mit einer Kopie zu machen von der Beispiel FirstTry Ordner?

    \AsuroLib-v280rc1\examples\FirstTry

    Dort drin in dem Makefile soll nur die LIBPATH zeile angepasst werden.

    In das Kopie der FirstTry ordner, in dem Datei Test.c, kannst du dann deine Code hinnein fügen:

    Code:
    /***************************************************************************
     *                                                                         *
     *   This program is free software; you can redistribute it and/or modify  *
     *   it under the terms of the GNU General Public License as published by  *
     *   the Free Software Foundation; either version 2 of the License, or     *
     *   any later version.                                                    *
     ***************************************************************************/
    
    #include "asuro.h"
    
    int main(void)
    {
      Init();
    
     EncoderInit ();
       while(1) {
           Go (200, 150);
           Turn (90, 150); 
        }
     
      while (1);
      return 0;
    }

Ähnliche Themen

  1. It's your turn - CDBOT
    Von jo_robot im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 7
    Letzter Beitrag: 08.03.2009, 19:44
  2. Go und Turn funkitionieren nicht..
    Von Flario im Forum Asuro
    Antworten: 2
    Letzter Beitrag: 07.08.2008, 00:30
  3. Go(); und Turn();
    Von m1ch15inner im Forum Asuro
    Antworten: 21
    Letzter Beitrag: 08.04.2007, 22:11
  4. Turn-Funktion lässt ASURO endlos drehen
    Von derNetteEddy im Forum Asuro
    Antworten: 1
    Letzter Beitrag: 20.10.2006, 17:59
  5. Turn/ Go Funktion
    Von Bad Bear im Forum Asuro
    Antworten: 4
    Letzter Beitrag: 28.06.2006, 21:11

Stichworte

Berechtigungen

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

Labornetzteil AliExpress