atemega Pulldown Widerstand erfüllt seine Funktion nicht

Gast #4118792
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?
Angehängte Dateien:
Gast #4118802
Wenn ich mich richtig erinnere, schaltest du den internen 
Pullupwiderstand an PD2 ein. Damit hast du einen Spannungsteiler 
zwischen Pullup und Pulldown.
Gast #4118809
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.
Gast #4118810
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.
Gast #4119535
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?
Gast #4119577
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...
Gast #4119598
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?
Gast #4119602
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.
Gast #4119626
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?
Gast #4119652
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.....
Gast #4119675
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
#4119686
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.
Gast #4119722
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;
}
Gast #4119776
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?
Gast #4119801
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....
Gast #4119829
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.