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?
Peinlich. Ich habe PD2 gedacht und PB2 geschrieben. Mein Problem liegt natürlich bei PD2. Danke für den Hinweis.
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?
>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?
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
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.
>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.
@ 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.
> 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 ...
Hi Sehe ich das richtig, das der Pin ohne geschlossenen Taster offen ist? MfG Spess
>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.
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.
>und der ATmega8 den Pin auf High setzt
Hoffentlich über den internen Pullup-Widerstand und nicht über Output L.
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
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.
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
Und die Entprellung über den Kondensator kann man sich eigentlich sparen, wenn man eh auf einen Mikrocontroller geht damit.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.