Taster LED Änfägerfrage

Gast #715263
Lesenswert?

hallo,
ich möchte gerne mit einem taster eine led einschalten, im forum steht 
nur wie man die led eintasten, jedoch beim lösen des tastes geht sie 
wieder aus.

oder, bei der anderen lösung bleibt sie dauerhaft an.

ich will jedoch die led auf 1 setzen und mit dem gleiche taster wieder 
löschen bzw. ausschalten !

wäre nett, wenn einer von euch mir nen kurzes code beispiel oder einen 
hinweis geben könnte.


desweiteren, wenn ich das geschaft habe, möchte ich "led 1 ist an" am 
lcd ausgeben.

wie ich den lcd ansteuere weiß ich, nur wie mache ich den vermerk o. 
interupt ? der über den zustand der led 1 bestimmt wird.



tim
#715268
Lesenswert?

Code kann ich dir nicht geben, lernt man ja auch nicht so viel dabei ;-)

Was muss dein Programm machen?
Es muss sich "merken", ob die LED an oder aus ist.
Jetzt drückst du deinen Taster: (Achtung, Stichwort: Entprellen)
Das Programm prüft jetzt, ob die LED an oder aus ist und schaltet sie 
entweder ein oder aus. Solange die Taste noch gedrückt ist wird keine 
neuer Schaltvorgang ausgelöst, erst nachdem sie losgelassen worden ist 
und wieder neu gedrückt wird.

Die Sache mit dem LC-Display heben wir uns für später auf....
#715294
Lesenswert?

TIm wrote:
> sorry, programmiere mit assembler und nutze das stk 500 mit dem uc
> amega8515l

Anfänger und Assembler...?
also ich würde jedem Anfänger, der noch nie etwas grösseres als ein 
"Hello World" geschrieben hat, immer wieder Basic oder zumindest C 
empfehlen.

Assembler kannst du nehmen, wenn du weisst, worauf es ankommt. Aber zum 
Einstieg finde ich Assembler deutlich ungeeignet.
#715300
Lesenswert?

>Aber zum Einstieg finde ich Assembler deutlich ungeeignet.

Grenzwertig! Ich habe damals mit einem PIC16F84 und Assembler 
angefangen. Es war sicherlich nicht ganz unproblematisch, da es ja so 
schöne Sachen wie "Banking" gibt. Jetzt benutze ich WinAVR, man bekommt 
schon eine Menge abgenommen. ABER: wenn ich im Debug-Modus das 
Disassembler-Listing vorgesetzt bekomme, fluche ich schon öfters mal und 
nehme mir immer wieder neu vor, endlich mal die Assembler-Befehle zu 
lernen.
Gast #715305
Lesenswert?

warum, mit assebler, - so hab ich das gefühl-, komm eich ganz gut in die 
materie rein !

ich bin erst seid etwas über einer woche dabei und finde assebler, - 
soweit ich die sprache erlebe-, sehr angehem.


und jetzt wieder auf c umzusteigen, wobei ich keinerlei 
programmiererfahrungen habe, naja ich weiß nicht ob mich das weiter 
bringt.


was menst du wäre von vorteil ?

die übersichtlichkeit ?


gruß

tim
Gast #715318
Lesenswert?

Wenn Du mit Assembler gut klarkommst, dann bleib dabei!  Für andere 
Sprachen  kannst Du Dich später immer noch interessieren.  Assembler hat 
den nicht zu unterschätzenden Vorteil, dass Du Deinen Controller richtig 
gut kennenlernst.  Auch C-Programmierer müssen übrigens hin und wieder 
auf Assembler zurückgreifen, nämlich für zeitkritische Sachen, oder 
besondere Problemfälle.
#715320
Lesenswert?

TIm wrote:
> warum, mit assebler, - so hab ich das gefühl-, komm eich ganz gut in die
> materie rein !

War ja auch nur ein Vorschlag. Aber ich bin immernoch der Meinung, das 
du deinem Ziel in Basic deutlich schneller näher kommen würdest.

> ich bin erst seid etwas über einer woche dabei und finde assebler, -
> soweit ich die sprache erlebe-, sehr angehem.

Assembler ist eigentlich nur eine Methode, den Maschinencode, den der 
Controller verarbeitet, in ein einigermaßen für Menschen erfassbares 
Format zu bringen.

C geht wesentlich weiter.

> was menst du wäre von vorteil ?

