Ratereducer
29.05.2013, 16:48
Hallo.
Da das mein erster Post in diesem Forum ist stelle ich mich einmal vor.
Mein Name ist Daniel. Ich komme aus Österreich. Ich beschäftige mich schon seit einigen Jahren mit Elektronik und Hochspannung.
Vor einigen Tagen hab ich angefangen einen Atmega 8 in C zu programmieren. Angefangen hab ich mit blinkenden LEDs, Lauflichtern etc.
Jetzt hab ich versucht einen Schrittmotor anzusteuern, was auch funktioniert hat. Ich hab einen bipolaren Stepper der von 2 Vollbrücken aus BD139 angesteuert wird.
Mit ein paar zusätzlichen Schleifen kam dann sowas dabei raus: http://www.youtube.com/watch?v=aA6cN2mLKbQ
Jetzt will ich aber ein Programm das mir pro Tastendruck (Taster an PORTC.0 an +5V, Pulldown 10k gegen GND) und später dann pro Puls aus einer anderen Schaltung den Motor um 1 Step weiterdreht. Ich habs mal mit switch case versucht aber es geht nicht. Eine Entprellung brauche ich auch noch - weis aber nicht genau wie.
hier mein Programm.
#include <avr/io.h>
uint8_t a=0;
void main()
{
DDRD=0b11111111; // kompletter PORTD als Ausgang
DDRC&=~(1<<PC0); // PORTC.0 als Eingang
PORTD|=0b10101010; // Anfangszustand definieren, Schrittmotor haltet
while(1)
{
if(PINC&(1<<PINC0)) // Pin C0 abfragen, ist er 5V? wenn ja...
{
switch (PORTD)
{
case 10101010:
PORTD|=0b01011010;
break;
case 01011010:
PORTD|=0b01010101;
break;
case 01010101:
PORTD|=0b10100101;
break;
case 10100101:
PORTD|=0b10101010;
break;
}
}
}
}
Kann mir jemand erklären woran es scheitert?
mfg
Da das mein erster Post in diesem Forum ist stelle ich mich einmal vor.
Mein Name ist Daniel. Ich komme aus Österreich. Ich beschäftige mich schon seit einigen Jahren mit Elektronik und Hochspannung.
Vor einigen Tagen hab ich angefangen einen Atmega 8 in C zu programmieren. Angefangen hab ich mit blinkenden LEDs, Lauflichtern etc.
Jetzt hab ich versucht einen Schrittmotor anzusteuern, was auch funktioniert hat. Ich hab einen bipolaren Stepper der von 2 Vollbrücken aus BD139 angesteuert wird.
Mit ein paar zusätzlichen Schleifen kam dann sowas dabei raus: http://www.youtube.com/watch?v=aA6cN2mLKbQ
Jetzt will ich aber ein Programm das mir pro Tastendruck (Taster an PORTC.0 an +5V, Pulldown 10k gegen GND) und später dann pro Puls aus einer anderen Schaltung den Motor um 1 Step weiterdreht. Ich habs mal mit switch case versucht aber es geht nicht. Eine Entprellung brauche ich auch noch - weis aber nicht genau wie.
hier mein Programm.
#include <avr/io.h>
uint8_t a=0;
void main()
{
DDRD=0b11111111; // kompletter PORTD als Ausgang
DDRC&=~(1<<PC0); // PORTC.0 als Eingang
PORTD|=0b10101010; // Anfangszustand definieren, Schrittmotor haltet
while(1)
{
if(PINC&(1<<PINC0)) // Pin C0 abfragen, ist er 5V? wenn ja...
{
switch (PORTD)
{
case 10101010:
PORTD|=0b01011010;
break;
case 01011010:
PORTD|=0b01010101;
break;
case 01010101:
PORTD|=0b10100101;
break;
case 10100101:
PORTD|=0b10101010;
break;
}
}
}
}
Kann mir jemand erklären woran es scheitert?
mfg