/* Standard Includes */ #include #include #include #define F_CPU 1000000UL #include #include /* Pin definitionen für Atmega */ #define Draht1 _BV(PB0) //hier CLOCK dran hängen #define Draht2 _BV(PB1) //unbelegt!!! verhilft nur Draht1 zu einer Pause #define Draht3 _BV(PB2) //hier CW / CCW dran hängen #define Draht7 _BV(PB7) //hier hängt Enable dran was nach dem Programm die Spannung vom Motor trennt //so das die Spulen in der Pause ohne Strom sind int main(void){ const uint16_t delay = 4250; // Taktrate am CLOCK Pin bzw an Draht1 also Geschwindigkeit für Hoch const uint16_t delayx = 1000; // Taktrate am CLOCK Pin bzw an Draht1 also Geschwindigkeit für Runter const uint16_t pause = 5000; //Simulierte Pause zw. dem Wechsel der Objektträger const uint16_t stop = 500; //kurtzer Stop vor dem Wiederhochfahre DDRB = 0xff; /* alle B Port Pins sind Outputs */ PORTB = 0x00; /* fangen alle bei 0V an */ //uint8_t bPortC; //Signalzustände von PortC abfragen und in der Variablen //bPortC = PINC; //bPortC speichern //if (!(PINC & (1<>maximal 1380 ganze Schritte!!!!!<< */ for (int j=0;j<2500;j++){ PORTB |= Draht1; //Draht1 einschalten _delay_us(delayx); PORTB &= ~Draht1; //Draht1 ausschalten _delay_us(delayx); } PORTB = 0x00; //Endwert alle Pins von Port B auf 0V PORTB |=Draht7; //Enable ausschalten******************* _delay_ms(stop); /* Schleife für die Schrite nach oben >> maximal 1380 ganze Schritte!!!!!<<*/ for (int i=0;i<2500;i++){ PORTB |= Draht3; // drehrichtung CCW PORTB |= Draht1; // Draht1 einschalten _delay_us(delay); PORTB &= ~Draht1; // Draht1 ausschalten _delay_us(delay); } PORTB = 0x00; //Endwert alle Pins von Port B auf 0V PORTB &= ~Draht7; //Endwert Enable einschalten****************** _delay_ms(pause); //Pause bevor ein neuer Programmaufruf erfolgen darf zum abkühlen der Elektronik }//end for-schleife (a Schritte) }//end if }//end while return 0; }