C ist eine Abstraktionsebene höher. Beispielsweise musst dich nicht mehr 
um Einsprungspunkte oder Interrupttabellen kümmern. Auch verfügt die 
avrLibC über eine grosse Library an Funktionen, die stark fequentiert 
genutzt werden. In Assembler würdest du sie immer wieder neu 
programmieren müssen...

Sicherlich ist es für den Entwickler nicht schlecht, Assembler zu kennen 
und zu können. Aber um einen Anfang zu finden fände ich Basic oder C 
wesentlich besser.
Gast #715321
Lesenswert?

ja ich weiß nicht in wie weit ich meine auffasung richtig einschätze, 
das ich gut klar komme.

hatte keinerlei informatik vorerfahrungen, bzw. keine vorerfahrungen im 
programmieren etc...

wusste nichtmal was ein bit und was ein byte ist.

und nun verstehe ich ales so einigermaßen, wenn ich es auch mehrmals 
durchlesen muss oder ein paar begriffe nachlesen muss...

ich denke auch, dass ich assembler erstmla einigermaßen können sollte, 
bevor ich wieder umsteige !

grüße

tim
#715327
Lesenswert?

Guten Abend,

ich finde die Diskusion sehr interessant, da ich ebenfalls erst seit 
kurzer Zeit mit dabei bin.

Und ich meinen Wissensstand mit dem von Tim etwa gleichsetzen würde.

Aber wenn hier gesagt wird, dass C schneller zum Ziel führt, wäre es 
sehr effektiv für mich, da ich in ca. einem halben Jahr ein größeres 
Projekt vor habe, welches ich im Rahmen einer Abschlussprüfung 
vorstellen muss.


Also meint Ihr in Assembler schaffe ich es ? Oder denkt ihr ein 
Einsteiger wäre mit C besser bedient.

Es geht um die Ansteuerung eines Schrittmotors, eines Getriebemotors und 
einigen Endschaltern sowie eine Ausgabe auf einem LCD.


MFG

Stefan
Gast #715335
Lesenswert?

>Also meint Ihr in Assembler schaffe ich es ? Oder denkt ihr ein
>Einsteiger wäre mit C besser bedient.

Ganz einfach: Mach einen Test.

Schreib ein Programm für die Ansteuerung Deines Schrittmotors in 
Assembler.
Wenn alles gut funktioniert, mach dasselbe in C.

Dann entscheide Dich;-)
#715340
Lesenswert?

Für den Einsteiger, der etwas Zeit hat, sich in die Materie 
einzuarbeiten, ist Assembler für den Anfang empfehlenswert, weil man nur 
auf der Ebene die Hardware richtig kennenlernt und versteht, was da 
überhaupt passiert (was bei einem µC-System sehr wichtig sein kann). Wer 
sich mit Assembler befasst hat, versteht auch einige Macken von in 
Hochsprachen geschriebenen Programmen besser.

Wenn man nicht so viel Zeit hat, ist es u.U. tatsächlich besser, direkt 
in der Hochsprache anzufangen, da Assembler-Programme größeren Umfangs 
schnell frustrierend unübersichtlich werden. C ist z.B. immer noch recht 
hardwarenah, so dass da zumindest nicht jeglicher Zusammenhang mit der 
"harten" Realität verloren geht.

Assembler pauschal als "unzeitgemäß" zu verteufeln, ist aber ganz 
falsch, da jede Maschine auf der untersten Ebene mit Maschinenbefehlen 
arbeitet und man besonders bei Embedded-Systemen gerade diese unterste 
Ebene zumindest in Ansätzen kennen sollte, um effizient programmieren zu 
können (also das meiste aus dem System herausholen zu können)...
#715348
Lesenswert?

Danke für die zahlreichen Informationen..

Ich habe mir für C, sowohl auch für Assembler, Literatur besorgt, aber 
ich denke, dass ich beim Assebler bleiben werde. Da ich mich jetzt schon 
zwei Wochen damit auseinandersetze und wenigstens kleine Vortschritte 
mache.

Wobei ich erwähnen muss, dass ich vor ca. 5 Woche das MCS51 
Mikrocontroller Kochbuch" zu lesen angefangen habe jedoch nach einigen 
Experimenten mit PIC auf AVR ungestigen bin, da ich das STK500 bekommen 
habe und learning by doing für mich sehr wichtig ist.

Deshalb will ich nicht jetzt schon wieder umsteigen.

Außerdem hab ich hier eine ausgesprochen gute Adresse, wenn ich mal 
etwas nicht weiß. Großes Lob ans Forum

MfG

Stefan
Gast #715352
Lesenswert?

Hi

Niels wrote:

>In Assembler würdest du sie immer wieder neu
>programmieren müssen...

