Hallo Liebe Forengemeinde,
Ich habe ein kleines (Verständniss) Problem bei einem Kleinen Versuch
mit dem Atmega8 in der Atmel Studio 7 Umgebung.
Ich möchte für mein Technikerprojekt 3 Schrittmotoren über den Atmega8
ansteuern. Die Grundprinzipien zur Ansteuerung habe ich verstanden. Ich
hab ein kleines Programm in C++ geschrieben womit ich einen der Motoren
auch per Knopfdruck Links oder Rechts laufen lassen kann. Die Vorgabe
ist leider dass das Programm in C geschrieben werden muss.
Und genau hier ist das Problem, ich möchte über eine For-Schleife den
Motor eine bestimmte Zeit laufen lassen. Die Funktion der For-Schleife
ist bekannt.
Da ich leider keinerlei Erfahrung mit der Deklaration der einzelnen
Ports habe denke ich das ich hier einen Fehler gemacht habe.
Folgenden Code benutze ich zurzeit:
1 | #include <avr/io.h>
|
2 | #include <util/delay.h>
|
3 | #include <stdint.h>
|
4 |
|
5 | int main(void)
|
6 | {
|
7 |
|
8 | int hoch;
|
9 | //int runter;
|
10 |
|
11 |
|
12 | //DDRD &= ~( (1<<PD2) | (1<<PD3) ); //PA0 und PA3 als Eingaenge
|
13 | //PORTD |= (1<<PD2) | (1<<PD3); //Interne Pull-Up fuer beide einschalten
|
14 |
|
15 | DDRB |= ( (1<<PB0) | (1<<PB1) | (1<<PB2) | (1<<PB3) ); // PORTB BIT 0..3 als Ausgang
|
16 |
|
17 |
|
18 | while (1)
|
19 | {
|
20 |
|
21 | PORTB &= ~(1<<PB2); // Freigabe auf 0 Forcen
|
22 | PORTB |= (1<<PB1); // Zum Test nur Rechtslauf
|
23 |
|
24 | for (hoch=0;hoch<=5000;hoch++)
|
25 | {
|
26 | PORTB |= (1<<PB0);
|
27 | _delay_ms(1);
|
28 | PORTB &= ~(1<<PB0);
|
29 | }
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 | }
|
36 | }
|
Als Motor benutze ich einen Schrittmotor mit 1.5A, 1,8° und 24VDC der
Treiber ist ein TB6560 CNC Router 1 Axis 3A.
Ich hoffe das ihr mir bei meinem ,wahrscheinlich kleinem, Problem hlefen
könnt.
Lg
Lukas