Forum: Mikrocontroller und Digitale Elektronik atemega Pulldown Widerstand erfüllt seine Funktion nicht


von HansWurst (Gast)


Angehängte Dateien:

Lesenswert?

Ich hoffe ihr könnt mir helfen. Es ist eigentlich ganz Einfach aber ich 
bekomme es nicht hin.

Ich möchte mit meine ATmega einen PIN so beschalten, dass der nur HIGH 
ist wenn er mit Vcc verbunden ist.
Schaltung ist wie im Anhang mit 10k. Mein Code sieht wie folgt aus:

#include <avr/io.h>



int main(void)
{
  initOnBoardLed(); // Funktion geht
  DDRD  = 0b00000000;  // Input
  PORTD = 0b00000100;  //interne Pullup nein

  while(1)
  {
    if(PIND & (1<<PD2))
    {
      LED_RT_OFF();// Funktion geht
      LED_GR_ON();// Funktion geht
    }
    else
    {
      LED_GR_OFF();// Funktion geht
      LED_RT_ON();// Funktion geht
    }
  }
}

Meine Erwartung ist das die Grüne LED leuchtet wenn der Schalter 
geschlossen ist sonst die Rote. Die Rote LED löchte leider nur wenn ich 
den Pin direkt mit Masse verbinde.

Ich finde meine Fehler einfach nicht. Sieht Ihn wer von euch?

von npn (Gast)


Lesenswert?

Wozu hast du den internen Pullup aktiviert?
Mach den mal aus...

von Dussel (Gast)


Lesenswert?

Wenn ich mich richtig erinnere, schaltest du den internen 
Pullupwiderstand an PD2 ein. Damit hast du einen Spannungsteiler 
zwischen Pullup und Pulldown.

von HansWurst (Gast)


Lesenswert?

Dussel schrieb:
> Wenn ich mich richtig erinnere, schaltest du den internen
> Pullupwiderstand an PD2 ein. Damit hast du einen Spannungsteiler
> zwischen Pullup und Pulldown.

Ja du hast recht, Pullupo war an.

npn schrieb:
> Wozu hast du den internen Pullup aktiviert?
> Mach den mal aus...

Kommt aus dem letzten test. Nach dem Ausmachen gleiche Bild.

von npn (Gast)


Lesenswert?

npn schrieb:
> Wozu hast du den internen Pullup aktiviert?
> Mach den mal aus...

Die andere Möglichkeit ist, den internen Pullup eingeschaltet zu lassen 
und dafür den Taster vom Pin gegen GND zu schalten. Dann ist der 
Low-aktiv, also im offenen Zustand liegen ca. 5V am Pin an und beim 
Schließen des Tasters dann ca. 0V. Damit sparst du einen Widerstand.

von Walter S. (avatar)


Lesenswert?

HansWurst schrieb:
> Ich finde meine Fehler einfach nicht.

hast du schon die Spannung am Pin gemessen, wenn nein dann schweige für 
immer ...
Systematische Fehlersuche bringt einem auch selbst Erfolgserlebnisse

von HansWurst (Gast)


Lesenswert?

JA hatte ich da liegen 3,3V ich weiß aber nicht wo die herkommen.

von HansWurst (Gast)


Lesenswert?

Ich habe mir jetzt erstmal mit einem Transitor als Schalter gegen Masse 
+ internen Pullup beholfen. Muss aber eigentlich nur mit pulldown gehen. 
Jetzt ist zwar die Logic invertiert, aber ich kann activ high schalten.

Hat wer eine Idee warum die als Ausgang gesetzen Pins 3,3V haben, wenn 
sie nicht direkt auf Masse liegen?

von JC09 (Gast)


Angehängte Dateien:

Lesenswert?

SFIOR konfiguriert?

von Ulrich F. (Gast)


Lesenswert?

HansWurst schrieb:
> Hat wer eine Idee warum die als Ausgang gesetzen Pins 3,3V haben, wenn
> sie nicht direkt auf Masse liegen?

Warum sollte man, auf Ausgang gesetzte Pins, auf Masse legen?

Wenn du das auch nur mit einem Pin machst, wundert mich nix mehr....
Selbst austretender Rauch, würde mich nicht verwundern...

von HansWurst (Gast)


Angehängte Dateien:

Lesenswert?

