Ich kenn mich zwar nicht so mit C aus, aber irgendwie hört es sich so an, als ob der Pin nicht auf Output geschaltet wurde und somit der Transistor für den Motor kein definiertes Signal bekommt.
Hallo,
ich habe gestern zum ersten mal einen Motor über nen Mikrocontroller angesteuert (ohne PWM).
Jetzt wollte ich den Motor über Tastendruck ausschalten. Aber seit ich das einprogrammiert habe macht er was er will.
Der Motor schaltet ein, aus, dreht langsam usw. ganz von allein. Der Motor verändert seine Geschwindigkeit durch meine Körperbewegungen oder wenn ich den motor im Raum bewege.
Was kann das sein??? Der Motor ist entstört und die Leitung des tasters liegt ganz wo anderst wie die des Motores.
Hier mal das Programm
#include <avr/io.h>
int main (void)
{
while (1)
{
DDRB &= ~(1<< PB1); //PortB Pin2 als Eingang definieren
PORTB |= (1<< PB1); //PortB Pin2 Pullup aktivieren
if (!(PINC & (1<<PINC1)))
{
DDRB |= (1<< PB0); //als Ausgang definieren
PORTB |= (1<< PB0); //auf high setzen
DDRB |= (1<< PB5); //als Ausgang definieren
PORTB &= ~(1<< PB5); //auf low setzen
DDRD |= (1<< PD3); //als Ausgang definieren
PORTD |= (1<< PD3); //auf high setzen
}
else
{
DDRB |= (1<< PB0) | (1<< PB5) | (1<< PB3);
PORTB &= ~(1<< PB0) |(1<< PB5) |(1<< PB3);
}
}
return 0;
}
MfG Ralf
Ich kenn mich zwar nicht so mit C aus, aber irgendwie hört es sich so an, als ob der Pin nicht auf Output geschaltet wurde und somit der Transistor für den Motor kein definiertes Signal bekommt.
Hi,
oh man richtig.
Jetzt muss ich aber noch einen Programmfehler haben.
Jetzt macht der Motor gar nichts mehr. Ich bekomm ihn nicht mehr gestartet.
MfG Ralf
"Der Motor verändert seine Geschwindigkeit durch meine Körperbewegungen oder wenn ich den motor im Raum bewege."
Cool, Du kannst damit Signale von Ausserirdischen empfangen. Oder auch die Aura Deines Koerpers messen.. sehr esoterisch!
Ne, im Ernst: Da liegt ein undefiniertes Signal an und der Eingang reagiert auf minimalste Schwankungen von wasweissichwas.
Der Fehler liegt wohl am PINC, wie es schon Hubert geschreiben hat.
Und? Fehler schon gefunden? Ansonsten: Wie sieht das Programm nun aus? Verkabelung noch in Ordnung?
Ich weiß nicht wo der Motor drauf ist, aber PB5 ist immer low.
Hallo,
ich hab den Fehler gefunden. Und zwar bin ich es gewohnt (SPS), dass 12V am Eingang anliegen müssen, damit dieser high meldet. und somit habe ich den Port anschluss über den Taster mit 5V verbunden, damit ich bei geschlossenem Taster 5V am Port an liegen habe (wie bei ner SPS).
Ich hab jetzt durch messen herausgefunden, dass ich wenn ich den Eingang definier, 5V an Port anliegen habe. Jetzt habe ich den Taster zwischen Ground und Port gehängt und es geht wie gewünscht.
Kann mir einer sagen warum das beim Mikrokontroller so ist?
MfG und Danke
Hmm.. im IF, das
PORTD |= (1<< PD3); //auf high setzen
passiert auch nur einmal und wird nie rueckgesetzt.. hat damit vermutlich nichts zu tun, sieht aber auch sonderbar aus, sollte wohl ein PB3 sein, oder?
5V ist eigentlich ueblich hier, oder auch nur 3.3V.
siehe auch gaengige Logikpegel:
http://de.wikipedia.org/wiki/Logikpegel
Geändert von Calis007 (20.01.2012 um 11:18 Uhr)
Lesezeichen