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


von Niels K. (niels-k)


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?

von Ben (Gast)


Lesenswert?

hast du pB2 mit pD2 verwechselt? INT0 ist pD2.

von Niels K. (niels-k)


Lesenswert?

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

von Ben (Gast)


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?

von Simon K. (simon) Benutzerseite


Lesenswert?

Code?

von holger (Gast)


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?

von spess53 (Gast)


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

von Niels K. (niels-k)


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.

von holger (Gast)


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.

von Niels K. (niels-k)


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.

von Gast (Gast)


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 ...

von spess53 (Gast)


Lesenswert?

Hi

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

MfG Spess

von holger (Gast)


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.

von Niels K. (niels-k)


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.

von Gast (Gast)


Lesenswert?

>und der ATmega8 den Pin auf High setzt

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

von Niels K. (niels-k)


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

von Ben (Gast)


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.

von spess53 (Gast)


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

von Simon K. (simon) Benutzerseite


Lesenswert?

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

von Ben (Gast)


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

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.