ATmega8 PB2 (nicht INT0) als Eingang

OP #1466789
Hallo. Ich habe folgendes Problem:

Ich verwende einen ATmega8 und möchte den PB2, auf dem auch der INT0 
liegt, als Eingang verwenden. Ich habe bereits alle Kombinationen zum 
Setzen als Eingang verwendet (Assembler, Bascom), aber ich habe immer 
ein Signal auf dem Port, dessen Mittelwert der Spannung bei rund 1.5 
Volt liegt.

Ziehe ich PB2 mit einem 2M2 gegen Masse, dann funktioniert der Eingang 
korrekt. Habe verschiedene Chips probiert - ist immer das selbe. 
Schaltung ist i.O. und enthält keine latenten Verbindungen.

Was kann ich machen, damit ich PB2 ohne Messwiderstand als Eingang 
verwenden kann?
Gast
aber in der schaltung und im programm hast du es richtig?

was hängt noch an dem pin dran? ich denk nicht, daß diese restspannung 
aus dem AVR kommt, sondern eher von extern. und was soll dieser pin 
machen, ist das ein taster gegen +5V oder was anderes?
Gast
>Was kann ich machen, damit ich PB2 ohne Messwiderstand als Eingang
>verwenden kann?

Den internen Pullup einschalten. Falls du Pulldown brauchst
musst du den extern anbauen. Offen lassen kannst du den Pin
auf keinen Fall. Dann fängt der sich alles mögliche ein.
Von Netzbrummen bis Handy. Was hängt an dem Pin eigentlich dran?
Gast
Hi

>Ich habe bereits alle Kombinationen zum
>Setzen als Eingang verwendet (Assembler, Bascom), aber ich habe immer
>ein Signal auf dem Port, dessen Mittelwert der Spannung bei rund 1.5
>Volt liegt.

Unter welchen Bedingungen und wie gemessen?

MfG Spess
OP
Etwas detaillierter:

Zunächst das Programm:

$regfile = "m8def.dat"
$baud = 19200

$crystal = 11059200

Config Portc.0 = Output
Led Alias Portc.0

Config Pind.2 = Input
Ausloeser Alias Pind.2

Do
Portd.2 = 0
Led = Ausloeser
Loop


Es hängt an PD2 ein Eingabetaster dran. Dieser liegt auf 5V. Wenn er 
geschlossen wird liegen 5V=VCC an PD2 an. Durch das Ziehen von PD2 auf 
Grund vor jedem Auslesen müßte man Wackler o.ä. kompensieren können. 
Habe es eben mit meinem Oszi nachgemessen. Sobald ich mit dem Taster an 
den Pin komme, schaltet dieser wie gewollt, sonst hängt der irgendwo.

By the way: Ich will jetzt kein Meckern, in Bezug auf Bascom allg. 
hören.
Gast
>Wenn er
>geschlossen wird liegen 5V=VCC an PD2 an. Durch das Ziehen von PD2 auf
>Grund vor jedem Auslesen müßte man Wackler o.ä. kompensieren können.

Genau, und der PD2 schliesst VCC gegen GND kurz.
Schalte den Taster gegen GND und nimm den internen Pullup.
OP
@ holger: Genau das habe ich anfangs auch angenommen. Aber es verhält 
sich laut Datenblatt so, dass durch die interne Schutzbeschaltung 
(Dioden) kein Spannungseinbruch zu verzeichnen ist. Laut Oszi ist dem 
auch so.

Der Chip läuft sobald, man PD2 mit dem Tastkopf des Oszis verbindet 
wunderbar. Das heißt, dass beim Drücken des Tasters, an PD2 die LED 
leuchtet und sonst nicht.

Ohne Oszi flimmert/flackert die LED, obwohl der Eingang ja definiert 
ist, dadurch das GND an den Eingang gelegt wird.

Bisher habe ich es immer anderes herum gemacht und GND an den Pin 
gelegt, das funktionierte auch ganz ordentlich.
Gast
> Config Pind.2 = Input

> Portd.2 = 0

Was bezweckst Du mit dem 2. Befehl? In dieser Konstellation hat er 
keinerlei Wirkung! Selbst wenn man Portd.2 auf 1 setzen würde, wäre der 
interne PullUp eingeschaltet. Aber der Pin kann weder mit 1 noch mit 0 
auf GND gelegt werden (da er immer Eingang bleibt).

Schalte in Deinem Fall einen Widerstand vom Pin nach GND (ca. 10k), lass 
"Portd.2 = 0" weg, und die Welt ist in Ordnung ...
Gast
>Der Chip läuft sobald, man PD2 mit dem Tastkopf des Oszis verbindet
>wunderbar. Das heißt, dass beim Drücken des Tasters, an PD2 die LED
>leuchtet und sonst nicht.

Da ist ja dann auch der Eingangswiderstand des Osci als
Pulldown aktiv.

>Ohne Oszi flimmert/flackert die LED, obwohl der Eingang ja definiert
>ist, dadurch das GND an den Eingang gelegt wird.

Er wird aber nicht an GND gelegt wenn PIND2 kein Ausgang
ist. Du schaltest nur den Pullup ab. Und dann floatet der Pin.
Also externen Pulldown dran oder Taster anders anschliessen.
OP
OK. Dann scheint es nur in der anderen Richtung von VCC auf Ground zu 
gehen. Schade - da muss ich meine Platine ändern. Wollte eben mal was 
Neues ausprobieren. Aber ist irgendwie auch logisch, wenn ich mir die 
Beschaltung des Eingangs anschaue. Danke für vielen Antworten. Habe es 
jetzt Anschlusstechnisch geändert, so das GND am Schalter 
durchgeschaltet wird und der ATmega8 den Pin auf High setzt und wartet 
bis er fällt.
OP
Hallo. Ja klar über den Pullup. Ist heute nicht mein Tag. Ich glaube ich 
gehe mal ne Runde draußen laufen. Der Vollständigkeit halber hier die 
korrigierte Version mit GND am Schalter und 5Volt über Pullup.

$regfile = "m8def.dat"
$baud = 19200

$crystal = 11059200

Config Portc.0 = Output
Led Alias Portc.0

Config Pind.2 = Input
Ausloeser Alias Pind.2

Do
Portd.2 = 1
Waitms 20
Led = Ausloeser

Loop
Gast
bloß nicht den taster an 5V wenn es sich vermeiden läßt. der taster 
gehört an masse, den pullup kannste den internen des AVR nutzen und über 
den taster kommt noch ein kleiner kondi für eine grobe entprellung. 
gewöhn dir das gleich an, für sowas sind die internen pullups da und es 
gibt in der regel auch kein problem wenn es mal jemand mit dem taster 
und etwas kontaktspray gut gemeint hat.
Gast
Hi

>bloß nicht den taster an 5V wenn es sich vermeiden läßt. der taster
>gehört an masse,...

Was ist das denn für ein Spruch? Entweder Taster an VCC und Pulldown 
oder Taster an Masse und Pullup.

MfG Spess

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 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.