Hallo,
Ich hbae mir folgende asm zusammengestrikt.
Eigentlich wollte ich einen Tasten entprellten Flip flop, der den
Letzten zustand in das Eprom schreibt und nach erneuten Spannungszufuhr
das Eprom ausliest und die letzte Benutzte einstellungen wieder
herstellt.
ich Muß gestehen das ich absoluter trittbrett fahrer bin.
Und leider noch kein passendes buch für trittbrettfahrer gefunden habe
So Habe ich mich durch die Webseite etwas schlau gemacht mein Wissen
über der programierung reit leider nicht aus um das umsetzen zu können.
Vileicht kann hier jemand helfen?
Was erwartest du jetzt genau?
Gehts um Fehlersuche?
Dann teil uns mit was nicht funktioniert.
Willst du ein komplettes Programm von irgendjemandem?
Das wirst du höchstwahrscheinlich nicht bekommen.
Willst du weitere Infos über ein Gebiet, das du nicht verstehst?
Dann stell deine Frage genauer.
Das Programm läuft so nicht. Ist es das, was Du hören wolltest?
Beispielsweise kehrt die Function EEPROM_write nie zurück (der
abschließende 'ret' ist wegkommentiert). Ähnlich wenn eine Taste
gedrückt wird (angenommen die Tastenerkennung tut, was sie soll): Das
Programm läuft dann geradeaus in EEPROM_read hinein. Das endet mit
einem 'ret', der in die Wüste führt, da es dafür nie einen rcall gab.
Auch hier gäbe es eine richtige Version, aber die ist wieder mal
wegkommentiert.
Soviel fällt schon beim groben Drüberschauen auf.
Du könntest Dein Programm schon erst mal debuggen, denn das ist ein
wesentlicher Teil des Programmierens, bevor Du so etwas Unfertiges
anderen Leuten kommentarlos zum Drauf-rum-Kauen vorwirfst.
Gut dann einmal etwas genauer
der Entprellte Flip flop Funktioniert.
Die daten Werden nicht in das Eprom geschrieben und auch nicht
Ausgelesen
Wer kann den fehler finden und Korregieren?
Ich Brauche eine Beschreibung in Kurzform für Sämtliche Befehle die in
ASM angewendet werden. Am Besten in Deutsch
Wie debuggt mann?
Ich habe da keine Ahnung. Wenn ich das alles wüste, dann Hätte ich nicht
hier nachgefragt.
Habe mit Programieren absolut 0 erfahrung
Gruß markus
markus schrieb:
> Ich Brauche eine Beschreibung in Kurzform für Sämtliche Befehle die in> ASM angewendet werden. Am Besten in Deutsch
Die wirst du nicht kriegen.
Programmierung spielt sich nun mal im wesentlichen in englischer Sprache
ab.
>> Wie debuggt mann?>> Ich habe da keine Ahnung. Wenn ich das alles wüste, dann Hätte ich nicht> hier nachgefragt.>> Habe mit Programieren absolut 0 erfahrung
Dann fang an, das Tutorial durchzuarbeiten.
http://www.mikrocontroller.net/articles/AVR-Tutorial
hi
Das Tutorial hätte ich dir auch empfohlen. Es ist in Deutsch und ich
fand es sehr gut. Grad für die ersten Schritte bieten die Grundübungen
doch eine gute Grundlage. Nun, eine Übersicht über Assemblerbefehle hast
du z.B. in AVRStudio in der Hilfe. Auch wenn's denn englisch ist, viele
Assemblerbefehle erklären sich selbst. LD ist ein Befehl zum Laden eines
Registers. Meist folgt noch ein S oder I . Wenn mann sich also eine
Leseart angewöhnt wie Ld = Load ST =Store, BRNE =Branch Not Equal
(springe wenn nicht gleich) ist Assembler einfach. Die Begriffe sind im
Tutorial erklärt, daher werd ich hier nicht weiterführen. Wichtig ist
allerdings, das man in der Lage ist, seine Programme zu strukturieren.
Manchmal hilft ein Blatt Papier, um die Struktur zu skizzieren. Dann
werden die Programmteile ( unterprogramme ) deutlich. Auch kann man
Kommentarzeilen in den Code einfügen, um ihm leserlich zu halten wie
z.B.
;********************************
;* Mein kleines Unterprogramm *
;********************************
My_UP1: irgend
ein
Code
RET
;********************************
Dann kann man auch noch nach einem halben Jahr sein Programm lesen und
verfolgen.
Gruß oldmax
Genau das ist mein Problem
Im Tutorial habe ich die programme auch her und versucht aus dem 8
entprellte tasten und ebend EEprom Lesen und Schreiben Kombeniert.
Das bekomme ich einfach nicht hin entwerde bekomme ich das EEprom
ausgelesen oder der taster Funktioniert geschweige denn die
Sreibfunktion.
Die Informationen dazu wie die Drei Komponenten mit einander verbunden
werden wird natürlich nicht´s erwähne.
das sollte doch für ein Programierer doch ein klax sein mal die Drei
Komponenten mit einander zu verbinden.
Und im AVM Studio stehen nicht alle befehle drin. Ausgerechnet die
befehle die mir Überhaupt nichts sagen fehelen natürlich gruß markus
PS ich würde mich freuen wenn das hier jemand zusammen basteln kann.
ich kann auch gerne noch einmal die kompletten getrennten Programme
Posten.
Außerdem währe das alleine für den Tutorial eine Tolle Sache
1. At mega8 Sird mit Strom versorgt.
2. die Daten werden Ausgelesen und Am Port ausgegeben z.b. Port D
3. die Flip flop Schaltung Hier wird dann die Änderung der Bits Mit
entprellte taster vorgenommen.
4. Die geänderten daten werden Überschrieben im Eprom
Das ist schon alles
Für mich nicht erreichbar
Für euch kein Problem!
Zumal die Programmteile nicht neu geschrieben werden müssen sie sind
schon auf der Seite.
Das Alles muß nur mit einander verbunden werden
Gruß markus
2.
Markus Andrzejewski schrieb:
> Die Informationen dazu wie die Drei Komponenten mit einander verbunden> werden wird natürlich nicht´s erwähne.
Das ist auch in einem gewissen Sinne der falsche Ansatz.
Programmieren funktioniert nicht nach dem Muster
ich klau mir dort was
ich klau mir da was
dann schmiere ich mir noch ein wenig verbindenden Kitt dazwischen und
das wars dann
Man kann schon Komponenten übernehmen. Aber das tut man, indem man die
Idee, die dahintersteckt übernimmt. Und dazu muss man die Idee erst
einmal verstanden haben.
Gerade auf Assemblerebene, muss man immer wieder die geklauten
Komponenten an die real vorliegenden Gegebenheiten anpassen. Und ohne
Verständnis dessen, was da eigentlich passiert und warum, ist das nun
mal nicht oder nur sehr schwer möglich.
Markus Andrzejewski schrieb:
> Außerdem währe das alleine für den Tutorial eine Tolle Sache
Nicht wirklich
> 1. At mega8 Sird mit Strom versorgt.> 2. die Daten werden Ausgelesen und Am Port ausgegeben z.b. Port D> 3. die Flip flop Schaltung Hier wird dann die Änderung der Bits Mit> entprellte taster vorgenommen.> 4. Die geänderten daten werden Überschrieben im Eprom
Wer das Tutorial von Anfang an durchgearbeitet hat, sollte damit
eigentlich überhaupt keine Schwierigkeiten haben:
Eingänge auslesen ist in der ersten Übung drinnen
Dinge verknüpfen kommt etwas später (und so schwer ist ein Flip Flop,
das von 2 Eingängen angesteuert wird dann auch wieder nicht. Das ist
einfach nur ein Register: Ist Eingang A auf high, wird das Register auf
1 gesetzt. Ist Eingang B auf 1 wird es wieder auf 0 gesetzt. Fertig)
Ausgänge setzen ist ebenfalls in der ersten Übung
Und den Inhalt eines Registers ins EEPROM schreiben bzw. am Anfang
wieder aus dem EEPROM holen, nun ja, genau das ist ja auch Thema eines
Kapitels im Tutorial.
Und noch ein Tip:
Da ein Flip Flop vorhanden ist, welches nur auf Signale von 2 Eingängen
hört, ist Tastenprellen überhaupt kein Thema und muss gar nicht beachtet
werden :-) Du hast dir in dem Bereich viel zu viel Arbeit gemacht.
Ohne die EEPROM Funktionalität würde ich mal über den Daumen peilen und
sagen: Das Programm wird deutlich weniger als 30 Assembleranweisungen
haben. Nach dem Initialisierungsteil eher mehr so in der Gegend 5 bis 10
Anweisungen (wie gesagt: Ohne den EEPROM Teil)
Markus Andrzejewski schrieb:
> Wenn das so einfach ist warum tut ihr euch dann alle so schwer eine> Lösung hier zu veröffendlichen?>> Ich Kriege das nicht hin.
Weil DU es lernen sollst.
Ansonsten: Kauf dir einen Programmierer ein. Diejenigen die das alles
von der Pieke auf gelernt haben, verdienen ihre Brötchen damit.
Wir helfen dir gerne, das zu lernen.
Wir helfen dir auch gerne Fehler in deinem Code auszumerzen.
Aber wir können auf den Tod nicht ausstehen, wenn jemand nicht gewillt
es, das alles zu lernen sondern eine fertige Lösung präsentiert haben
will.
Da kommt dann bei den Profis der Gedankengang "eigentlich verdiene ich
mit genau solchen Dingen meine Brötchen" durch. Und da finanziere ich
mir dann lieber selber 1 Tag Urlaub irgendwo, als dir zu helfen, mit 0
Aufwand eine Prüfung zu bestehen (und genau danach klingt es nämlich:
nach einer Schulaufgabe)
Und abgesehen vom EEPROM Teil:
Die Aufgabe ist NICHT schwer! Ganz und gar nicht.
2 Eingänge miteinander zu verknüpfen und mit dem Ergebnis einen Ausgang
ansteuern. Alles was dazu nötig ist, findet sich in 2 von den ersten
paar Kapitel. Namentlich: I/O, wie werden Pins ausgelesen bzw. Pins auf
0 oder 1 gesetzt. Und dann noch: Wie mache ich eine Fallunterscheidung.
Und mehr braucht man nicht für ein µC-realisiertes Flip Flop, welches
auf 2 Tasten hört und meinetwegen eine LED ansteuert.
Hallo karl,
Siehst du genau da hapert es Wie mann die Port Verändert habe ich
Verstanden ist für mich auch ersichtlich. R16 in R17 umgeändert Läuft
auch
Und mehr verstehe ich dann nicht
ich habe es leider nicht gelernt.
Gruß markus
Markus Andrzejewski schrieb:
> ich habe es leider nicht gelernt.
Dann lerne es.
Genau dazu gibt es das Tutorial
Aber ok. Hier ist dein Stufenplan
Schreib ein Programm welches eine LED ausgehend von einer Taste
ansteuert.
Wenn die Taste gedrückt wird, leuchtet die LED. Lässt du die Taste
wieder los, leuchtet die LED nicht mehr. Die LED spiegelt also einfach
nur den Zustand der Taste wieder.
Nächste Stufe:
Jetzt soll die Taste die LED einfach nur einschalten. Grundstellung: LED
leuchtet nicht. Taste wird gedrückt -> LED leuchtet. Und auch dann wenn
ich die Taste los lasse, soll die LED weiterleuchten.
Nächste Stufe:
Diesmal das ganze in der umgekehrten Richtung. Die LED leuchtet eingangs
und wenn ich eine Taste drücke, soll sie ausgehen.
Nächste Stufe:
Jetzt kommt eine 2te Taste ins Spiel
Die erste sorgt dafür, dass die LED angeht
Die zweite sorgt dafür, dass sie wieder ausgeht
Nächste Stufe:
Hey, das erste Teilziel ist ja bereits erreicht: Die beiden Tasten
bilden gemeinsam mit dem µC ein Flip-Flop!
Das alles kannst du mehr oder weniger erledigen, wenn du nur das erste
Kapitel (das über I/O) im Tutorial durchgearbeitet und verstanden hast.
OK. Vergleiche und bedingte Sprünge braucht man noch. Aber die sind
nicht so schwer (und kommen auch irgendwo vor). Und zur Not kannst du
auch fragen. Aber bitte gezielt fragen! "Ich hab im Register xyz einen
Wert stehen. Wie kann ich feststellen ob der 0 ist?"
Ich Habe mir ein buch gekauf, Allerdings wird dort eher das AVR Studio
erklärt Muster beispiele hatt der Autor auf seine Webseite natürlich in
HEX
Und in den Einzelheiten geht er nicht hinein. Da verweist er auf seine
test Projekte die in hex sind.
Natürlich will ich es lernen ich brauche da noch Weitaus Komplezierteres
und will erst einmal mit was einfaches Anfangen.
Habe auch Weiter experementiert die register verschoben oder angepast
die Port´s angepast das funktioniert ja auch.
Und wenn ich jetzt Wieder den Quell text hochlade Dann habe ich wohl
neue fehler eingebaut.
gruß markus
Markus Andrzejewski schrieb:
> Habe auch Weiter experementiert die register verschoben oder angepast> die Port´s angepast das funktioniert ja auch.
Noch mal.
Der Code ist für den Müll!
Viel zu kompliziert. Viel zu umfangreich.
Eine reine Flip-Flop Lösung (ohne den EEPROM Teil) liegt komplett bei
deutlich unter 30 Zeilen. Die Hauptschleife, die die eigentliche Arbeit
macht, hat lediglich 5 Anweisungen (das ist das komplette Flip-Flop!).
Nicht mehr!
Das ganze Programm, inklusive Initialisierung, hat vielleicht 10 oder 15
Anweisungen.
Du brauchst keinen Timer, du brauchst keine Tastenentprellung, gar
nichts. Nur Eingänge abfragen, Ausgänge setzen und bedingte Sprünge.
Und insbesondere letzteres kann mit ersterem kombiniert werden: Ein
bedingter Sprung, wenn ein Eingangspin einen bestimmten Wert (entweder 0
oder 1) aufweist. Und das ist dann schon alles.
Dein Programm muss diese Logik implementieren
1
+---------------------+
2
| Eingänge & Ausgänge |
3
| konfiguriern |
4
| Pull Up einschalten |
5
| wenn notwendig |
6
+---------------------+
7
|
8
|
9
+-------------->|
10
| v Ja
11
| Eingang A auf 1 ? ----------+
12
| | Nein v
13
| | Ausgang auf 1
14
| | |
15
| |<------------------------+
16
| |
17
| v Ja
18
| Eingang B auf 1 ? ----------+
19
| | Nein v
20
| | Ausgang auf 0
21
| | |
22
| |<------------------------+
23
| |
24
+---------------+
Und du willst mir jetzt hoffentlich nicht weiter ernsthaft erzählen,
dass das zu schwierig für dich ist.
Und wenn ich es recht bedenke, kommt alles was du dazu brauchst, im
zweiten Kapitel im Tutorial (I/O) vor.
EEPROM ist dann eine eigene Geschichte. Aber bis hierher musst du es
alleine schaffen.
Hier noch einmal eine neue Datei taster und eprom Auslesen
Setze ich "ret "
Wird das Eprom ausgelesen das funktioniert auch
allerdings funktionieren dann keine taster mehr
disnabel ich ret. Funktionieren die tasten zwar wieder aber das Eprom
wird nicht ausgelesen.
Was fehlt denn hier?
Gruß Markus
EEPROM_read ist eín Unterprogram.
Ein Unterprgram wird benutzt indem man es mit einem rcall aufruft. Dann
wird das Unterprogramm abgearbeitet, bis es auf einen ret stösst. Der
ret sorgt dafür, das die Programmausführung an der Stelle fortgesetzt
wird, an der der rcall erfolgte.
Also so
1
|
2
|
3
Hauptlinie des Programms +---> EEPROM_read:
4
| | |
5
| | |
6
rcall EEPROM_read ----------------+ Ausführungslinie des UP
7
<---------------------------+ |
8
| | |
9
| | ret
10
weiter gehts +-------------+
11
|
12
|
Mit dem rcall verzweigt die Programmausführung zu EEPROM_read. Dort wird
weitergearbeitet. Bis dann irgendwann der ret kommt. Mit dem ret gehts
zurück dorthin, von wo der rcall hergekommen ist. Und dort wird dann mit
der Programmausführung wieder weiter gemacht.
Sinn der Sache ist es, dass EEPROM_read von mehr als einer Stelle im
Programm aufgerufen werden kann, und jedesmal immer genau zu der Stelle
zurückkehrt, von wo es aufgerufen wurde.
Und ach ja: Zuwiederhandlungen gegen dieses Schema, werden mit
Programmabstürzen bzw. Nichtfunktionieren nicht unter 3 Stunden
Fehlersuche geahndet.
Markus Andrzejewski schrieb:
> out PORTD, r16> ;??????????????> Und hier wieder das Gleiche Problem! Eprom wird nicht geladen, wenn> nachfolgende zeilen Akteviert sind!
Und was denkst du, wie lange es dauert, bis dein Programm dann diese
Stelle erreicht
1
in r16, PINB ; an Port D anliegende Werte (Taster) nach
2
r16 einlesen
3
4
out PORTD, r16 ; Inhalt von r16 an Port B ausgeben
wo dann ein ganz anderer Wert an PORTD ausgegeben wird.
Mein Rat: nimm dir einen Bleistift und benutze ihn als Markierung
welcher Befehl als nächster drann ist. Und dann spielst du Computer und
gehst dein Programm durch. Befehl für Befehl, Anweisung für Anweisung
WEnn du das schon nicht selbst machen willst, dann benutze wenigstens
den Simulator und geh dein Programm in Einzelschritten durch.
Bei jedem Befehl überlegen: Welche Voraussetzungen gibt es? Was erwarte
ich, dass passiert?
Also Muß ich sehrwarscheinlich 2 Register benutzen
mit or sollte es funktionieren
Nur wie bekomme ich r16 und r17 zusammengefast auf den Port D?
or r16, r17
gruß markus
Fehler schrieb:
> hilft dir wohl auch nicht weiter als das tut., aber,> sind hier vllt. mehr befehle in dt. erklärt?:
Ich hab noch was. Nicht nur für Anfänger.
Entzippen und Verknüpfung nach:
\Atmel-Befehle\beschreibung.html
Hallo Markus
Dein Wille etwas über µC zu lernen scheitert meiner Meinung nach daran,
das du nicht in der Lage bist, Informationen aufzunehmen und anzuwenden.
Sorry, für diese harte Aussage, aber du vertrödelst wertvolle Zeit in
Konversation, die nix bringt. Du hast soviele Hinweise bekommen und
anstatt diese vernünftig durchzugehen, bist du ständig im Forum und
äußerst dein Unverständnis. Programmieren heißt, im Kreis zu denken und
darin immer neue Entscheidungen zu treffen. Entscheidungen, die auf
einfacher logischer Basis getroffen werden.
Ereignis? dann mach das
Wert kleiner, gleich oder größer: dann mach dies
Bit gesetzt: na dann mal los
und das ganze von vorn
Damit deine Programm überhaupt eine Chance hat, eine Funktin
auszuführen. solltest du die Schleife lassen
Start: ...
Initialisieren, Stack setzen, Variablen vorbesetzen usw
Loop: ...
hier steht das Programm
....
RJMP Loop ; und hier ist es zu ende
;****************************************
;* ab hier stehen die Unterprogramme *
;****************************************
Ein solcher Aufbau ist doch nicht so schwer zu verstehen und wenn du
schon daran scheiterst, ist es vielleicht besser, du suchst dir ein
anderes Hobby.
Deine Aussagen:
> Die Informationen dazu wie die Drei Komponenten mit einander verbunden> werden wird natürlich nicht´s erwähne.
Warum, wenn du ein Progrmm schreiben willst, suchst du dir das passende
heraus. Woher soll denn der Verfasser wissen, was du in welcher
Verbindung brauchst?
>das sollte doch für ein Programierer doch ein klax sein mal die Drei>Komponenten mit einander zu verbinden.
Klar, aber warum sollten wir ?
>Und im AVM Studio stehen nicht alle befehle drin. Ausgerechnet die>befehle die mir Überhaupt nichts sagen fehelen natürlich gruß markus
So ein Befehl wie : Mach das das Geht ? Stimmt, den gibbet nicht.
>PS ich würde mich freuen wenn das hier jemand zusammen basteln kann.
Hier hab ich mich gefragt, was "zusammenbasteln". Deinen fehlerhaften
Text, damit ihn auch andere verstehen oder dein Wunsch, eben "DAS",
damit du dich zurücklehnen kannst?
>ich kann auch gerne noch einmal die kompletten getrennten Programme>Posten.
Wie, du hast mehrere ?
>Außerdem währe das alleine für den Tutorial eine Tolle Sache>1. At mega8 Sird mit Strom versorgt.>2. die Daten werden Ausgelesen und Am Port ausgegeben z.b. Port D>3. die Flip flop Schaltung Hier wird dann die Änderung der Bits Mit>entprellte taster vorgenommen.>4. Die geänderten daten werden Überschrieben im Eprom>Das ist schon alles
Steht glaub ich alles im Tutorial. Das natürlich nicht genau dein
Problem dort beschrieben ist, solltest du dem Autor nachehen...
Gruß oldmax
Also ich finde den ersten Post garnicht so schlecht.
Er hätte natürlich die Postingregeln beachten müssen, daß es auch lesbar
ist.
Er braucht natürlich die Entprellung, denn er will ja 8 LEDs mit 8
Tasten umschalten.
Der Hauptfehler dürfte sein, daß er am Ende kein RET hat, das Programm
läuft in den Wald.
Er hat in dem Spaghetticode den Überblick verloren:
1
ret
2
3
rjmp main
Wenn man aber alles schön in Unterfunktionen aufteilt (RCALL+RET), dann
sollte es auch funktionieren.
Peter
Peter Dannegger schrieb:
> Er braucht natürlich die Entprellung, denn er will ja 8 LEDs mit 8> Tasten umschalten.
Hab ich da was überlesen?
Im Eröffnungsposting ist von EINEM Flip-Flop die Rede, welches über 2
Tasten angesteuert wird.
Wozu braucht er da Tastenentprellung?
Edit: Ich habs noch einmal durchgelesen. Es ist für mich nicht ganz
eindeutig was eigentlich wirklich das Ziel ist. Die 2 Tasten werden dort
nicht explizit erwähnt, nur das
[quote]
Eigentlich wollte ich einen Tasten entprellten Flip flop
[/quote]
Na ja. und da war meine Annahme: 2 Tasten - die eine schaltet ein, die
andere schaltet aus. Der µC übernimmt das Flip-Flop und schaltet einen
Ausgang. (Und der Zustand des Ausgangs wird im EEPROM gespeichert und
beim nächsten Einschalten wieder restauriert, aber soweit ist er noch
nicht)
Wenn ich da jetzt einen Wirbel hineingebracht habe und den TO in die
falsche Richtung gelotst haben sollte, entschuldige ich mich dafür.
Karl heinz Buchegger schrieb:
> Edit: Ich habs noch einmal durchgelesen. Es ist für mich nicht ganz> eindeutig was eigentlich wirklich das Ziel ist.
Ich habs aus dieser Zeile geschlußfolgert:
1
eor leds, temp1 ; Die zur Taste gehörende Led umschalten
Also Freunde
ich Wollte mit dem atmega8 8 taster ansteuern. zu jeden taster wird dann
eine LED zugeordnet also PB0 zu PD0 .... PB7 zu PD7
wobei PB als eingang für die tasten genutzt wird und PD für die leds.
Wird der taser 0 ( Pb0 ) gedrückt soll PD0 aufleuchten beim Nästen Druck
wieder erlöchen
Wird die Stromzufuhr gekappt Sollen die Zustände wieder hergestellt
werden.
Also muß dann Jerder impuls dann auch im Eprom abgelegt werden. damit
beim einschalten der Stromzufur die werte Vom Eprom wieder auf den PD
port hergestellt wird.
Scheint so als ob ihr alle einen eid geschworen habt. Für euch ist es
simpel für mich zur zeit schwierig.
Auf der Webseite werden zwar einzel komponenten dazu besprochen aber wie
mann Kombeniert leider nicht. Ich habe mir gedanken gemacht sonst hätte
ich ja nicht im ersten Posting die asm beigefügt.
ich habe gehoft hier im forum Hilfe zu bekommen und wenn es ebend nicht
das Prg komplett jemand überarbeitet, dann zumindest doch bemerkungen
wie Schau mal in zeile X dort Müste dann Folgendes stehen weil
sonzt.....
das würde mir dann helfen.
Wie soll ich denn so begreifen lernen?
Ich weis ja noch nicht einmal was ich falsch gemacht habe.
Und jeder Profi war einmal ein Anfänger. Oder war es bei euch genauso
gewesen " Ästsch das geht so nicht ich weis zwar wie aber ich sag es
nicht"
ich will es lernen das geht aber logischer weise nur step bei step. Und
mit diesem projekt wollte ich ebend angangen. Später kommen dann weit
aus Kompleziertere sachen drann.
auf der webseite wird u.a. der befehl or erwähnt mit beispiel nur fehlt
der aufbau wie dann 2 verschiedene register auf 1 register gesetzt wird
, so das dann die daten ausgegeben werden können.
Gruß markus
Markus Andrzejewski schrieb:
> Wird der taser 0 ( Pb0 ) gedrückt soll PD0 aufleuchten beim Nästen Druck> wieder erlöchen
OK.
Dann hab ich dich falsch verstanden, mein Fehler.
> Scheint so als ob ihr alle einen eid geschworen habt. Für euch ist es> simpel für mich zur zeit schwierig.
Nö.
In dem Fall musst du tatsächlich im Tutorial weitermachen. Nur mit dem
ersten Kapitel alleine wird das nichts.
>> Auf der Webseite werden zwar einzel komponenten dazu besprochen aber wie> mann Kombeniert leider nicht. Ich habe mir gedanken gemacht sonst hätte> ich ja nicht im ersten Posting die asm beigefügt.
Du kaprizierst dich zusehr aufs 'kombinieren'
Und das ist der falsche Ansatz.
Du musst NICHT
3 Bausteine kombinieren
sondern du musst
ein komplett neues Programm schreiben, wobei du dir Anregungen holst,
indem du die gezeigten Bausteine studierst.
> ich will es lernen das geht aber logischer weise nur step bei step.
Richtig.
Du versuchst gerade Step 27 zu lösen. Deine Fähigkeiten reichen aber nur
bis Step 2 oder 3. Und was du nicht wahr haben willst: Du kannst die
Steps dazwischen nicht einfach überspringen.
Peter Dannegger schrieb:
> Also ich finde den ersten Post garnicht so schlecht.
Unter der jetzt neuen Prämisse hast du recht.
So weit ist er gar nicht daneben.
Wenn man den Code mal ein bischen aufräumt wäre es gar nicht so schlimm
> Wenn man aber alles schön in Unterfunktionen aufteilt (RCALL+RET), dann> sollte es auch funktionieren.
Yep.
Markus Andrzejewski schrieb:
> dann zumindest doch bemerkungen> wie Schau mal in zeile X dort Müste dann Folgendes stehen weil> sonzt.....
Ich hab Dir doch schon 2 Fehler genannt:
1. RET + RJMP, da muß eins davon falsch sein.
2. Offenes Ende, kein Programm darf ins Nirwana laufen.
und
3. Formatierung benutzen
4. in Funktionen aufteilen.
Mach mal vor jeder neuen Funktion ein:
;-----------------------------------------------------------------------
zur Unterscheidung.
Peter
Ich hab den Code mal ein bischen aufgeräumt, damit man auch was sieht.
Alle Unterprogramme an eine Stelle zusammengefasst.
Das Register r16, welches zur Kommunikation mit den EEPROM Funktionen
dient, wurde freigeschaufelt
und natürlich der Teil rund um die Hauptschleife entsprechend angepasst.
Siehs dir an und studiere, wie die Einzelteile zu einem Gesamtprogramm
zusammengefügt wurden.
Ich habe das gerade einmal Ausprobiert.
Unabhängig davon das ich jetzt einen Wchselschalter habe, werden die
daten nicht gespeichert
Muß r16 noch defeniert werden?
Mangels Hardware konnte ich das nur im Simulator durchspielen.
Aber du hast recht. Ich habe tatsächlich einen Fehler eingebaut.
Nachdem der letzte Zustand aus dem EEPROM gelesen wird, sollte man ihn
auch auf den Port ausgeben. Sonst ist das holen aus dem EEPROM sinnlos
:-)
1
;
2
; aus dem EEPROM den letzten Zustand wiederherstellen
3
4
ldi ZL,low(daten)
5
ldi ZH,high(daten)
6
rcall EEPROM_read ; Byte ist in r16
7
8
mov leds, r16
9
out led_port, leds
Aber ich klemme mich jetzt ab. Gerade deine letzte Anfrage "Muß r16 noch
defeniert werden" zeigt mir, dass ich eigentlich schon wieder viel zu
weit gegangen bin und lässt mich an mir selbst zweifeln, ob das
Aufräumen und korregieren deines Codes so sinnvoll war.
Erst einmal Dank
Gibt war immer noch die Gleichen probleme.
Ich werde mal suchen ob ich den fe3hler finde.
Vileicht komme ich ja jetzt weiter
gruß markus
Hi
Hab mir grad mal den aufgeräumten Code durchgelesen und bin der Meinung,
der sollte laufen, wenn nicht der Satz :
>ich Muß gestehen das ich absoluter trittbrett fahrer bin.
wär...
Irgendwo hab ich auch ein Posting gelesen mit einer "geheimen" Schaltung
von 8 Tastern und 8 LED. Das ist auch gar nicht so schlimm, wenn da die
Taster nicht auf VCC gelegen hätten.... Da nützen natürlich Pull-Up's
nicht allzuviel oder besser gesagt unendlich wenig.
Also, diese Zitatsatz war nicht bös gemeint, sondern es könnt sein, das
du auch dieses Posting gelesen und für deine Zwecke benutzt hast. Oder
du bist auf den gleichen Fehler gekommen , da deine Schaltung ja auch
keiner kennt. Im allgemeinen ist's bei einem solchen kleinen Programm
auch nicht nötig, einen Schaltplan dranzuhängen, aber es sollte schon
erwähnt werden. Sind die internen Pull-Ups eingeschaltet, gehören die
Taster auf GND. Wie du erkennen kannst, ist ein und dasselbe Programm
auf 2 gleichen Controllern allein durch die Beschaltung nicht lauffähig.
Auch hier mal ein Tip, grad wenn du weiterhin Assembler benutzen willst.
Schaff dir eine funktionierende serielle Kopplung und nimm OpenEye um
die Werte im Controller zu sehen. Dann erkennst du sehr schnell, ob dein
Programm richtig arbeitet. Die Anleitung und den Download findest du
hier irgendwo. Vielleicht ist mal einer von den Admins so nett und
stellt ihn in den Codebereich.
Gruß oldmax
Hallo oldmax,
Nein Über die "geheime schaltung" binn ich nicht gestolpert.
Kennst du noch den link dazu?
Zur Zeit Funktionieren die taster nicht so wie sie Funktionieren sollen.
Das Funktioniert aber wenn ich das Flip Flop Prg aus dem Tutorial
alleine laufen lasse.
Die taster sind richtig.
Einen Schaltplan habe ich noch nicht erstellt. habe mich an den
Pinbelegung des Hersteller gehalten. Und die Übliche Standard
verdrahtung zur ISP schnittstelle.
5,12V Liegen an.
Gruß markus
Markus Andrzejewski schrieb:
> Zur Zeit Funktionieren die taster nicht so wie sie Funktionieren sollen.> Das Funktioniert aber wenn ich das Flip Flop Prg aus dem Tutorial> alleine laufen lasse.
Die Overflow ISR hab ich nicht mehr kontrolliert.
Hast du die verändert?
Aua..
Da habe ich beim Selektieren was vergessen.
Nun Jetzt leuft das Prg auch bei mir.
Vielen Dank.
Nun Werde ich mir das Prg genauer anschauen. Denn Verstehen was da ganz
genau Passiert ist für mich wichtig.
Dazu Versuche ich eine Detalierte Beschreibung zu bauen.
Wenn ich fertig binn und ihr lust habt dise an zu schauen würde ich mich
freunen.
Denn Jetzt geht es mir darum alle benutze befehle und derren
zusammenhänge zu verstehen.
bei elektor habe ich gesehen das die Fern kurse anbieten. Hatt da jemand
erfahungen mit den Kursus gemacht? Ist das was für mich?
Oder habt ihr Voschläge zu fern kursus für absolut analfabeten?
Gruß markus
markus schrieb:
> Oder habt ihr Voschläge zu fern kursus für absolut analfabeten?
Deutsch für Anfänger an der VHS. (Das konnte ich mir nicht verkneifen).
Ansonsten das viel erwähnt Tutorial.
markus schrieb:
> Nun Werde ich mir das Prg genauer anschauen. Denn Verstehen was da ganz> genau Passiert ist für mich wichtig.
Ja ne? Man schaut sich erst das Program an wenn es funktioniert um zu
verstehen was passiert. Ich lach' mich krank.
Das war doch jetzt alles für die Katz'. Jetzt hast Du das Programm
zusammen, hast aber überhaupt keine Ahnung wie es funktioniert. Dafür
aber hie zwei oder drei kompetente Leute mit Pipifax aufgehalten.
Wenn Du von Anfang bis Ende die Tutorien hier durcharbeitest, dann
hättest Du das Problem selbst lösen können.
Mmh...
Du baust und erklärst auf www.tubeland.de "Elektrostaten" uvam. und dann
hast Du solche Schwierigkeiten µC und LED's zu verstehen? Und sag' jetzt
nicht, das ist ja auch Digitaltechnik.
..seltsam
-Flop-
Hi
>Deutsch für Anfänger an der VHS. (Das konnte ich mir nicht verkneifen).
Gilt auch für seine Webseite.
>Das war doch jetzt alles für die Katz'. Jetzt hast Du das Programm>zusammen, hast aber überhaupt keine Ahnung wie es funktioniert. Dafür>aber hie zwei oder drei kompetente Leute mit Pipifax aufgehalten.
Vielleicht kann man das aber demnächst in seinem Shop als
Tastensatz-Ersatz kaufen.
MfG Spess
Meine Rechtschreibweise ist mir nicht´s neues. Das sind Meine Schwächen.
Das hatt sich schon herumgesprochen
Damit muß ich leider leben.
Dafür habe ich andere Stärken.
Die 8 Taster schaltung hatte ich nicht vor als Bausatz anzubieten.
Da müssen noch einige Komponenten dazu kommen. Kann auch sein das ich
dann Später auf eine andere CPU ausweichen muß.
Und wenn das so währe, hätte ich den Programierer Privat kontaktiert und
mir ihn zusannen eine Faire Lösung ausgearbeitet.
Oder ich Hätte jemanden das im Auftrag gegeben, gegen bezahlung oder
nach verkaufte Lizenzen.
Leben und leben lassen.
Betruch und ähnliche Sachen lasse ich mir nicht nachreden. ist Tötlich
fürs geschäft.
Und wenn ich mich nach 10 jahren entscheide das Als Tasten bausatz
anzubieten. Dann würde ich auf jeden fall mit den Programierer eine
vereinbarung Treffen. Er hatt es Schließlich auch geschrieben und nicht
ich.
Also Ihr meint Mit hilfe des tutors müste ich es packen?
wie gesagt ein Fern studium würde ich auch dran teil nemen.
Nur zu wem gehen?
ja ich hätte mich vor jahren damit auseinander setzen sollen. erkannte
darmals nicht die Fielfalt an Möglichkeiten die so ein Controler bietet.
Ideen sind genug da.
und bis heute habe ich auch jede von denen umgesetzt.
das wird auch in ein parr jahren mit den Controler der fall sein.
Gruß Markus