Bitte ein bißchen mehr Information.
- Welcher Ausgang?
- Quellcode?
- Schaltplan?
Gruß,
askazo
Hallo,
ich habe folgendes Problem:
ein atmega 32 soll signale ein einen motortreiber (L293D) weitergeben.
Jetzt funktioniert allerdings nicht mehr wie es soll, der motor dreht sich nicht. Am Ausgang des Atmega, der mit den EN eingang des Motortreibers verbunden ist, messe ich eine spannung von 0,7V, es sollten aber 5V anliegen. Wodran könnte das liegen?
Mfg Wisda.noobie
Bitte ein bißchen mehr Information.
- Welcher Ausgang?
- Quellcode?
- Schaltplan?
Gruß,
askazo
Schaltplan ist im Anhang, hier der Quellcode:
Code:#include <avr/io.h> #include <util/delay.h> #define high(MOT) (PORTC |= (1<<(MOT))) #define low(MOT) (PORTC &= ~(1<<(MOT))) #define enhigh(EN) (PORTD |= (1<<(EN))) #define enlow(EN) (PORTD &= ~(1<<(EN))) #define MOT1 PC6 #define MOT2 PC7 #define EN1 PD5 #define F_CPU 1000000 #define TASTER PD3 #define TASTER_1 (PIND & (1<<TASTER)) int main(void) { DDRD = (1 << DDD0) | (1 << DDD1) | (1 << DDD4) | (1 << DDD5) | (1 << DDD6); //PD 0,1,4,5,6 Als ausgänge, alle anderen als Eingänge DDRB = (1 << DDB0) | (1 << DDB1); // PB 0,1 als ausgänge, alle anderen als eingänge DDRC = (1 << DDC4) | (1 << DDC5) | (1 << DDC6) | (1 << DDC7); // PC4,5,6,7 als Ausgänge, alle anderen als Eingänge //Motor 1 - Eingänge: PC7, PC6 //Motor 1 - Enable: PD4 //Motor 1 - LED: PB0 //Motor 2 - Eingänge: PC5, PC4 //Motor 2 - Enable: PD5 //Motor 2 - LED: PB1 //Taster hinten: PD2 //Taster Vorne: PD3 //LED Kollision: PD6 //LED OK: PD1 //LED FEHLER: PD0 while(1) { { PORTC = PINC ^ ( 1 << PC7 ); PORTC = PINC ^ ( 0 << PC6 ); PORTD = PIND ^ ( 1 << PD4 ); PORTB = PINB ^ ( 1 << PB1 ); //Motor1 vorwärts, LED an } } return 0; }
ich vermute ja irgendwie einen Kurzschluss, kann aber nichts derartiges finden...
Es geht jetzt speziell um den pin PC7, der als ganz normaler ausgang genutzt wird.
gerade ist mir auch aufgefallen, dass der pin 4 (OC1B) 2,5V liefert....
mfg wisda.noobie
Edit: schaltplan vergessen
Hm, da fällt mir jetzt erst mal nur eins auf:
Du hast den RESET-Pin nicht beschaltet. Der sollte auf jeden Fall einen PullUp (10kOhm) gegen Vcc bekommen, idealerweise noch ein C (100nF) gegen Masse.
Gruß,
askazo
Kannst du erklären was du hier machst?Code:PORTC = PINC ^ ( 1 << PC7 ); PORTC = PINC ^ ( 0 << PC6 ); PORTD = PIND ^ ( 1 << PD4 ); PORTB = PINB ^ ( 1 << PB1 ); //Motor1 vorwärts, LED an
die entsprechenden pins auf high/low setzen...oder ist das falsch? habe im programmieren noch nicht so viel erfahrung...
mfg wisda.noobie
Das ^ ist ein Exclusiv-Oder .
ein (0<<PC6) bewirkt nichts
Lies dir das Port setzen und löschen mal hier durch:
http://www.mikrocontroller.net/artic...f_auf_IO-Ports
Ist JTAG aktiv?
Grüße
Thomas
nee, jtag ist aus...es sei denn jtag wär standartmässig aktiviert aber das is sehr unwarscheinlich
JTAG ist standardmäßig bei der Auslieferung des AVR's aktiv. Lies doch einfach mal die Fuses aus, dann siehst du gleich was Sache ist.
Grüße
Thomas
Lesezeichen