Hör bitte auf Anfänger mit solchen Halbwahrheiten zu verunsichern. Und 
dann auch noch Basic empfehlen. Assemlercode ist genauso 
wiederverwendbar. Dazu müssen die Routinen nur in eigenen Dateien 
gespeichert werden. Mit einer einzigen 'include'-Zeile ist der Code 
verfügbar. Unlesbar ist der Code nur für die, die keine Ahnung haben.

@Tim: Lass dich nicht irre machen. Ich habe schon solche Projekte, wie 
GPS-Empfänger mit Grafikdisplay und Kartendarstellung mit einem Atmega 
und Assembler realisiert. Da hätten wahrscheinlich etliche 
Hochsprachen-Protagonisten in ihrer Sprache schon Probleme.

MfG Spess
#715365
Lesenswert?

apropo Schrittmotorsteuerung, kann mir jemand mal ne kurze Übersicht 
geben, wie die Steuerung auszusehen hat...

Ich werd mich dann nochmal ausgiebig damit auseinander setzen, wenn ich 
die ganzen Grundlagen verstanden habe.

Hab ne Motorsteuerung mit L297 l298 ... Denke mal, dass ich mit nem 
Timer ein Takt ausgeben muss und die entsprechenden enable, richtungs - 
Leitungen auf High setzen muss ! ?...

Wie kann ich dann die Schrittanzahl festlegen ? Brauhc ich da nen 
zweiten Timer als Zähler ?


MFG

Stefan
#715377
Lesenswert?

Stefan T. wrote:
> apropo Schrittmotorsteuerung, kann mir jemand mal ne kurze Übersicht
> geben, wie die Steuerung auszusehen hat...
>
> Ich werd mich dann nochmal ausgiebig damit auseinander setzen, wenn ich
> die ganzen Grundlagen verstanden habe.
Zu den Grundlagen: siehe Anhang. Ist ein Auszug aus einer 
Versuchsanleitung für einen Laborversuch.

> Hab ne Motorsteuerung mit L297 l298 ... Denke mal, dass ich mit nem
> Timer ein Takt ausgeben muss und die entsprechenden enable, richtungs -
> Leitungen auf High setzen muss ! ?...
>
> Wie kann ich dann die Schrittanzahl festlegen ? Brauhc ich da nen
> zweiten Timer als Zähler ?
Wieso nen zweiten Timer? Mit jedem Taktimpuls macht der Motor genau 
einen Schritt (Halb oder voll, je nachdem, was eingestellt ist). In dem 
o.g. Laborversuch wird auf den L297 übrigens verzichtet und der AVR gibt 
die Taktsignale direkt an den L298 aus (ein AVR macht das nebenbei...). 
Das Einzige, was man dann eben diskret machen muss, ist die 
Strombegrenzung (die in dem angehängten Dokument dargestellte 
Strombegrenzungsschaltung ist übrigens vom Prinzip her dieselbe, die 
auch im L297 drinsteckt).

Aber wenn Du den L297 schon fest eingeplant hast und mit dem arbeiten 
willst, will ich Dich auch nicht davon abbringen;-)
Angehängte Dateien:
#715387
Lesenswert?

.. Hab die Schaltung schon so komplett hier vorliegen, von daher wird es 
doch Softwaremäßig etwas geringer, wenn ich den L297 benutze, oder etwa 
nicht ?


... Also kann ich dne Timer auf einen bestimmten Wert festlegen, und 
wenn er die .. sagen wir mal 1400 Takte abgegeben hat, stoppt er sich 
selbst ?

Oder muss ich, wie ich zuerst vermutet habe, die Takte mit einem zweiten 
Timer in Form eines Zählers zählen und dann bei erreichtem Wert ein 
Iterrupt oder eien andere Funktion auslösen, welche den Taktausgang 
beendet...

Vielleicht fehlen mir aber jetzt noch die Grundlagen !


Werde mir mal deinen Anhang durchsehen !


MfG

Stefan
#715392
Lesenswert?

Ist ja nett, was hier so über ASM geschrieben wird...

Stefan, schau Dir den Anhang mal an, der könnte Dir vermutlich beim 
Verständnis einiger Grundlagen helfen. Nein, Du musst es nicht so 
machen, wie da dargestellt, Du kannst (uns sollst) den Code auch nicht 
unbesehen und unverstanden"benutzen", Du kannst Dir aber nach dessen 
Analyse Deinen eigenen Code schreiben und vielleicht diese oder jene 
Idee übernehmen.

Viel Spaß damit.

...
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren