Forum: Mikrocontroller und Digitale Elektronik Schalten eines Tasters


von Niklas Weiblen (Gast)


Angehängte Dateien:

Lesenswert?

In Form eines Schulprojektes möchte ich dieses LCD-Display 
programmieren. Zum Ein- und Ausschalten habe ich einen Taster verbaut, 
welcher an PC4 und PC5 liegt. Nachdem ich einen dieser Ports als Ausgang 
festgelegt habe und diesen aktiviert habe, möchte ich nun den anderen 
Port als Eingang nutzen. Jedoch funktioniert dies nicht so wie gewollt.

Ich programmiere in Assembler und nachdem ich die DDR des ATMega8 
eingestellt habe, funktioniert die gewollte Funktion nicht. Mit Pull-Up 
und Pull-Down Funktionen kenne ich mich nicht so gut aus.

Es wäre super, wenn mir da jemand helfen könnte.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Schaltplan? Programm? Geheimsache?

von Frank S. (_frank_s_)


Lesenswert?

Setze im Quellcode den richtigen Befehl.


Hilft dir der Hinweis nicht?

Ich sehe deinen Quelltext nicht und kann dir nicht bei der Fehlersuche 
helfen.

von Einer K. (Gast)


Lesenswert?

Niklas Weiblen schrieb:
> Mit Pull-Up
> und Pull-Down Funktionen kenne ich mich nicht so gut aus.

Dann solltest du das lernen!
Dazu gibts genug im Internet.

PS:
2 Pins für einen Taster?
Machbar, aber voll unnötig.

von Karl M. (Gast)


Lesenswert?

Niklas Weiblen schrieb:
> Pull-Up und Pull-Down Funktionen

was soll das sein?

Was verstehst Du darunter und was hat dein µC damit zu tun?

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

>> Pull-Up und Pull-Down Funktionen
> was soll das sein?
> Was verstehst Du darunter und was hat dein µC damit zu tun?
Bist Du sicher, daß Du hier helfen kannst?

> Dann solltest du das lernen!
> Dazu gibts genug im Internet.
ZONK!! Wieso schreibst Du überhaupt wenn Du
sowieso keine Lust hast, ihm zu helfen?

Ey nee... ist wohl wieder Freitag heute.

von Einer K. (Gast)


Lesenswert?

Ben B. schrieb:
>>> Pull-Up und Pull-Down Funktionen
>> was soll das sein?
>> Was verstehst Du darunter und was hat dein µC damit zu tun?
> Bist Du sicher, daß Du hier helfen kannst?
>
>> Dann solltest du das lernen!
>> Dazu gibts genug im Internet.
> ZONK!! Wieso schreibst Du überhaupt wenn Du
> sowieso keine Lust hast, ihm zu helfen?
>
> Ey nee... ist wohl wieder Freitag heute.

Wenn hier einer NICHTS konstruktives beigetragen hat, außer Streit zu 
schüren, Zwietracht zu sähen,  dann bist ja wohl du das.

Damit der gehört der heute FreitagsVogelAbschuss eindeutig dir.

von HildeK (Gast)


Lesenswert?

Ben B. schrieb:
> Arduino Fanboy D. schrieb:
>> Dann solltest du das lernen!
>> Dazu gibts genug im Internet.
> ZONK!! Wieso schreibst Du überhaupt wenn Du
> sowieso keine Lust hast, ihm zu helfen?

Das hätte ich als erstes auch gesagt und muss Arduino Fanboy voll 
zustimmen. Schulprojekt; was lernen oder vorkauen?
Zumindest damit könnte er mal anfangen, auch wenn es aus dem 
GCC-Tutorial ist: 
https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Taster_und_Schalter

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Wenn hier jemand ankommt und um Hilfe bittet und ihr blafft den nur an 
mit sinnbildlich "Such Dir den Scheiß doch gefälligst im Internet 
zusammen und nerv uns nicht weiter damit!" dann ist das einfach asozial. 
Dann braucht niemand dieses Forum, kann man es bitte komplett löschen 
wenn man sowieso nur ans Internet verwiesen wird?

Beitrag #6080915 wurde von einem Moderator gelöscht.
Beitrag #6080926 wurde von einem Moderator gelöscht.
von Frank S. (_frank_s_)


Lesenswert?

Damit es auch Ben B. gefällt, versuche ich es einmal in höflich:

-------------------------------------------------------

Werter Niklas Weiblen,
es freut mich, daß du mit deiner Suche im Forum gelandet bist und heiße 
dich recht herzlich willkommen.

