Forum: Mikrocontroller und Digitale Elektronik [c] PORTC3+4 dauerhaft an ATmega32


von Valentin S. (lochrasterer)


Lesenswert?

Hallo,
Bin gerade an einem Projekt und versuche einen Schrittmnotor mit 
folgendem Programm anzusteuern:
1
#include <avr/io.h>
2
#define F_CPU 1000000
3
#include <util/delay.h>
4
5
int main (void){
6
DDRC=0xFF;
7
while(1){
8
PORTC = 0b00000001;
9
_delay_ms(500);
10
PORTC = 0b00000010;
11
_delay_ms(500);
12
PORTC = 0b00000100;
13
_delay_ms(500);
14
PORTC = 0b00001000;
15
_delay_ms(500);
16
}
17
}

wenn ich  den Mikrokontroller einschalte und  mit dem Oszilloskop messe, 
funktionieren die ersten beiden Schritte, aber PORTC2 und PORTC3 bleiben 
seit Start des Programmes dauerhaft eingeschalten.

Mit freundlichen Grüßen
Valentin Schlegel

von Oliver R. (orb)


Lesenswert?

Hast Du JTAG in den Fuses abgeschaltet?

von Valentin S. (lochrasterer)


Angehängte Dateien:

Lesenswert?

Müssten aus sein, oder?

von Valentin S. (lochrasterer)


Lesenswert?

Was doch nicht aus. jetzt funktionierts. war wohl im 
auslieferungszustand an.

von Oliver R. (orb)


Lesenswert?

Valentin S. schrieb:
> war wohl im auslieferungszustand an.

Ja, das ist so gewollt. Überprüf gleich nochmal, ob Dein Takt stimmt. Ab 
Werk steht der auf 8Mhz intern /8 also 1Mhz.

von spess53 (Gast)


Lesenswert?

Hi

>PORTC = 0b00000001;
>_delay_ms(500);
>PORTC = 0b00000010;
>_delay_ms(500);
>PORTC = 0b00000100;
>_delay_ms(500);
>PORTC = 0b00001000;
>_delay_ms(500);

Sieht etwas merkwürdig aus. Wenn das ein unipolarer Schrittmotor ist, 
dann steuerst du immer nur eine Spule an. Üblich sind zwei.

MfG Spess

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.