mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATmega8 PB2 (nicht INT0) als Eingang


Autor: Niels Keller (niels-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Ben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hast du pB2 mit pD2 verwechselt? INT0 ist pD2.

Autor: Niels Keller (niels-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peinlich. Ich habe PD2 gedacht und PB2 geschrieben. Mein Problem liegt 
natürlich bei PD2. Danke für den Hinweis.

Autor: Ben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Code?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Niels Keller (niels-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Autor: Niels Keller (niels-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ 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.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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 ...

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Sehe ich das richtig, das der Pin ohne geschlossenen Taster offen ist?

MfG Spess

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Autor: Niels Keller (niels-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>und der ATmega8 den Pin auf High setzt

Hoffentlich über den internen Pullup-Widerstand und nicht über Output L.

Autor: Niels Keller (niels-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Ben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und die Entprellung über den Kondensator kann man sich eigentlich 
sparen, wenn man eh auf einen Mikrocontroller geht damit.

Autor: Ben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. pullUPs hab ich integrierte, pullDOWNs müßte ich bestücken
2. wenn man lust auf die entprellung in software hat kann man das gerne 
tun

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.