PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Keine 5V am Ausgang



Grenade
30.07.2008, 21:08
Hallo,
also ich möchte mich zuerst einmal vorstellen.
Mein Name ist Patrick, bin vor kurzem erst 18 geworden. Ich komme aus Österreich und bin noch Schüler an einer HTL für Elektrotechnik.
O:)

Ich bin eigentlich ziemlicher Anfänger, habe aber doch schon mehrere Programme auf einem Attiny2313 und Atmega8 zum laufen gebracht.

Naja nun zu meinem Problem:
Ich habe nach längerer Zeit wieder einmal programmiert. Ich habe mir so ein Tasterprogramm auf einen Atmega 8 geflasht. Also Taster gedrückt -> LED ein, Taster nicht gedrückt LED aus.


#include <avr/io.h>

int main()
{

while(1)
{

DDRD &= ~(1 << PD2); // PortD2 als INPUT
PORTD |= (1<<PD2); // interne Pullups einschalten


if ( !(PIND & (1<<PIND2)) ) // wenn Taste gedrückt
{
PORTD |= (1<<PORTD5); // LED an
}

else // sonst
{
PORTD &= ~(1<<PORTD5); // LED aus
}
}
}


Wird der Taster dann aber gedrückt leuchtet die LED nur halb so stark wie normalerweise. Am Portpin wo die LED dranhängt habe ich nur 2,5 V gemessen! wie kommt das?
Die LED ist von Portpin über einen 1k Widerstand nach GND geschaltet.
Ist der Pin jedoch unbelastet also keine LED dann messe ich 5 V.
Ich bitte euch um Hilfe [-o< !
Danke

Phyro-Mane
30.07.2008, 21:28
Was hast du denn da für eine LED dran?
Ein 1k Widerstand erscheint mir ein bisschen viel.
Selbst für hochleistungsleds braucht man für den Betrieb an 12V grade mal 400-500 Ohm.

radbruch
30.07.2008, 21:36
Hallo

Da die Ports defaultmäßig auf Input eingestellt sind fehlt wohl noch ein fluffiges

DDRD |= (1<<PD5);

Gruß

mic

Grenade
30.07.2008, 21:37
Cool, ziemlich schnelle Antwort!
Ich hab da eine low current LED drauf:
Ich habe mir das programmieren mehr oder weniger selbst durch tutorials beigebracht und dort steht meistens 1k Vorwiderstand bei einer LED.
Das merkwürdige ist ja das es schon mal funktioniert hat mit den 5V. Also das die LED hell geleuchtet hat. Funktioniert zeitenweise auch jetzt bei verschiedenen PINs aber nicht bei allen.

Grenade
30.07.2008, 21:45
Ooooh,
der Mann spricht aus Erfahrung!

DDRD |= (1<<PD5);

das ist es wirklich gewesen. Danke mic!
Ich dachte wenn ich nichts schreibe, dass der Pin dann automatisch als Ausgang definiert ist. Dem ist aber seh ich gerade nicht so. Also wenn ich nichts schreibe ist der Pin dan einfach hochohmig ist das richtig????

Ich bedanke mich für eure schnellen Antworten
gruß :cheesy:

radbruch
30.07.2008, 21:48
Hallo

Ich hab' noch PORTD5 nach PD5 geändert. Wenn der Port auf Input eingestellt ist schaltet PORTD |= (1<<PORTD5); den PullUp ein. Dieser ist dann in Reihe zum 1k und der LED und hat wohl ca. 50K. Da sollte die LED eigentlich immer dunkel sein. Manche Pins haben aber Sonderfunktionen, möglicherweise erklärt das die hell leuchtende LED.

Gruß

mic

uwegw
30.07.2008, 21:51
Ich dachte wenn ich nichts schreibe, dass der Pin dann automatisch als Ausgang definiert ist. Dem ist aber seh ich gerade nicht so. Also wenn ich nichts schreibe ist der Pin dan einfach hochohmig ist das richtig????

Richtig! Und wenn du nochmal drüber nachdenkst, wirst du auch feststellen, warum das so ist: wenn der Pin hochohmig ist, kann erst mal nichts kaputtgehen, was an dem Pin angeschlossen ist. Falls der Pin später mal Eingang sein soll und schon ein Signal anliegt, könnte es sonst Probleme geben.

Grenade
30.07.2008, 21:57
Klingt eigentlich logisch!
Ich bin froh das mein Problem gelöst wurde.