Boozer99
11.01.2009, 17:26
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!
#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
ich hab hier einen Code/Funkton geschrieben für meine Schrittmotoransteuerung über den RN Stepp 297
Das Programm soll 552 einzelne Schritte ausführen!
#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