Hallo Habe mein Programm auf den Atmega 32 gespielt und Taster und Led`s angeschlossen. Nun habe ich das Problem das ich an den Ausgang erst immer 5 V hatte und jetzt oft nur noch 1,7 V. Obwohl ich ihn mit 5 V Speise. Woran könnte dieses liegen. Ist die Spannung im Programm umschaltbar ?
werner1 schrieb: > Hallo > Habe mein Programm auf den Atmega 32 gespielt und Taster und Led`s > angeschlossen. Nun habe ich das Problem das ich an den Ausgang erst > immer 5 V hatte und jetzt oft nur noch 1,7 V. Obwohl ich ihn mit 5 V > Speise. > Woran könnte dieses liegen. Ist die Spannung im Programm umschaltbar ? Das könnte zb daran liegen, dass du dir im Programm irgendwo irrtümlich einen Pin, der eigentlich Ausgang sein sollte auf Eingang umprogrammierst. Anstalle von "Ausgang auf 0V / Ausgang auf 5V" schaltet dann dein Programm "Pullup weg / Pullup zu". zusammen mit der Externbeschaltung wechselt dann die Spannung nur noch von 0V auf 1.7V (und es steckt kein oder kaum mehr Strom dahinter, weil der Pin ja als Eingang programmiert ist)
@ werner1 (Gast) >immer 5 V hatte und jetzt oft nur noch 1,7 V. Obwohl ich ihn mit 5 V >Speise. >Woran könnte dieses liegen. Programmierfehler, Port ist nicht als Ausgang geschaltet (DDRx Register). Hardwaredefekt > Ist die Spannung im Programm umschaltbar ? Nein. Nur 0V und VCC, hier 5V.
Oder Dein Program schaltet´den Ausgang ständig zwischen H und L schnell hin und her. Das Verhältnis der An/Aus-Zeiten bestimmen dann die mittlere Spannung, die Du mißt.
Dürfte eigentlich nicht sein hier mein Programm. #include <avr/io.h> int main(void) { DDRD = 0x01 << PD0; //PortD Pin 0 wird als Ausgang gesetzt DDRD = 0x01 << PD1; //PortD Pin 1 wird als Ausgang gesetzt DDRD = 0x01 << PD2; //PortD Pin 2 wird als Ausgang gesetzt DDRA &= ~(1 << DDA0); //PortA Pin 0 wird als Eingang gesetzt DDRA &= ~(1 << DDA1); //PortA Pin 1 wird als Eingang gesetzt DDRA &= ~(1 << DDA2); //PortA Pin 2 wird als Eingang gesetzt PORTA |= (1<<PA0); //Pull-up einschalten PORTA |= (1<<PA1); //Pull-up einschalten PORTA |= (1<<PA2); //Pull-up einschalten //uint8_t taster1; //# define Taster PA0 while(1) { if ((PINA&(1<<PA0)) ) // Abfrage PIN A2 (Taster nach GND) { PORTD |= 1<<PD0 ; // PIN D0 = 1 } else { PORTD &= ~(1<<PD0); // PIN D0 = 0 } } }
Schau dir die ersten drei Zeilen in der main an. Das stimmt logisch gesehen nicht nicht mit dem überein, was du erreichen willst. Du überschreibst immer wieder das Register und setzt nicht nur zusätzliche Bits. ändere deine = in den Zeilen 2-3 in der main in |= und nimm dir ein C-Buch zur Hand.
Habe gerade festgestellt das die LED (3mm) meine Spannung von 5 auf 1,7 V runterzieht. Aber normalerweise müsste der Atmega doch ein so kleinen Strom liefern.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.