- LiFePO4 Speicher Test         
Ergebnis 1 bis 9 von 9

Thema: kann mir einer die Asuro-Dateien erklären?

  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Ort
    Dortmund
    Alter
    31
    Beiträge
    1.641

    kann mir einer die Asuro-Dateien erklären?

    Anzeige

    E-Bike
    Hallo,
    okay, hat was mit ASURO zu tun, aber ich denke, hier ist C gravierender. Und zwar meine Frage: kann mir einer diesen Codeschnipsel aus der asuro.c erklären? Das dürfte mir bei der programmierung meines ersten Bots helfen, den ich jetzt bald in Angriff nehme. Der Codeschnipsel:
    Code:
    /* Set motor direction */
    inline void MotorDir(unsigned char left_dir, unsigned char right_dir)
    {
    	PORTD = (PORTD &~ ((1 << PD4) | (1 << PD5))) | left_dir;
    	PORTB = (PORTB &~ ((1 << PB4) | (1 << PB5))) | right_dir;
    }
    Meine Vermutungen dazu.
    1. Zeile Kommentar zum Lesen
    2. Zeile Hier wird wohl eine Funktion aufgemacht?
    3. Zeile Hier wird gesagt, dass PORT D gemeint ist. dann versteh ich dieses &~ nicht - was bedeutet das? So. Dann 1 << PD4. Schätze, dass eben Pin 4 an Port D irgendiwe aktiviert werden soll? Und wofür ist dieser | Strich in der Mitte?
    Das Ende versteh ich wieder, da wird halt definiert, dass es sich bei dieser Ausgabefolge um das handelt, was bei right_dir berücksichtigt werden soll.
    4. Zeile eigentlich halt die gleichen Fragen...

    Kann mir das irgendjemand erklären?
    o
    L_
    OL
    This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat!

    http://de.youtube.com/watch?v=qV1cZ6jUeGE

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.11.2005
    Beiträge
    321
    hallo, nach den fragen nach verstehst du das winavr-c nicht.
    du musst dich erst damit einmal ordentlich beschäftigen, ansonsten sieht es um deinem asuro nicht rosig aus. du wirst dann nur pleiten erleben. und der asuro wir dir keinen spass bringen, nur frusst.

    das programmieren mit winavr-c, das datenblatt lesen vom AVR8 und der asuro selber gehören eng zusammen, wenn du irgendwo schwächen hast kommst du nicht weiter. und deine c-schwächen sind sehr gross.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    & ist ein bitweise AND (binärer Operator), löscht Bits.
    | ist ein bitweise OR (binärer Operator), setzt Bits.
    ^ ist ein bitweise EXOR (binärer Operator), dreht Bits um (kommt hier nicht vor).
    ~ ist bitweise NOT (unärer Operator) dreht alle Bits um
    << ist SHIFT-LEFT Operator (binär) a << b schiebt a um b Stellen nach links bzw multipliziert a mit 2^b (2 hoch b).
    ( und ) dienen zur Priorisierung. Genauso wie 1+2*3 was anderes ist als (1+2)*3. (Wenn es auf deinem Taschenrechne das gleiche ist, klopp ihn in dieTonne!).
    Disclaimer: none. Sue me.

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Ort
    Dortmund
    Alter
    31
    Beiträge
    1.641
    Also heißt
    PORTD = (PORTD &~ ((1 << PD4) | (1 << PD5))) | left_dir;
    auf "deutsch" nichts anderes als
    PORTD = (PORTD Nicht Löschen 1 um PD4 nach links oder 1 um PD5 nach links oder left_dir? äh... das macht jetzt in meinen Augen keinen Sinn...
    super-castle, ich frage WEIL ich das nicht versteh.
    o
    L_
    OL
    This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat!

    http://de.youtube.com/watch?v=qV1cZ6jUeGE

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    57
    Beiträge
    1.195
    Also, übersetzt ins Deutsche heissen die Anweisungen:

    Lösche in PORTD Bits 4 und 5 (das entspricht dem bitweisen UND von PORTD und 11001111 (das Bitmuster entspricht der NEGATION von 00110000 das entspricht (1<<PD4)|(1<<PD5).

    Hier http://www.mikrocontroller.net/artic...R-GCC-Tutorial findest Du ein sehr gutes Tutorial.

    Bevor Du damit anfängst den Asuro zu programmieren würde ich an Deiner Stelle einen ATMega 8, ein Steckbrett ein paar Widerstände, LEDs und einen einfachen Programmieradapter kaufen und die Grundschaltungen sowie die Beispielprogramme aus dem Tutorial ausprobieren. Daran kannst Du sehr gut lernen wie man den ATMega in C programmiert und es kann nicht so viel kaputt gehen. Und wenn was kaputt geht ist es schlimmstenfalls ein ATmega 8 für 3€ und nicht der teure Asuro (bei dem die Fehlersuche auch schwerer ist).

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Ort
    Dortmund
    Alter
    31
    Beiträge
    1.641
    nene, der ist ja schon (erfolgreich) programmiert, aber ich wüßte halt mal gerne, woher der mega8 versteht, wenn ich zum Beispiel
    MotorSpeed(100,100);
    eintippe, dass er dann die PWM-Pins/Ports mit einer bestimmten Pulsweitenmodulation anschalten muss. Port D Pin 4 & 5 sind doch PWM?
    o
    L_
    OL
    This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat!

    http://de.youtube.com/watch?v=qV1cZ6jUeGE

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    57
    Beiträge
    1.195
    Ich habe zwar keinen Asuro, aber das sind beim ATMega 8 keine PWM Pins.

    Das was Du an Code gepostet hast, ist die Richtungssteuerung für die Motoren. PORTD ist für den linken, PORTB für den rechten Motor. left_dir und right_dir geben dann die Richtung an (Vor, Zurück und wahrscheinlich bremsen).

    Die PWM läuft davon unabhängig. Es werden nur die Richtungen für den Motortreiber (meines Wissens eine diskret aufgebaute H-Brücke beim Asuro) geschaltet. Die PWM Signale kommen dann nochmal extra (beim Mega 8 können das PB1, PB2 oder PB3 sein).

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Ort
    Dortmund
    Alter
    31
    Beiträge
    1.641
    Achja, sorry, ich hab hier ne Skizze vom Mega32 hängen
    Und dass dir die Richtung ist, müsste ich eigentlich auch wissen... Gott.
    o
    L_
    OL
    This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat!

    http://de.youtube.com/watch?v=qV1cZ6jUeGE

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.11.2005
    Beiträge
    321
    nimm dir erst einmal ein steckbrett plus AVR8 und die datenblätter und die syntax von winavr-c dazu. ansonsten kannste deinen asuro bald in die tonne kloppen.
    du musst dich mehr mit winavr-c beschäftigen.

Berechtigungen

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

12V Akku bauen