Leider kann deine Frage im Moment nicht erschöpfend beantwortet werden, 
da leider dein vorhandenes Programm nicht mitveröffentlicht wird. Auch 
wäre es hilfreich, deinen Schaltplan mit anzugeben.

MfG von der Spree
Frank

-------------------------------------------------------

oder wie bereits geschrieben:

Ben B. schrieb:
> Schaltplan? Programm? Geheimsache?

von Achherrjeh (Gast)


Lesenswert?

Mein Gott...
Sobald jemand Schulprojekt hier schreibt wird direkt gefragt ob man 
lernen will oder alles vorgekaut haben möchte.

Wie gut, dass man früher noch seine Eltern fragen konnte bei 
Hausaufgaben. Heute wird man direkt an das Internet verwiesen mit der 
Bitte selber zu lernen.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Achherrjeh schrieb:
> Wie gut, dass man früher noch seine Eltern fragen konnte bei
> Hausaufgaben.

Bei meinen jugendlichen Basteleien habe ich auch nicht meine Eltern 
gefragt, sondern mich stunden-, tage und wochenlang durch die spärlich 
vorhandene Literatur gearbeitet. Und das bedeutete eben auch, zu 
verschiedenen Bibliotheken zu fahren. Ich sage damit nicht, dass die 
heutige Jugend auch stundenlang herumreisen muss, in der Hoffnung, in 
der jeweiligen Bibliothek interessante Literatur zu finden, sondern dies 
kann natürlich auch per Internetrecherche erfolgen. Wer aber nicht 
bereit ist, so etwas eigeninitiativ zu leisten, hat eben Pech gehabt.

von Manfred (Gast)


Angehängte Dateien:

Lesenswert?

Andreas S. schrieb:
> Bei meinen jugendlichen Basteleien habe ich auch nicht meine Eltern
> gefragt, sondern mich stunden-, tage und wochenlang durch die spärlich
> vorhandene Literatur gearbeitet.

Ich auch, weil die von Strom keinerlei Ahnung hatten.

Offen bleibt, ob Niklas in der Schule am Handy gedaddelt hat anstatt 
aufzupassen, Taster am Port sind doch absolute Basisdinge.
Egal, ich versuche mal, konstruktiv zu sein:

Niklas Weiblen schrieb:
> habe ich einen Taster verbaut

Ich male Dir jetzt ein Bildchen, wie man es üblicherweise macht.
Meistens die linke Variante, Taster nach Masse (Gnd). Den 
Pullup-Widerstand kann man sich sparen, wenn man den Eingang des ATMega 
passend konfiguriert, Pullups sind da nämlich integriert.

Wie Du dafür das Portregister setzen musst, erarbeitest Du Dir bitte 
selbst.

Möchte man den internen Pullup nicht verwenden, lötet man den Widerstand 
vom Taster nach Plus eben ein, über den Daumen 1..10 kOhm.

Wenn ich an meine ersten Gehversuche mit 6502 in Assembler denke: Ich 
habe einen Schalter an einen Port geklemmt und an einen anderen Port 
eine LED. Dazu ein Programm, was nichts weiter tat, als den Schalter 
abzufragen und die LED zu steuern. Das solltest auch Du tun, Zerlegung 
in überschaubare Brocken und Grundfunktionen verstehen.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Na der 6502 ist 35 Jahre her, der hat mit heutigen µCs nicht mehr viel 
zu tun. Der hatte z.B. keinen internen Programmspeicher, der brauchte 
noch etwas ROM, RAM und zugehörige Adresslogik, damit er überhaupt 
funktioniert.

von Mark S. (voltwide)


Lesenswert?

Ben B. schrieb:
> Na der 6502 ist 35 Jahre her, der hat mit heutigen µCs nicht mehr viel
> zu tun.
Na und, das ändertr nichts an der Richtigkeit der vorausgegangen 
Aussage. Ansonsten gibt es außer Dir hier bestimmt jede Menge Graubärte 
die seinerzeit diese 8048-, 6502-, Z80-CPUsa programmiert haben. Mußt Du 
nicht mit rum prahlen.

von Manfred (Gast)


Lesenswert?

Ben B. schrieb:
> Na der 6502 ist 35 Jahre her, der hat mit heutigen µCs nicht mehr
> viel
> zu tun. Der hatte z.B. keinen internen Programmspeicher, der brauchte
> noch etwas ROM, RAM und zugehörige Adresslogik, damit er überhaupt
> funktioniert.

Du hast natürlich recht, der steckt auf einer Eurokarte mit externen 
Portbausteinen, RAM, EEPROM, Resetbaustein ... und es ist lange her. 
Mein erster Mikrocontroller mit allem drin hieß dann Jahre später 
68HC805.

