-
        

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 25

Thema: Programm und Makefile

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    16.09.2009
    Beiträge
    32

    Programm und Makefile

    Anzeige

    Moin,
    ich hab ein Programm geschrieben weiß aber nicht ob das richtig ist und wollte nachfragen ob das ok ist?
    Dann noch eine Frage, kann ich das makefile aus dem Beispiel von der Cd nehmen, damit ich die hex.Datei bekomme oder brauche ich ein anderes makefile, wenn ja welches?

    Programm:

    #include "asuro.h"
    #define FULL_L 250
    #define FULL_R 220
    void MotorFwd(void)
    {
    MotorDir(FWD,FWD);
    MotorSpeed(FULL_L,FULL_R);
    }
    void MotorRwd(void)
    {
    MotorDir(RWD,RWD);
    MotorSpeed(FULL_L,FULL_R);
    }
    void MotorRwdL(void)
    {
    MotorDir(RWD,RWD);
    MotorSpeed(FULL_L,0);
    }
    void MotorRwdR(void)
    {
    MotorDir(RWD,RWD);
    MotorSpeed(0, FULL_R);
    }
    void MotorStop(void)
    {
    MotorSpeed(0,0);
    }

    int main(void)
    {
    unsigned char t1, t2;

    Init();
    while(1)
    {
    t1 = PollSwitch();
    t2 = PollSwitch();
    if(t1 == 0 && t2 == 0)
    {
    MotorFwd();
    FrontLED(ON);
    BackLED(OFF,OFF);
    }
    else if (t1 && t2 && t1 == t2)
    {
    MotorStop();
    if(t1 & 0x07)
    {
    MotorRwdL();
    FrontLED(OFF);
    BackLED(ON,OFF);
    }
    if (t1 & 0x3
    {
    MotorRwdR();
    FrontLED(OFF);
    BackLED(OFF,ON);
    }
    Msleep(1000);
    }
    }
    return 0;
    }

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    Du verwendest die funktion Msleep in deinem program. Also dan verwendest du den erweiterten lib, oder? Oder wölltest du ein beispiel projekt mappe FirstTry von dem (alte) Asuro CD kopieren und bearbeiten, und wüsste du nicht das Msleep kein teil davon ist? Die erweiterte lib hat seine eigene makefiles in jeder beispiel projekt damit es gut funktioniert. Das ist nicht kompatibel mit den Asuro cd. Wenn es nur die alte Asuro-cd project FirstTry mappe betrifft muss dus Sleep verwenden, Aber damit kan man nur 255 als maximales wert eingeben. Das sind dan insgesammt (255/72000) sekunden oder 3.5 milisekunden pro Sleep(255) anruf.

    Dein program sieht gut aus. Aber ich bin zu mude (schreibfehler?) das in detail zu beachten. Versuch es einmal zu compilieren. Wen es nicht geht mussen es compilier fehler oder warnungen geben.

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo willo,

    Valen hat Recht.

    Du kannst aber in deinem Programm das Msleep() auch austauschen gegen Sleep() mit einer Schleife drumherrum.
    Dann passt das Makefile von der CD wenn du zusätzlich noch die asuro.h und die asuro.c von der CD mit in das Verzeichnis zu deinem Programm kopierst.

    Die Schleife sollte dann so aussehen:
    for (i = 0; i < 285; i++) /* 1000ms / 3,5ms pro Sleep = ca. 285 */
    Sleep (255);

    Gruß Sternthaler
    P.S.: Wenn du vor deinen Programmcode noch [ code ] und hinten dran noch [ /code ] schreibst (OHNE die Leerzeichen in den eckigen Klammern), dann sieht das so aus:
    Code:
       for (i = 0; i < 285; i++) /* 1000ms / 3,5ms pro Sleep = ca. 285 */
          Sleep (255);
    Lieber Asuro programieren als arbeiten gehen.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    16.09.2009
    Beiträge
    32
    hallo,
    schon mal danke für die Hilfe...
    Ich benutze die Asuro-cd project FirstTry mappe. Ich habe Msleep() durch Sleep() ersetzt und asuro.c und asuro.h in das Verzeichnis reinkopiert und compiliert. Es erschien kein Fehler. Dann habe ich die hex. Datei auf den Asuro geflasht. Hat auch alles geklappt. Nur als ich den Asuro dann gestartet habe, leuchtete nur die StatusLED rot auf und mehr machte er nicht.
    Habt ihr vielleicht eine Idee, woran das liegen könnte?

    gruß willo

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    Dein program macht nichts mit den StatusLED. Wenn die statusled rot wird bei anschalten mussen die batterien schwach sein. (Den bootloader program in das feste speicher halt ab) Brauchst du aufladbare akkus oder nicht-aufladbare batterien. Wie ist den jumper geschaltet, offen oder eingesteckt? Ist wärend den Selbtest den StatusLED mit die richtige farbe angeschaltet (beim tastertest musste eine bestimmte taster grun machen und ein andere rot), oder sind vielleicht rot und grun gewechselt?

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    16.09.2009
    Beiträge
    32
    Mein jumper ist offen. Ich hab dort neue Batterien eingelegt und der die StatusLED wurde erst orange und währenddessen leuchteten die beiden hinteren LED's rot auf und dann sind alle lichter ausgegangen und die StatusLED leuchtete wieder rot auf.. beim selbsttest hat alles funktioniert..

    gruß willo

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    Habst du ein multimeter? Bitte misst den spannung am processor pin ganz vorne neben den kerbe wan es angeschaltet ist. Setzt den minuspol von deine multimeter an einer von den 2 löcher mit den minus-zeichen auf die linker seite von asuro (neben den transistor-brücke auf die IR-led/emphanger seite)

    Das ist die batterie test messung pin worauf die bootloader bassieren soll op die batterien stark genug sind. Zu niedrige spannung kan auf einer kurzschluss hinweisen oder swache batterien. Dan soll die statusled rot werden. Wen es stark genug ist muss es grun werden und das program ablaufen(das dann mit den statusled macht was es woll)

    Dannach misst bitte auch den spannung an pin 4 und pin7(hintenseite von asuro von kerbe aus bis 4 und 7 zählen, neben den bolzloch). Wieder den minus pol and das minus-loch an den linken seite. Und bitte alle werten melden.

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    16.09.2009
    Beiträge
    32
    Ja ich hab einen Multimeter nur funktioniert er nicht mehr richtig
    Ich hab verschiedene batterien ausprobiert und immer gabs das gleiche Problem. Da ich ein freund habe, der auch einen Asuro habe, habe ich mal seine neue Batterien, die bei ihm den Asuro zum laufen bringen bei meinem ausprobiert. Auch bei diesen leuchtete die StatusLED rot auf.

    gruß willo

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    Doch wurde ich dich advisieren ein funktionierende multimeter zu bekommen. Ohne das kan man mit elektronik nicht viel anfangen. Was Asuro macht in seinen gehirn ist schon sehr unsichtbar. Missen ist Wissen. Naja nicht alles alles naturlich, aber ein bisschen mehr als wir nun nur theoretisieren können.

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    16.09.2009
    Beiträge
    32
    Ja du hast recht..ich hab mir ein multimeter bestellt..
    Mich wundert nur, dass beim selfTest alles funktioniert hat und jetzt bei einem anderen Programm es nicht mehr funktioniert. Das kann doch eigentlich nicht am Programm liegen..

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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