Hallo!
ICh möchte meinen Schrittmotor ansteuern, und zwar soll er das drehen
beginnen (5 umdrehungen) , sobald der mikrocontroller ein "x" empfängt.
Es funktioniert jedoch nicht, habe mein Terminal aber richtig
eingestellt.
1 | //Steuerung eines Schrittmotors (Drucker)
|
2 | // Die beiden grünen Leitungen müssen auf Vcc,
|
3 | // dann nacheinander weiß,gelb,rot,blau für eine
|
4 | // Drehrichtung im UZS takten.
|
5 |
|
6 | #define F_CPU 4000000
|
7 | #define DELAY 10
|
8 |
|
9 | #include <avr/io.h>
|
10 | #include <util/delay.h>
|
11 |
|
12 | void main (void)
|
13 | {
|
14 | int c=0;
|
15 |
|
16 | UCSRB |= (1<<RXEN) | (1<<TXEN);
|
17 | UCSRC |= (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1);
|
18 |
|
19 | UBRRH = 00; //Baudrate einstellen 9600 bei 8 Mhz
|
20 | UBRRL = 51;
|
21 |
|
22 | DDRB = 0xFF;
|
23 |
|
24 |
|
25 | while(1)
|
26 | {
|
27 |
|
28 | while (!(UCSRA & (1<<RXC))); //warten bis ein Zeichen ankommt
|
29 |
|
30 | c = UDR;
|
31 |
|
32 | if (c == 'x')
|
33 | {
|
34 | for(int y=0;y<5;y++)
|
35 | {
|
36 | PORTB = 0b00000001;
|
37 | PORTB = 0b00000100;
|
38 | _delay_ms(DELAY);
|
39 | PORTB = 0b00000010;
|
40 | PORTB = 0b00001000;
|
41 | _delay_ms(DELAY);
|
42 | PORTB = 0b00000100;
|
43 | PORTB = 0b00000001;
|
44 | _delay_ms(DELAY);
|
45 | PORTB = 0b00001000;
|
46 | PORTB = 0b00000010;
|
47 | _delay_ms(DELAY);
|
48 | }
|
49 | }
|
50 |
|
51 | }
|
52 |
|
53 | }
|
Habe ich den UART falsch konfiguriert?
Vielen Dank!