-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Erstes Programm wo ist der fehler?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    02.07.2009
    Beiträge
    6

    Erstes Programm wo ist der fehler?

    Anzeige

    Hallo ich bin neu hier und auch noch ein blutiger Anfänger
    was Robotik betrifft. Ich habe bereits den Asuro gebaut und Programmiert und mich jetzt an ein eigenes Fahrzeug gewagt.
    Die Hardware ist soweit fertig und ein Programm welches erstmal nur das fahren meines Roboters steuern soll. Doch es tut sich einfach nichts. Entweder es liegt daran, dass der Roboter keine verbindung zum Computer hat (Programmer STK200/300) oder das Programm ist falsch. Könntet ihr vielleicht mal einen Blick darüber werfen und mir sagen wo eventuell der Fehler liegt?

    Code:
    /*
     * alf.c
     *
     *  Created on: May 11, 2009
     *      Author: Julian Hengsteler
     */
    
    
    
    #include <avr/io.h>
    #include <util/delay.h>
    
    
    #define leftdir
    #define rightdir
    #define right_speed
    #define left_speed
    
    inline void mspeed (unsigned char right_speed, unsigned char left_speed){
    /*Timer 1 für PWM intialisieren*/
    TCCR1A=(1 << WGM11);
    TCCR1B=(1 << WGM13) | (1 << WGM12) | (1 << CS11) | (1 << CS10);
    ICR1 = 255;
    
    DDRB |= (1 << PB1);
    TCCR1A |= (1 << COM1A1);
    
    OCR1A = left_speed;
    
    
    DDRB |= (1 << PB2);
    TCCR1A |= (1 << COM1B1);
    
    OCR1B = right_speed;
    }
    
    
    inline void leftdir(unsigned char left_dir){
    
    if(left_dir==FWD){
    DDRC |= (1<<PC7);
    PORTC |= (1 <<PC7);
    }
    
    else if(left_dir==RWD){
    DDRC |= (1<<PC6);
    PORTC |= (1<<PC6);
    }
    
    else if(left_dir==BRK){
    DDRC |= (1<<PC7) | (1<<PC6);
    PORTC |= (1<<PC7) | (1<<PC6);
    }
    
    else{
    left_speed = 0;
    }
    
    
    
    void rightdir(unsigned char right_dir){
    
    if(right_dir == FWD){
    DDRC |= (1<<PC5);
    PORTC |= (1 <<PC5);
    }
    
    if else(right_dir == RWD){
    DDRC |= (1<<PC4);
    PORTC |= (1<<PC4);
    }
    
    if else(right_dir == BRK){
    DDRC |= (1<<PC7) | (1<<PC6);
    PORTC |= (1<<PC7) | (1<<PC6);
    }
    
    else{
    left_speed = 0;
    }
    
    
    unsigned char FWD;
    unsigned char RWD;
    unsigned char BRK;
    
    
    
    int main(void){
    
    	mspeed(255,255);
    	rightdir(FWD);
    	leftdir(FWD);
    _delay_ms(100);
    
    	mspeed(255,255);
    	rightdir(RWD);
    	leftdir(RWD);
    _delay_ms(100);
    
    	mspeed(0,255);
    	rightdir(FWD);
    	leftdir(FWD);
    _delay_ms(100);
    
    	mspeed(0,255);
    	rightdir(FWD);
    	leftdir(FWD);
    
    
    return 0;
    
    
    }

    Vielen Dank

    Mit freundlichen Grüßen menselchen

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269
    Ob der µC keine Verbindung zum Programmer hat sollte sich doch einfach herausfinden lassen. Gibt es keine Fehlermeldung beim Programmieren?
    Hast du für den µC deinen eigenen Schaltplan entworfen? Kannst du den hier mal reinstellen?
    Ansonsten würde ich erstmal eine LED blinken lassen um zu schauen ob überhaupt irgendetwas funktioniert.
    Viele Grüße, William
    -> http://william.thielicke.org/

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Immer angeben welcher Controller und Compiler.
    Dein Programm kann nicht funktionieren, was soll das
    Code:
    #define leftdir
    #define rightdir
    #define right_speed
    #define left_speed
    Dein Compiler müsste da ja laut aufschreien.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    02.07.2009
    Beiträge
    6
    doch anfangs kam die meldung das kein Controller gefunden wurde irgendwann jedoch nicht mehr.
    Der Compiler hat aufgeschriehen oft sogar doch irgendwann ging es dann doch nachdem ich etwas verändert hatte.
    #define wollte ich die verschiedenen variablen setzen die dann für das Gesammte Programm gelten.

    @Willa:
    Es gibt einen Schaltplan den ich aber von hand gezeichnet habe ich kann ihn mal reinstellen.


    MFG

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.05.2004
    Alter
    31
    Beiträge
    388
    #define erstellt keine Variablen sondern KONSTANTEN
    Code:
    #define VIER 4
    immer wen du im Programm VIER schreibst setzt dein Compiler eine 4 ein.

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    02.07.2009
    Beiträge
    6
    oh
    dann hab ich das wohl falsch gemacht
    wie kann ich dann variablen für das gesammte Programm definieren?

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    02.07.2009
    Beiträge
    6
    Hier ist der Schaltplan



  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    8bit variable unsigned char leftdir;
    16bit variable unsigned int rightdir;

    Ich würde dir empfehlen das hier durchzu arbeiten: http://www.mikrocontroller.net/artic...R-GCC-Tutorial
    www.rn-wissen.de/index.php/C-Tutorial
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    02.07.2009
    Beiträge
    6
    ok ja das wusste ich auch aber ich dachte das geht nur innerhalb einer funktion und das mit dem #define hab ich wohl verwechselt

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    02.07.2009
    Beiträge
    6
    Habt ihr euch den Schaltplan mal angeschaut?
    Könnte das Funktionieren?

    Wenn ich diese #define sachen in unsigned char umwandele funktioniert das Programm dann soweit?

    Ich müsste das wissen da ich grade nicht die Möglichkeit habe es auszuprobieren

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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