Das ändert aber absolut garnichts an der prinzipiellen Vorgehensweise: 
Ich programmiere einfache Teilaufgaben wie z.B. Abfrage eines Ports, LED 
blinken lassen etc. und verschaffe mir damit funktionierende 
Progrämmchen, auf die ich später wieder zugreifen kann.

Da ich für mich keine Notwendigkeit für ASM sehe, setze ich den AT328 
als Arduino ein. Mit dem habe ich vor ein paar Jahren genau das gleiche 
gemacht: Taster, LEDs, Poti und Display dran und ein paar Tage 
Grundfunktionen bespielt, bevor ich mein echtes Projekt begonnen habe.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Ich bin zu jung um mit dem 6502 herumgespielt zu haben. Ich war froh, 
daß das 6510-Derivat in meinem C64 funktionierte und habe später 
irgendwann aus Spaß einen Minirechner mit einem 8086 zusammengebaut (der 
ähnliche Anforderungen hat wie der 6502). Aber praktisch eingesetzt 
kamen gleichen µCs, keine CPU-Minimalsysteme mehr.

von Manfred (Gast)


Angehängte Dateien:

Lesenswert?

Ben B. schrieb:
> Ich bin zu jung um mit dem 6502 herumgespielt zu haben.

Ich habe 1987 eine 6502-Karte von Hand layoutet, die dann in Prüfmitteln 
eigesetzt wurde. Ich wurde viele Jahre gut dafür bezahlt, jeden Tag zu 
basteln :-)

Aber: Jung oder Prozessortyp sind zweitrangig, ich wollte eine 
grundlegende Arbeitsweise darstellen, sind wir uns zumindest da 
halbwegs einig? Auch Du wirst nicht auf Anhieb eine komplexe Anwendung 
geschrieben haben, sondern Dich erstmal mit überschaubaren Sachen 
befasst haben.

> Aber praktisch eingesetzt kamen gleichen µCs,
> keine CPU-Minimalsysteme mehr.

Dazu kam ich erst später, und wurde dann leider von der Hardware 
entfernt. Beruflich hat mir das den A* gerettet, so dass ich Hardware 
schon lange nur noch privat mache.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Puh. Ich weiß ehrlich nicht mehr, was mein erstes Projekt mit einem µC 
war und wie komplex das war. Es war mehr als eine blinkende LED (wobei 
alle meine Projekte eine Status-LED am µC bekommen wenn ich einen Pin 
dafür frei habe). Ich glaube das war gleich "was mit Display" und 
RS232-Kommunikation, wobei ich das nicht jedem Anfänger empfehlen würde. 
Wenn ich nicht schon vorher ein Verständnis gehabt hätte, wie 
Daten(transfer) elektrisch aussehen, hätte ich das nie hinbekommen. Ich 
weiß noch, daß ich damit viel mit dem ADC rumgespielt habe, was für Mist 
man damit alles so messen und an den PC schicken kann.

Meinen ersten Kontakt mit µCs hatte ich mit PIC-Controllern, nachdem ich 
so ein "komisches Ding" in einer Akku-Notleuchte für Treppenhäuser 
gefunden habe und mir nicht gleich erklären konnte, was dieser IC da 
drin macht. Ich hatte nicht so viel Intelligenz in einer Akku-Leuchte 
erwartet, ein paar einfache Transistoren mit Hühnerfutter hätten es auch 
getan.

Folglich hab ich angefangen mit den PICs zu basteln, bis ich auf die 
AVRs gestoßen bin - und gemerkt habe, wie schlecht der Befehlssatz der 
PICs ist.

Ich glaube das erste AVR-Projekt war das AN910, integriert auf ein 
Test-Board für die AVRs und dann ein ähnlicher Weg mit Display dran, 
RS232->PC dran, ADC-Spielereien... diverse Zeitschalter oder 
programmierbare RGB-LED-Driver, Steuerungen von Netzteilen, Ladegeräte, 
Alarmanlagen, Mini-SPS für sowas wie Torsteuerungen... würde behaupten 
es gibt sehr wenig, was ich damit nicht hinkriege.

Was ich bis heute so klasse an diesen µCs finde - im Vergleich zu 
CPU-Systemen - du bekommst einen einzelnen Schaltkreis in beliebiger 
Baugröße, 5V dran und dir stehen out-of-the-box 4..20 MIPS 
Rechenleistung zur Verfügung. Was die Dinger dann noch in Hardware 
können, wenn ich daran zurückdenke wie lange ich für den RS-232 
Bootloader in dem Mini-8086 gebraucht habe (der war im ROM abgelegt und 
hat nichts weiter gemacht als ein Programm vom PC in das RAM zu kopieren 
und zu starten) und wie einfach sowas mit einem AVR ist...

