Hallo, ik heb de volgende code:


#define F_CPU 16000000L
#include <util/delay.h>
#include <avr/io.h>

void GreenLightOn() {
	DDRD |= (1 << PD4);
	PORTD |= (1 << PD4);
}

void YellowLightOn() {
	DDRD |= (1 << PD3);
	PORTD |= (1 << PD3);
}

void Motor1Backward() {
	DDRC |= (1 << PC0) | (1 << PC1);
	DDRD |= (1 << PD5);
	PORTD |= (1 << PD5);
	PORTC &= (0 << PC0);
	PORTC |= (1 << PC1);
}

void StopMotors() {
	PORTD &= (0 << PD5);
}

int main() {
	// C0 = Direction
	// C1 = Brake
	// D5 = Enable

	while(1) {
		YellowLightOn();
		Motor1Backward();
		_delay_ms(1000);
		GreenLightOn();
		StopMotors();
	}
	return 0;
}

Het volgende is het probleem. Het groene lampje gaat maar niet aan. Ook stopt de motor niet. Alles zit wel goed aangesloten, want alles heeft het wel gedaan. Alleen weet ik niet waaar in mijn fout zit :S.
Iemand een verlossende tip?

[Bericht gewijzigd door Henry S. op (0%)]

Jawel hoor dat groene lampje gaat wel aan.

Het duurt alleen een beetje kort voordat ie weer uitgaat.

Deze constructie:


PORTD &= (0 << PD5);

zet alle bitjes uit. Als je een bitje uit wilt zetten gebruik je:


PORTD &= ~(1 << PD5);

En na StopMotors wacht je niet, daarom gaat je code direct naar Motor1Backward.

Als je het helemaal voorzegt dan leert ie het nooit. Dan moeten we hier voortaan z'n programmas blijven debuggen.

@ Springuin

Ai, daar heb ik me dus blind op gestaard. Dankje