www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega128 LED LOW HIGH PEGEL


Autor: asta (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Irgendeine Verbindung mit nebenliegenden Ports?
Überhaupt richtigen Pin geschaltet?

Autor: Chris L. (kingkernel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist das der ganze code, den du verwendest? hast du irgendwelche 
sonderfunktionen aktiviert, die diesen pin nutzen?
hast du mal nen anderen avr versucht?

Autor: asta (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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???

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vl. übersteigt der Strom den maximalen sink current dees Port Pins?

Autor: asta (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: asta (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: asta (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

:-(   :-(   :-(

Autor: Chris L. (kingkernel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, zeig mal den ganzen code her. und einen schaltplan, layout und fotos 
deines aufbaus

Autor: asta (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: asta (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
doch :-S

Autor: asta (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was ist daran falsch

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>was ist daran falsch

Weil du mit dem zweiten Befehl den ersten überschreibst.

DDRA = ( 1 << PA1 )|( 1 << PA2 );

MfG Spess

Autor: asta (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach man ich ideot, ja sorry

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>ach man ich ideot, ja sorry

Dann schon Idiot .

MfG Spess

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.