von Niklas Weiblen (Gast)


Angehängte Dateien:

Lesenswert?

Zunächst möchte ich mich bei den vielen Antworten in der kurzen Zeit 
bedanken. Ich möchte meine flüchtig geschriebene Frage ändern und mich 
bezüglich des Pull-Ups deutlicher ausdrücken. Ich bin mir der Funktion 
des Widerstandes bewusst. Jedoch weiß ich nicht, warum er in meinem 
Programm nicht funktioniert.

Dahingehend bin ich kein Schüler der am Handy daddelt, zudem ich gar 
keine Zeit dazu habe, nicht aufzupassen :D . Finde es ein wenig schade, 
dass jeder hier so negativ von Schülern denkt.


Um es zu verdeutlichen hänge ich einen Schaltplan und einen Teil meines 
Testcodes an.

Den internen Pullup, habe ich nach meinem Verständnis eingestellt (DDRC 
= 0 und PORTC auf 1.

Außerdem bin ich auch im Klaren, dass es eine sinnlose Verdrahtung ist, 
jedoch werden die Ports nicht benötigt und es wurde so  erfordert.

In der Hoffnung es dieses Mal richtig erklärt und verdeutlicht zu haben

Niklas

von Niklas Weiblen (Gast)


Lesenswert?

EDIT:
1
SBI PORT PORTC,4

von Niklas Weiblen (Gast)


Lesenswert?

OK...Blöd wenn die Katze vorzeitig auf Enter drückt ;D

Ich meine natürlich:
1
SBI PORTC,4

So jetzt aber

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Je nach Netzteil und Schleiferstellung von P1 brennt entweder das Poti 
ab oder die Versorgungsspannung geht in die Knie. Und der LCD-Kontrast 
lässt sich damit auch nicht einstellen.

von Joachim B. (jar)


Lesenswert?

Andreas S. schrieb:
> Und der LCD-Kontrast
> lässt sich damit auch nicht einstellen.

zumindest bekommt man den Kontrast evtl. auf Null bevor das Poti 
abgebrannt ist.

Besser
https://www.mikrocontroller.net/attachment/187720/sch.png

: Bearbeitet durch User
von Niklas Weiblen (Gast)


Lesenswert?

Joachim B. schrieb:
> zumindest bekommt man den Kontrast evtl. auf Null bevor das Poti
> abgebrannt ist.


Funktioniert aber optimal

von Veit D. (devil-elec)


Lesenswert?

Hallo,

deine Tasterschaltung macht keinen Sinn.
Taster zwischen GND und einen Pin, nicht zwei, verschalten und Pullup 
aktivieren. Fertig.

: Bearbeitet durch User
von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Niklas Weiblen schrieb:
> Funktioniert aber optimal

Dann entspricht Dein Schaltplan nicht der tatsächlichen Schaltung.

von Niklas Weiblen (Gast)


Lesenswert?

Andreas S. schrieb:
> Dann entspricht Dein Schaltplan nicht der tatsächlichen Schaltung.

Genau so ist es aber verdrahtet...Aus diesem Grund ist auch der D2 ein 
Ausgang...




Veit D. schrieb:
> deine Tasterschaltung macht keinen Sinn.
> Taster zwischen GND und einen Pin, nicht zwei, verschalten und Pullup
> aktivieren. Fertig.

Und wie auch in meinem letzten Post erwähnt:

Niklas Weiblen schrieb:
> Außerdem bin ich auch im Klaren, dass es eine sinnlose Verdrahtung ist,
> jedoch werden die Ports nicht benötigt und es wurde so  erfordert.

von Niklas (Gast)


Angehängte Dateien:

Lesenswert?

Auch wenn es eigentlich nicht das Thema ist, dass ist meine Verdrahtung 
für die Kontrastspannung.

Wenn etwas an meinem Schaltplan falsch sein sollte, dann hat dies jedoch 
nichts mit der genannten Problematik des Tasters zu tun.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Niklas schrieb:
> Auch wenn es eigentlich nicht das Thema ist, dass ist meine Verdrahtung
> für die Kontrastspannung.

Die Verdrahtung entspricht nicht dem Schaltplan.

> Wenn etwas an meinem Schaltplan falsch sein sollte, dann hat dies jedoch
> nichts mit der genannten Problematik des Tasters zu tun.

Wenn schon der Schaltplan von Fehlern so strotzt, nützt er auch nichts.

von Niklas (Gast)


Lesenswert?

Danke

von Wie der Name schon sagt.... (Gast)


Lesenswert?

Schalten tut der Schalter!

Ein Taster niemals schalten kann!

von Fooji (Gast)


Lesenswert?

Probiere mal die Pinbelegung des Taster aus, ob der wirklich schaltet. 
Das kannst du leicht mit einem Multimeter machen, welches Widerstände 
messen kann.

Alternativ kannst du auch eine LED an den Port C5 und C4 hängen und 
gucken was passiert. Vorwiderstand für die LED nicht vergessen.

P.S. die ganzen alten Trolle hier bei Mikrocontroller.net können einem 
ganz schön auf den Keks gehen.

von Georg (Gast)


Lesenswert?

Wie der Name schon sagt.... schrieb:
> Ein Taster niemals schalten kann!

Das ist der bisher dümmste Post in diesem Thread. Was tut er dann? 
Tasten?

Georg

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Hi,
Auslesen vom Busy-Flag machst Du wohl erst einmal nicht, nehme ich an. 
Dafür müsstest Du nämlich R/W extra herausführen und zwischen H und L 
wechseln.
R/W ständig auf GND setzen, also Leistenkontakt 15. Reicht für 
Ausgabe-Test völlig.

OT
SCNR
Wieder jemand der im Vierbit-Modus D0 bis D3 auf GND beschaltet.
Wir hatten uns mit absoluter Mehrheit doch am Ende der jahrelangen 
Diskussion dazu nach Hauen und Stechen schlussendlich dazu entschlossen, 
diese Pins nicht zu beschalten.
/OT

Die Tastenfunktionen mit SBIS und Pollingschleife setzen vorraus,
dass der dezidierte Port "festgenagelt" wird.
Wie willst Du aus dieser Pollingschleife rauskommen?

  stop:
  rjmp stop
Programm läuft einmal durch und dann FIN

Niklas Weiblen schrieb:
> Nachdem ich einen dieser Ports als Ausgang
> festgelegt habe und diesen aktiviert habe, möchte ich nun den anderen
> Port als Eingang nutzen. Jedoch funktioniert dies nicht so wie gewollt.

ciao
gustav
P.S.
vor no list und list fehlt ein Punkt.
sorry

: Bearbeitet durch User
von Niklas (Gast)


Lesenswert?

Karl B. schrieb:
> Auslesen vom Busy-Flag machst Du wohl erst einmal nicht, nehme ich an.

Ist in Planung, aber erst vorher wird sich noch an den Taster 
hergemacht.

Karl B. schrieb:
> Wieder jemand der im Vierbit-Modus D0 bis D3 auf GND beschaltet.
> Wir hatten uns mit absoluter Mehrheit doch am Ende der jahrelangen
> Diskussion dazu nach Hauen und Stechen schlussendlich dazu entschlossen,
> diese Pins nicht zu beschalten.

Das hier ist mein erster Thread. Habe nicht allzu viele 
elektrotechnische Kenntnisse und weiß demnach nicht, warum diese 
Verdrahtung ein Nachteil ist.
Kann die Leiterbahnen aber natürlich noch auftrennen.

Karl B. schrieb:
> Wie willst Du aus dieser Pollingschleife rauskommen?

Weiß ich selbst noch nicht... Bin momentan mitten im dualen 
Informatikstudium und kann mich gerade nur langsam an bestimmte Dinge 
herantasten, da auch andere Sachen anfallen.

Wie der Name schon sagt.... schrieb:
> Schalten tut der Schalter!
>
> Ein Taster niemals schalten kann!

Bitte was? Hab ich irgendwas verpasst ;D ?

von Wie der Name schon sagt.... (Gast)


Lesenswert?

Wenn denn ein Taster schalten täte, dann braeuchte man keine Schalter 
mehr.

Ist rein logisch gedacht...

von Wie der Name schon sagt.... (Gast)


Lesenswert?

Wenn denn ein Taster schalten täte, dann braeuchte man keine Schalter 
mehr.

Ist reine Logik.

von Peter D. (peda)


Lesenswert?

Niklas Weiblen schrieb:
> Mit Pull-Up
> und Pull-Down Funktionen kenne ich mich nicht so gut aus.

Ein MOSFET (µC-Eingänge sind MOSFETs) ist spannungsgesteuert, d.h. man 
muß eine Spannung anlegen. Ansonsten bleibt seine Eingangskapazität auf 
die letzte angelegte Spannung geladen.
Um nun einen offenen Eingang (nicht betätigt) erkennen zu können, muß 
man den Pullup einschalten, um den MOSFET auf High umzuladen. Logischer 
Weise muß dann die gedrückte Taste gegen GND schließen, d.h. sie lädt 
den MOSFET auf Low um.
losgelassen = 1
gedrückt = 0

von Peter D. (peda)


Lesenswert?

Karl B. schrieb:
> Wieder jemand der im Vierbit-Modus D0 bis D3 auf GND beschaltet.
> Wir hatten uns mit absoluter Mehrheit doch am Ende der jahrelangen
> Diskussion dazu nach Hauen und Stechen schlussendlich dazu entschlossen,
> diese Pins nicht zu beschalten.

Das ist aber kein Zwang.
Solange RW fest auf GND liegt, ist es dem LCD völlig schnurz.
Man kann sie offen lassen, typisch ist ein Pullup von 10..120µA dran. 
Bei Batteriebetrieb ist also GND nicht so dolle.

von Energieverheizer (Gast)


Lesenswert?

Das Hauptproblem in deinem Code ist, das Du nicht PINC ausliest sondern 
nur dessen Adresse.

;I  Hauptprogramm
  main:
  LDI r16, PINC

ändere das auf:

;I  Hauptprogramm
  main:
  in r16, PINC

Dann sollte das funktionieren, auch mit deiner "Suboptimalen" 
Tastenverschaltung...

von Niklas (Gast)


Lesenswert?

Ich wollte doch nur Infos zu meinem Taster... Ich weiß, wie Pullup 
funktioniert.

Peter D. schrieb:
> Ein MOSFET (µC-Eingänge sind MOSFETs) ist spannungsgesteuert, d.h. man
> muß eine Spannung anlegen. Ansonsten bleibt seine Eingangskapazität auf
> die letzte angelegte Spannung geladen.
> Um nun einen offenen Eingang (nicht betätigt) erkennen zu können, muß
> man den Pullup einschalten, um den MOSFET auf High umzuladen. Logischer
> Weise muß dann die gedrückte Taste gegen GND schließen, d.h. sie lädt
> den MOSFET auf Low um.
> losgelassen = 1
> gedrückt = 0

von Joachim B. (jar)


Lesenswert?

Niklas Weiblen schrieb:
> Mit Pull-Up
> und Pull-Down Funktionen kenne ich mich nicht so gut aus.

Niklas schrieb:
> Ich weiß, wie Pullup
> funktioniert.

was denn nun?

Niklas Weiblen schrieb:
> ATMega8

hat doch nur pullup und wie man die einschaltet steht doch im Datenblatt

Niklas schrieb:
> Ich wollte doch nur Infos zu meinem Taster...

den du bis jetzt noch nicht mal benannt hast!

also DDR Bit vom Taster auf input, PORT bit vom Taster auf high.

Da ein Taster 2 Anschlüsse hat muss halt einer der Beiden fest auf GND, 
der andere Port liest dann halt wenn der Taster gedrückt low liefert!

Dann kannst du eine Entprellung vorsehen
https://www.mikrocontroller.net/articles/Entprellung

von Niklas (Gast)


Lesenswert?

Ich hab ja mich später ja auch erklärt. Ich weiß wie eine Pull-Up 
Funktion aussieht und wie diese einzustellen ist. Meine Frage galt 
jedoch der Umsetzung, da es möglich sein müsste, den Taster an PC4 und 
PC5 anzuschließen und diese dann abzufragen. Aus einem bestimmten Grund 
funktioniert dies jedoch nicht.

von Manfred (Gast)


Lesenswert?

Niklas schrieb:
> Ich wollte doch nur Infos zu meinem Taster... Ich weiß, wie Pullup
> funktioniert.

Das glaubt außer Dir niemand.

Schreibe ein einfaches kurzes Programm, welches nur den Taster 
ausliest und eine LED schaltet.

In Anbetracht der nahenden Festtage wäre es auch denkbar, dass Du Dich 
mit Lebkuchen und Gänsebraten befasst und Mikrocontroller den Leuten 
überlässt, die sich ernsthaft damit befassen wollen.

von Energieverheizer (Gast)


Lesenswert?

Niklas schrieb:
> Aus einem bestimmten Grund
> funktioniert dies jedoch nicht.

Den hab ich dir doch genannt...

nicht LDI sondern IN benutzen.

von Niklas (Gast)


Lesenswert?

Energieverheizer schrieb:
> Den hab ich dir doch genannt...
>
> nicht LDI sondern IN benutzen.

Tut mir leid, hab ich wohl überlesen.
Oh man...Wenn es mal nicht das erste mal gewesen wäre, dass ich das 
verwechsele. Ich danke dir, jetzt funktioniert es einwandfrei.

Ich möchte mich auch bei den Anderen bedanken, die mir nicht vorwerfen, 
faul zu sein oder am Handy rumzudaddeln.


Manfred schrieb:
> In Anbetracht der nahenden Festtage wäre es auch denkbar, dass Du Dich
> mit Lebkuchen und Gänsebraten befasst und Mikrocontroller den Leuten
> überlässt, die sich ernsthaft damit befassen wollen.



Geschriebenen Code wollte ich auch nicht haben, da ich mein kleines 
Testprogramm ja schon habe. Mir ging es um das Verständnis, warum es 
nicht funktioniert. Schade, dass du so von mir denkst, da ich sehr gerne 
Informatik studiere und auch beruflich ausübe.


Schade jedoch, dass hier gleich fast jeder so negativ denkt, wenn ein 
Anfänger in Assembler nicht gleich die Kenntnisse besitzt, die hier so 
im Grundniveau des Forums herrschen. Da ich Assembler erst seit 2 Wochen 
effektiv mache, ist es wohl nicht zu erwarten, gleich alle Fehlerquellen 
zu finden und alles von Expertensicht aus zu bewerten. Sonst habe ich 
das Prinzip eines Forums nicht verstanden.

Ich wünsche dennoch alle Frohe Weihnachtstage und ein schönes Fest 
(hoffentlich inklusive Lebkuchen und Gänsebraten ;D)

von Niklas (Gast)


Lesenswert?

Manfred schrieb:
> Das glaubt außer Dir niemand.

Lag ja nun aber nicht daran. Pull-Up war also richtig von mir 
programmiert. Ich glaube wirklich, dass ich Pull-Up verstanden habe.

von Stiller Beobachter (Gast)


Lesenswert?

Niklas schrieb:
> Schade jedoch, dass hier gleich fast jeder so negativ denkt, wenn ein
> Anfänger in Assembler nicht gleich die Kenntnisse besitzt, die hier so
> im Grundniveau des Forums herrschen.

Hi Niklas, gräm Dich nicht. Freu Dich lieber, wie sich einige 
Wichtigtuer hier über zwei Tage blamiert haben. Erst Energieverheizer 
hat die ganz einfache Lösung gezeigt...
Ich denke, daß sich hier einige schämen dürften, und falls nicht ist 
ihnen nicht zu helfen...

von michael_ (Gast)


Lesenswert?

Auf der Platine sind doch zwei Taster.
Warum nimmst du die nicht? Zumindest das Anschlußchema übernehmen.

Für einen Taster zwei PIN verschwenden, habe ich noch nie gesehen.
Woher hast du das?

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Genau, wichtig ist, daß Du es hinbekommen hast.

Immer dran denken: Assembler ist cool. Vieles geht mit Hochsprachen 
schneller und einfacher (vor allem am Anfang), aber ich mag es auch 
lieber, wenn ich die volle Kontroller über den Chip habe und ihm genau 
sagen kann was er machen soll.

Gewöhn Dir bei Assembler an, viele Dinge in Funktionen zu machen. Die 
kannst Du dann später immer wieder verwenden (Dir quasi Deine eigene 
kleine Codesammlung erstellen) und das Hauptprogramm wird wesentlich 
übersichtlicher.

Lerne was der Stack ist und was Interrupts sind. Der AVR kommt in diesen 
Belangen sehr nahe an frühe x86er heran, sehr cool.

Noch ein kleiner Rat, den ich mir aus der Anfangszeit erhalten habe: 
Wenn Du am Controller noch einen Pin frei hast, häng da eine kleine 
low-current-LED dran. Die brauchst Du später nicht mehr benutzen bzw. 
sollte es zu einer Serienfertigung kommen fliegt die raus bzw. wird 
nicht mehr bestückt, aber in der Entwicklung ist es sehr praktisch wenn 
man an bestimmten Stellen im Code sowas einfügen kann wie sinnbildlich 
"mach mal die LED an wenn Du hier bist". Damit lassen sich viele Fehler 
eingrenzen.

von Niklas (Gast)


Lesenswert?

michael_ schrieb:
> Auf der Platine sind doch zwei Taster.
> Warum nimmst du die nicht? Zumindest das Anschlußchema übernehmen.

Wie schon ein paar mal erwähnt, wurde dies so erfordert.

Ben B. schrieb:
> Noch ein kleiner Rat, den ich mir aus der Anfangszeit erhalten habe:
> Wenn Du am Controller noch einen Pin frei hast, häng da eine kleine
> low-current-LED dran

Habe eine von den bereits verlöteten LEDs genau dafür immer dran. Hab 
den Draht nur abgemacht, damit niemand verwirrt ist, warum die LED da 
dran ist

von Niklas (Gast)


Lesenswert?

michael_ schrieb:
> Für einen Taster zwei PIN verschwenden, habe ich noch nie gesehen.
> Woher hast du das?

Wie du siehst, hab ich auf der Leiterplatte eh kaum Platz mehr. Das 
Board dient in dem Fall ausschließlich der LCD. Deswegen ist das aus 
Minimalismus wahrscheinlich so gewählt worden als Aufgabe

von MaWin (Gast)


Lesenswert?

Ben B. schrieb:
> Meinen ersten Kontakt mit µCs hatte ich mit PIC-Controllern

Könnte ja sehr lang her sein, der PIC kam 1975 raus, noch vor dem 8051. 
Damals noch maskenprogrammiert.

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Niklas schrieb:
> Das
> Board dient in dem Fall ausschließlich der LCD.

Hi,
nachdem ich drei LCDs verheizt hatte (!) habe ich mir angewöhnt, der 
Hardware mehr Aufmerksamkeit zu schenken.
Die meisten Fehler passieren beim Anschluss.
Lass mich raten, die nächste Frage kommt bestimmt: "Mein LCD zeigt nur 
schwarze Balken."

Da gibt es eben nichts dran zu rütteln. Wenn das Ding sauber 
initialisiert wird, klappt es ja. Aber bis das soweit ist, ist es oft 
ein steiniger Weg.
Und die Oberschlaumeierroutinen - auch in ASM - sind, ohne dass man es 
zunächst merkt, meistens auf den Spezialfall zugeschnitten und 
keineswegs immer verallgemeinerbar.
Das habe ich auch erst lernen müssen, woauf es ankommt und wo 
Verwechslungen auftreten können, wo Fallstricke lauern.

Jetzt hat sich bei mir hier im Laufe der letzten Jahre eine kleine 
Programmsammlung, wo ich auch weiß, warum ich was wie gemacht habe, 
gebildet.

Die Widerstände R1 bis R4 zum Beispiel erregten grenzenlose Empörung.
OK. Wenn ich rumbastele und noch nicht weiß, in welchem Modus das LCD 
arbeiten soll, wie denn, wenn die sonst aus Antistatikgründen 
aufgestellte Behauptung gilt, kein Anschluss ohne irgendeinen Abschluss.
Und gesetzt den Fall, jetzt wird in den Lesemodus umgeschaltet, weil die 
Software einen Fehler hat. Bumms. Dann habe ich einen satten Kurzschluss 
an den Ports, den es zumindest mit den Widerständen als Strombegrenzung 
zu vermeiden gilt. Diese Überlegung ist doch vom Prinzip her nicht zu 
verteufeln. Gut, wir hatten uns darauf geeinigt, diese Anschlüsse 
offenzulassen. Aber Maßnahmen zur Verhinderung punktueller statischer 
Entladung sollten nach dem Auspacken aus der Antistatiktüte und vor 
endgültiger Verdrahtung doch angeraten sein.

ciao
gustav

Die Sache mit dem IN statt LDI hatte ich schon im Hinterkopf, aber noch 
nicht spruchreif, da noch andere Dinge nicht ganz so sauber.
Das erinnert mich an das Stichwort Memory Mapped. Und eher an die 
Konfiguration der Timerregister etc.

: Bearbeitet durch User
von michael_ (Gast)


Lesenswert?

Niklas schrieb:
> michael_ schrieb:
>> Auf der Platine sind doch zwei Taster.
>> Warum nimmst du die nicht? Zumindest das Anschlußchema übernehmen.
>
> Wie schon ein paar mal erwähnt, wurde dies so erfordert.

Achso, eine Schulaufgabe.

Das Anschlußchema der Taster hast du garantiert nicht übernommen.
Wenn der Lehrer den Taster mit zwei PIN gefordert hat,


Wenn wir schon mal dabei sind, es soll sicher die LCD-Zusatzplatine zu 
dem myAVR sein.

http://shop.myavr.de/Hardware%20-%20Baus%C3%A4tze/myAVR%20Board%20light%20PLUS,%20Bausatz.htm?sp=article.sp.php&artID=200085

Ich sehe aber im Schaltplan keinen Taster, der so angeschlossen ist.
Was macht denn das .hex Testprogramm?

von Stefan F. (Gast)


Lesenswert?

Wie der Name schon sagt.... schrieb:
> Wenn denn ein Taster schalten täte, dann braeuchte man keine Schalter
> mehr. Ist rein logisch gedacht...

Und wenn man "täte" mit ä schreiben kann, bräuchte man "braeuchte" nicht 
mit ae zu schreiben.

Hast du sonst keine Probleme?

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.