Wenn ich das tue sind doch alle pullup deaktiviert. Oder habe ich das 
falsch verstanden?

und laut der Tabelle ist es nicht nötig. Wenn doch warum?

von HansWurst (Gast)


Lesenswert?

Ulrich F. schrieb:
> HansWurst schrieb:
>> Hat wer eine Idee warum die als Ausgang gesetzen Pins 3,3V haben, wenn
>> sie nicht direkt auf Masse liegen?
>
> Warum sollte man, auf Ausgang gesetzte Pins, auf Masse legen?
>
> Wenn du das auch nur mit einem Pin machst, wundert mich nix mehr....
> Selbst austretender Rauch, würde mich nicht verwundern...

EINGANG sorry mein Fehler aber es ist definitiv ein Eingang.

Also noch mal die Frage:
Hat wer eine Idee warum die als EINGANG gesetzen Pins 3,3V haben, wenn
sie nicht direkt auf Masse liegen?

von Ulrich F. (Gast)


Lesenswert?

Unbeschaltete Inputs schweben.
Es ist Zufall, welche Spannung da anliegt.
u.a. abhängig von Temperatur, Exemplarstreuung, Störeinstreuung, usw.



Ist da allerdings ein Pulldown dran, Dann ist entweder der Pulldown 
unterbrochen, oder der Portpin gebraten.

Also, ein Defekt, oder das Schaltbild oben stimmt nicht.

von HansWurst (Gast)


Lesenswert?

Ulrich F. schrieb:
> Ist da allerdings ein Pulldown dran, Dann ist entweder der Pulldown
> unterbrochen, oder der Portpin gebraten.
>
> Also, ein Defekt, oder das Schaltbild oben stimmt nicht.

Also der Pulldown(10k) steckt wie folgt:

GND-- 10k -- Pin -- Schalter -- Vcc

Das Problem mit den Pulldowns habe ich an allen Pins und die Löstellen 
sehen gut aus.

Ein Disablen der Pullups im SFIOR blieb auch ohne Erfolg. Was kann es 
sein?

von Teo D. (teoderix)


Lesenswert?

Design Fehler? Keine Masseverbindung zu den 10K Widerständen?

von Ulrich F. (Gast)


Lesenswert?

HansWurst schrieb:
> Also der Pulldown(10k) steckt wie folgt:
>
> GND-- 10k -- Pin -- Schalter -- Vcc

Dann können da bei 5V Versorgung keine 3,3V anliegen.

1. Deine Annahme/Schaltbild entspricht nicht der Realität.
2. Der Atmega ist zerbraten
Such dir was aus.....

von HansWurst (Gast)


Lesenswert?

Ulrich F. schrieb:
> 1. Deine Annahme/Schaltbild entspricht nicht der Realität.
> 2. Der Atmega ist zerbraten
> Such dir was aus.....

Schaltbild stimmt.
wie bekomme ich heraus ob der atmega zerbraten ist?

von adolphus (Gast)


Lesenswert?

HansWurst schrieb:
> Ulrich F. schrieb:
>> 1. Deine Annahme/Schaltbild entspricht nicht der Realität.
>> 2. Der Atmega ist zerbraten
>> Such dir was aus.....
>
> Schaltbild stimmt.
> wie bekomme ich heraus ob der atmega zerbraten ist?

probier einen anderen pin aus

von HansWurst (Gast)


Lesenswert?

Gleiches Problem.

von Teo D. (teoderix)


Lesenswert?

HansWurst schrieb:
> Schaltbild stimmt.

Die Schaltung auch?
Geprüft?

von Ingo L. (corrtexx)


Lesenswert?

Beleuchteter Schalter?

von Felix P. (fixxl)


Lesenswert?

Wo ist der Code der anderen Funktionen, die du in der main-Funktion 
aufrufst? Ohne den kompletten Quellcode ist das hier nur Raterei, da 
einzelne Funktionen für sich wunderbar laufen können, im Zusammenspiel 
mit anderen aber nicht.

von HansWurst (Gast)


Lesenswert?

Ingo Less schrieb:
> Beleuchteter Schalter?

Drahtbrücke im Steckbrett.

Felix Pflaum schrieb:
> Wo ist der Code der anderen Funktionen, die du in der main-Funktion
> aufrufst? Ohne den kompletten Quellcode ist das hier nur Raterei, da
> einzelne Funktionen für sich wunderbar laufen können, im Zusammenspiel
> mit anderen aber nicht.

