mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PC anschalten mit ATMEGA8


Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

versuche per ATMEGA8 meinen PC anzuschalten. Als Pin auf dem PC 
Motherboard benutze ich den Power-On Eingang, der normalerweise vom 
Taster an der Frontplatte auf Ground gezugen wird um den PC zu starten. 
Die Verkabelung in etwa wie folgt:
  M8 Vcc  ----------------> PC +5 V suspend

  M8 PD7  ------ 1k ------> PC Pwr-on

  M8 GND  ----------------> GND PC

Im Code (AVR GCC) schalte ich erst den Pin auf Ausgang:
DDRD |= (1<<PD7);

und später im Programm möchte ich den Ausgang kurzzeitig auf Low ziehen:
PORTD &= ~(1<<PD7);
_delay_ms(10);
PORTD |= (1<<PD7);

Leider schaltet der PC nicht an. Verbinde ich in obiger Schaltung 
allerdings kurzzeitig PD7 am ATMEGA und GND mit einem Stück Draht, so 
springt der PC sofort an. Der 1k Widerstand als Schutzwiderstand scheint 
nicht zu hoch zu sein.

Hat irgendjemand vielleicht eine Idee wo der Fehler liegt?

Gerhard

Autor: Jörg B. (manos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht sind 10ms zu kurz... einfach mal mit 500ms versuchen...

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vermutlich hat der PC selber einen Pullup an dem PWR-Pin. Dann könnte 1K 
zuviel sein. Ich würde ausserdem eine Diode in den Signalweg ein bauen, 
damit der Strom auch nur in eine Richtung fliessen kann.

Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Niels:
Wie gesagt, wenn ich an PD7 mit einem Stück Draht kurz auf Masse ziehe 
(an der Stelle, die ja auch der uC auf Masse ziehen sollte), bootet der 
PC sofort. Dann bin ich auch vor dem 1K Widerstand. Das mit der Diode 
ist sicher keine schlechte Idee.

@Jörg:
hatte auch schon ein deutlich längeres Delay drin, nutzt nichts.

Der Pin am PC hat 3.6 Volt. So wie oben beschrieben sollte doch der Pin 
floaten und nur beim Schalten den Ausgang auf Masse ziehen, richtig?

Ich sollte evtl. sicherheitshalber den Pin am ATMEGA auf Eingang lassen 
(wegen des hohen Eingangswiderstands) und nur im Bedarfsfall auf Ausgang 
umschalten, auf GND ziehen und wieder zurück auf Eingang schalten. Ist 
aber sicher nicht der Grund, warum es nicht funktioniert.

Gerhard

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man weiss halt nicht genau, was auf dem Mainboard ist. Jedenfalls würd 
ich es mit einem miniatur-Reedrelais machen. Damit wärst du 100% auf der 
sicheren Seite.

Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo und Danke für die Tips,

nur zur Vollständigkeit:

Das Anschalten des PCs funktioniert wie ganz oben beschrieben, hatte 
allerdings den Code zum Initialisieren der Pins in einer eigenen Init 
Routine die ich blöderweise vergessen habe, am Anfang der Main Funktion 
aufzurufen. So was blödes!

Gerhard

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.