Hallo zusammen,
ich bin eigentlich Bauingenieur aber habe trotzdem interresse für kleine Stromtierchen die Digital durch mein Atmeg8L sausen.
Ich habe gleich eine Frage:
Ich möchte einen kleinen Schrittmotor ansteuern.
In dem Programm habe ich eine Variable s die mit einem delay-takt hochzählt.
Diesen möchte ich durch einen Time/Counter oder PWM ersetzen, damit gleichzeitig ein Schalter/Sensor/Poti abgefragt werden kann.
Hier die Daten:
WinAVR-20080610
Programiersprache: C (aboluter Anfänger)
Microcontroller: Atmega8L
Brenner: myAVR
_________________________________________________________
# include <avr/io.h>
# include <avr/iom8.h>
# include <util/delay.h>
int main (void) {
unsigned int s, s1, s2, s3, s4, U;
U = 10;
s = 0;
s1 = U;
s2 = s1+U;
s3 = s2+U;
s4 = s3+U;
DDRC |= ((1<<PC0) | (1<<PC1) | (1<<PC2) | (1<<PC3));
// Datenrichtung Register C => Ausgang für PIN 0 bis 3 (LED) "|=" entspr. 1
while (1){
// ---------------------Taktvorgabe-----------------------------------------
for (s=1;;s++){
// geht das auch mit PWM
_delay_ms(100); // oder Time Counter ???
//----------------------Bipolar Vollschritt---------------------------------
if ( s <= s1){
PORTC |= ((1<<PC0) | (1<<PC2));
PORTC &= ~((1<<PC1) | (1<<PC3));
}
else if (s > s1 && s <= s2){
PORTC |= ((1<<PC1) | (1<<PC2));
PORTC &= ~((1<<PC0) | (1<<PC3));
}
else if ( s > s2 && s <= s3){
PORTC |= ((1<<PC1) | (1<<PC3));
PORTC &= ~((1<<PC0) | (1<<PC2));
}
else if ( s > s3 && s <= s4){
PORTC |= ((1<<PC0) | (1<<PC3));
PORTC &= ~((1<<PC1) | (1<<PC2));
}
else if ( s > s4){
s = 0;
}
}
}
}
Schöne Grüße aus Hildesheim
Jan
ich bin eigentlich Bauingenieur aber habe trotzdem interresse für kleine Stromtierchen die Digital durch mein Atmeg8L sausen.
Ich habe gleich eine Frage:
Ich möchte einen kleinen Schrittmotor ansteuern.
In dem Programm habe ich eine Variable s die mit einem delay-takt hochzählt.
Diesen möchte ich durch einen Time/Counter oder PWM ersetzen, damit gleichzeitig ein Schalter/Sensor/Poti abgefragt werden kann.
Hier die Daten:
WinAVR-20080610
Programiersprache: C (aboluter Anfänger)
Microcontroller: Atmega8L
Brenner: myAVR
_________________________________________________________
# include <avr/io.h>
# include <avr/iom8.h>
# include <util/delay.h>
int main (void) {
unsigned int s, s1, s2, s3, s4, U;
U = 10;
s = 0;
s1 = U;
s2 = s1+U;
s3 = s2+U;
s4 = s3+U;
DDRC |= ((1<<PC0) | (1<<PC1) | (1<<PC2) | (1<<PC3));
// Datenrichtung Register C => Ausgang für PIN 0 bis 3 (LED) "|=" entspr. 1
while (1){
// ---------------------Taktvorgabe-----------------------------------------
for (s=1;;s++){
// geht das auch mit PWM
_delay_ms(100); // oder Time Counter ???
//----------------------Bipolar Vollschritt---------------------------------
if ( s <= s1){
PORTC |= ((1<<PC0) | (1<<PC2));
PORTC &= ~((1<<PC1) | (1<<PC3));
}
else if (s > s1 && s <= s2){
PORTC |= ((1<<PC1) | (1<<PC2));
PORTC &= ~((1<<PC0) | (1<<PC3));
}
else if ( s > s2 && s <= s3){
PORTC |= ((1<<PC1) | (1<<PC3));
PORTC &= ~((1<<PC0) | (1<<PC2));
}
else if ( s > s3 && s <= s4){
PORTC |= ((1<<PC0) | (1<<PC3));
PORTC &= ~((1<<PC1) | (1<<PC2));
}
else if ( s > s4){
s = 0;
}
}
}
}
Schöne Grüße aus Hildesheim
Jan