Hier sind die Funktionen aber an dennen liegt es nicht.

// The LED is connected to Port G3 and GND.
#define LED_RT_ON()  {PORTG |= 8; }
#define LED_RT_OFF() { PORTG &= ~8; }

// The LED is connected to Port G4 and GND.
#define LED_GR_ON()  { PORTG |= 16; }
#define LED_GR_OFF() { PORTG &= ~16; }


void initOnBoardLed()
{
  DDRG |= 8;
  DDRG |= 16;
}

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

HansWurst schrieb:
> Drahtbrücke im Steckbrett.

... und Wackelkontakt am Pulldown-Widerstand.

von Amateur (Gast)


Lesenswert?

> DDRG |= 8;
> DDRG |= 16;
... geht auch kürzer.

von HansWurst (Gast)


Lesenswert?

Frank M. schrieb:
> ... und Wackelkontakt am Pulldown-Widerstand.

Nein. leider nicht

von hp-freund (Gast)


Lesenswert?

Port G?
Welcher Atmega ist es denn?
Da liegen nicht zufällig Sonderfunktionen wie JTAG o.ä. an?

von HansWurst (Gast)


Lesenswert?

es ist ein 128. und PortG ist die vorhandene OnBoard LED

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

HansWurst schrieb:
> es ist ein 128. und PortG ist die vorhandene OnBoard LED

Ähem, willst Du damit sagen, dass Du den Schalter an einem Pin 
betreibst, an dem auch eine LED angeschlossen ist, welche u.U. den Pin 
nach High zieht?

von hp-freund (Gast)


Lesenswert?

Bei dem ist JTAG an Port F.

HansWurst schrieb:
> vorhandene OnBoard LED

Was ist auf dem Board sonst noch so vorhanden?
PD2 PD3 wären für UART1 zuständig.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

hp-freund schrieb:
> Was ist auf dem Board sonst noch so vorhanden?
> PD2 PD3 wären für UART1 zuständig.

PD2 ist der RX-Pin. Wenn da ein MAX232 dranhängt, wärs kein Wunder, dass 
der Pulldown den Eingang nicht auf 0 ziehen kann.

von Rolf Magnus (Gast)


Lesenswert?

HansWurst schrieb:
> wie bekomme ich heraus ob der atmega zerbraten ist?

Indem du ihn durch einen neuen ersetzt und prüfst, ob der sich anders 
verhält.

Amateur schrieb:
>> DDRG |= 8;
>> DDRG |= 16;
> ... geht auch kürzer.

Vor allem lesbarer. Im Eingangsposting stand da noch PORTD. Warum ist 
das auf einmal PORTG?
Ansonsten gilt beim Mega128 immer die erste Frage: 
Mega103-Compatibility-Fuse ausgeschaltet? JTAG ausgeschaltet? Alle 
Masse- und VCC-Pins korrekt beschaltet?

von Ulrich F. (Gast)


Lesenswert?

HansWurst schrieb:
> es ist ein 128. und PortG ist die vorhandene OnBoard LED

Interessante Information!
Es gibt ein Board!

Wie wäre es mal mit dem Schaltplan des Boards?

Denn dass du da einen Bock schießt, da sind wir uns einig.
Nur wo?
Offensichtlich außerhalb deines Blickwinkels....

von Dussel (Gast)


Lesenswert?

Mal ganz blöd gefragt, ich kenne deinen Wissensstand ja nicht: Bist du 
sicher, dass das Board mit 5V läuft und nicht mit 3,3V? Ein 5V-Netzteil 
heißt noch nicht, dass der Controller auch mit 5V läuft.

von Teo D. (teoderix)


Lesenswert?

Zeig doch einfach mal'n Foto vom Aufbau!

von Teo D. (teoderix)


Lesenswert?

https://www.mikrocontroller.net/articles/Netiquette
Speziell:
https://www.mikrocontroller.net/articles/Netiquette#Happy_End

Auch wenn's so peinlich ist wie zu übersehen, das die Stromschienen 
des verwendeten Breadboards sedimentiert sind und nur ein paar Brücken 
gefehlt haben :)


PS: Falls ich einfach nur zu ungeduldig war - SORRY

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
Noch kein Account? Hier anmelden.