- 12V Akku mit 280 Ah bauen         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: Asuro Go/Turn

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    25.12.2011
    Ort
    Deutschland BadenWürttemberg
    Beiträge
    43

    Asuro Go/Turn

    Anzeige

    E-Bike
    Hi,
    ich bin noch ein echter Auro anfänger und wollte eine ganz ganz kleines mini Programm schreiben um die Befehle Go/Turn zu testen.
    Also ich hab die neusten Header heruntergeladen (soweit ich weiss) aber es gibt mir trozdem immernoch einen Fehler aus .
    Vielleicht, nein sicher, könnt ihr mir ja helfen.

    Code:
    #include "asuro.h"
    #include "myasuro.h"
    
    int main(void) {
    	EncoderInit ();
    	while(1) {
    		Go (200, 150);
    		Turn (90, 150); 
    	}
    }
    und die Fehler sind:
    asuro.c:145: error: 'F_CPU' undeclared (first use in this function)
    asuro.c:145: error: (Each undeclared identifier is reported only once
    asuro.c:145: error: for each function it appears in.)
    Danke

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    11.04.2006
    Ort
    Berlin
    Beiträge
    162
    Hallo Flo,

    in F_CPU definierst du die Frequenz deines externen Taktes. Beim Asuro sind das glaube ich 8MHz.
    Du kannst also einfach in deine .c Datei folgendes hinter den includes schreiben:
    Code:
    #define F_CPU 8000000UL


    Ist übrigens auch nur ein Fehler, den du da gepostet hast.

    Viele Grüße und Erfolg, Stefan

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    25.12.2011
    Ort
    Deutschland BadenWürttemberg
    Beiträge
    43
    Danke rXenon,
    schön dass du so schnell geantwortet hast, aber leider funktioniert es nicht. Ich hab #define F_CPU 8000000UL eingfügt doch komischer Weise verändert sich nichts an der Fehlermeldung.

    Mfg Florian

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    11.04.2006
    Ort
    Berlin
    Beiträge
    162
    Achso richtig, F_CPU wird schon in der Asuro Bibliothek benötigt (also vor deinem Code).
    Am besten ist es sowieso, wenn man das in dem Makefile einstellt, so wie hier: http://www.mikrocontroller.net/artic...spiel_Makefile

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    25.12.2011
    Ort
    Deutschland BadenWürttemberg
    Beiträge
    43
    Danke rXenon,
    also ich hab mir das mal angeguckt und wenn ich das recht verstehe muss ich einfach in das Makefile F_CPU = 8000000 schreiben oder?

    Danke
    Mfg Florian

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Init() vergessen.
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    25.12.2011
    Ort
    Deutschland BadenWürttemberg
    Beiträge
    43
    Danke radbruch, ich vermute du meinst im Code. Aber leider löst das mein Problem nicht wirklich.
    Und das F_CPU = 8000000 im Makefile hat mir leider auch nicht geholfe die Fehlermeldung bleibt immernoch bestehen.

    Trozdem Danke
    Mfg Florian

  8. #8
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    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 06: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!

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

  10. #10
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    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!

Seite 1 von 2 12 LetzteLetzte

Ä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, 20:44
  2. Go und Turn funkitionieren nicht..
    Von Flario im Forum Asuro
    Antworten: 2
    Letzter Beitrag: 07.08.2008, 01:30
  3. Go(); und Turn();
    Von m1ch15inner im Forum Asuro
    Antworten: 21
    Letzter Beitrag: 08.04.2007, 23:11
  4. Turn-Funktion lässt ASURO endlos drehen
    Von derNetteEddy im Forum Asuro
    Antworten: 1
    Letzter Beitrag: 20.10.2006, 18:59
  5. Turn/ Go Funktion
    Von Bad Bear im Forum Asuro
    Antworten: 4
    Letzter Beitrag: 28.06.2006, 22:11

Stichworte

Berechtigungen

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

12V Akku bauen