Hi leute ich hab ein problem mit meinem atmega128 hab an portA0 wie hier im bild: http://www.mikrocontroller.net/wikifiles/b/bb/Led.gif vorwiderstand 100ohm einen led angeschlossen, wenn ich den port aktiviere sind volle 5volt auf a0. wenn ich jedoch jetzt den port deaktiviere sind es immer noch ca3,5volt, da leuchtet die led natürlich nciht. an port a1 funktioniert das ohne problme c-code: DDRA = ( 1 << PA0 ); aktivieren: PORTA |= ( 1 << PA0 ); deaktiviern: PORTA &= ~( 1 << PA0 ); beim deaktiviern soll die led leuchten beim port a1 geht die spannung auf 0,5volt runter. hat jemand einen tipp??? port a0 und a1 sind doch eigendlich identisch beim atmega128
Irgendeine Verbindung mit nebenliegenden Ports? Überhaupt richtigen Pin geschaltet?
ist das der ganze code, den du verwendest? hast du irgendwelche sonderfunktionen aktiviert, die diesen pin nutzen? hast du mal nen anderen avr versucht?
anderen avr = nein sonderfunktionen = nein ist natürlich nicht der ganze code richtige pin = ja ich habe die beschaltung an port A0 und A1 verwendet, da hat es an port A1 funktioniert. hab nun die LED von A0 auf A2 gelegt jetzt funktioniert A2 aber A1 nicht mehr. der erste pin vom port der verwendet wird hat als low 3,5v ne idee woran das liegen kann???
vl. übersteigt der Strom den maximalen sink current dees Port Pins?
egal welcher pin des port a verwendet wird, wenn er der erste ist, ist der low pegel bei 3,5volt. liegts vllt an meinen 100ohm vorwiderstand??? im tutorium steht ja 1kohm
Denke nicht das es am "maximalen sink current" liegen kann, ist ja nur ein LED dran. 2 LED an Port A der uC müsste das doch locker schaffen.
vielleicht wirklich ein stückchen code an anderer stelle, welches dort mitmischt. Ich mag zwar solche Sätze überhaupt nicht, aber: Zeig uns doch mal den ganzen sourcecode.
der ganze code wer etwas viel. ist 2 uart definiert aber an port d und e. ansonsten steht zum port a nur das hier: ... int main... DDRA = ( 1 << PA1 ); DDRA = ( 1 << PA2 ); PORTA |= ( 1 << PA1 ); PORTA |= ( 1 << PA2 ); ... if... PORTA ^= ( 1 << PA1 ); PORTA &= ~( 1 << PA2 ); ... das komische ist das nur der erste pin des ports, einen low pegel von 3,5v hat. der rest hat 0,5volt. wenn ich jetzt ich jetzt a6 und a7 nehme funktioniert dann a6 nicht wenn ich die led's an den pins tausche geht wieder der niedrige nicht. :-( :-( :-(
ja, zeig mal den ganzen code her. und einen schaltplan, layout und fotos deines aufbaus
schaltplan hab ich noch nicht. der uc läuft ja nur diese eine sache klappt nicht. zum layout der pin A1 ist direkt mit dem led dann 100ohm und dann vcc verbunden. im code ist der pin a1 und a2 als ausgang definiert und mittels code hier ein beispiel: aktivieren: PORTA |= ( 1 << PA0 ); deaktiviern: PORTA &= ~( 1 << PA0 ); wird ein und ausgeschaltet. da ist nix anderes das den ersten verwendeten pin des ports a auf low 3,5v anheben kann. wenn ich den pin a1 blicken lasse geht es im 1s takt von 3,5v auf 4,9v auf
Hi >im code ist der pin a1 und a2 als ausgang definiert und mittels code >hier ein beispiel: Aber hoffentlich nicht so: DDRA = ( 1 << PA1 ); DDRA = ( 1 << PA2 ); MfG Spess
Hi
>was ist daran falsch
Weil du mit dem zweiten Befehl den ersten überschreibst.
DDRA = ( 1 << PA1 )|( 1 << PA2 );
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.