- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 4 von 4

Thema: Bitte darum den Code zu überprüfen! Schrittmotor!

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    02.01.2009
    Beiträge
    28

    Bitte darum den Code zu überprüfen! Schrittmotor!

    Anzeige

    E-Bike
    Hallo erstmal,

    ich hab hier einen Code/Funkton geschrieben für meine Schrittmotoransteuerung über den RN Stepp 297

    Das Programm soll 552 einzelne Schritte ausführen!


    Code:
    #include <avr/io.h>
    #include <stdint.h>
    #include <avr/interrupt.h>
    
    
    extern uint16_t* volatile s; /*Externe veränderliche Pointervariable S=Schritt im 16bit register! 65530Zeichen!*/
    
    void auffuellen(void)
    {
        volatile int i;         /*Counter Variable*/
        unsigned int zaehler=0;
    
        for(*s=0;*s<=552;*s++)             /*Schrittmotor soll 552 einzelne Schritte tun*/
        {
                              PORTD &= ~(1<<PD0);                          /*PIN 1 wird auf Low gesetzt,Motor dreht sich noch nicht!*/
                              PORTD |= (1<<PD1);               /*PIN 2 wird auf High gesetzt, für Drehrichtung gg. Uhrzeigersinn*/
                              
             /*Taktgebung*/
                TCCR0 |=(1<<CS02);            /* CPU Takt / 256*/
                TIMSK |=(1<<OCIE1A);
                OCR1=8;               /*Bei 8 wird das Interrupt ausgelöst! Counter beginnt bei 0*/
        sei();
        if (i==4)
        {zaehler++;
        i=0;}
                                       /*Motor bewegt sich um einen Schritt*/
        if(zaehler=1)
        {
                     PORTD |=(1<<PD0);}
        if(zaehler=2)
        {
                     PORTD &= ~(1<<PD0);}
        
    }/*for-Schleife zu*/
    }/*auffüllen ende*/
    Wird das so laufen?
    muss ich die externe Variable noch irgendwie miteinbinden, in den Programmblock? Die sollte am schluss den Wert 552 haben und auch behalten!
    Letzte dumme Frage, wo kann ich das Programm testen?? AVR Studio?

    MFG BOOZer

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Die initialisierung des Timers gehört vor die For-Schleife, das braucht man ja nur einmal. Da fehlt noch die ISR für den Timer. Es ist auch nicht klar wie sich I und Zaehler ändern. die Zaehler variable geht immer nur hoch, nie wieder auf 0 zurück.
    So wie es jetzt ist wird das noch nicht funktionieren.

    Wenn man das Schreiben in AVRstudio macht, kann man das auch zur simulation nutzen. Unter Debug sollte man den Simulator starten können. Es braucht aber etwas Zeit bis man den Simulator verstanden hat.

    Am ende fehlt noch eine Endlosschleife.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    02.01.2009
    Beiträge
    28
    Code:
    #include <avr/io.h>
    #include <stdint.h>
    #include <avr/interrupt.h>
    
    
    volatile uint16_t *s;  /*Externe veränderliche Pointervariable S=Schritt im 16bit register! 65530Zeichen!*/
    
    void auffuellen (void)
    {
        volatile int i=0; /*Counter Variable*/
        unsigned int zaehler=0;
        *s=0;
    	
    	PORTD |= (1<<PD1); /*Drehrichtung*/
      
          /*Taktgebung*/
                TCCR0 |= (1<<CS02); /* CPU Takt / 256*/
                TIMSK |= (1<<OCIE0);
                OCR0=8; /*Bei 8 wird das Interrupt ausgelöst! Counter beginnt bei 0*/
        
    	for(*s=0;*s<=552;*s++) /*Schrittmotor soll 552 einzelne Schritte tun*/
        {
        PORTD &= ~(1<<PD0); /*PIN 1 wird auf Low gesetzt,Motor dreht sich noch nicht!*/
                           
        sei();
        if (i==4)
        {zaehler++;
        i=0;}
                                       /*Motor bewegt sich um einen Schritt*/
        if(zaehler==1)
        {
                     PORTD |=(1<<PD0);}
        if(zaehler==2)
        {
                     PORTD &= ~(1<<PD0);
    				 zaehler=0;
    				 }
    }
       	ISR (TIMER0_COMP_vect)
        {
    	i++;
    	}
    }
    Compiler gibt mir noch immer ein Fehler bei der ISR aus! Was mach ich falsch??

    Grüsse

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    02.01.2009
    Beiträge
    28
    Hab jetzt den Fehler!
    Thy

Berechtigungen

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

Solar Speicher und Akkus Tests