Forum: Mikrocontroller und Digitale Elektronik BASCOM - Programmierung. Wer kann helfen?


von Nico S. (captain-n)


Angehängte Dateien:

Lesenswert?

Hallo Leute

suche dringend Hilfe im Umgang mit der Programmiersprache in BASCOM. 
Habe ein Programm vorliegen, das ich haarklein und für jedermann 
verständlich erklären soll, doch habe ich mit diesem Programm noch nie 
zuvor gearbeitet.

Muss bis kommenden Donnerstag zur Prüfung meine Dokumentation vorlegen 
können.

Kann mir jemand weiterhelfen?


Habe das Programm mal mit angehängt. Sinn und Zweck der Software ist, 
dass ich mit einem AVR-Starter-Kit Fernbedienungscodes auslesen und 
anzeigen lassen kann.

Vielen Dank schonmal im Voraus.

greez
Captain N

von Sebastian (Gast)


Lesenswert?

Lads dir runter und so geil wie der Code kommentiert ist,was willst du 
noch erklären??

von Meff (Gast)


Lesenswert?

Also das hier :

Lcd "  Nico Schweig  "
Print "--Nico Schweig--" + Chr(10)
Waitms 1000


gibt Deinen Vor- und Nachnamen aus.

von Nico S. (captain-n)


Angehängte Dateien:

Lesenswert?

ich bin auf dem Gebiet der absolute Unterflieger, weil ich bisher nie 
mit solchen Themen oder Programmen gearbeitet habe.

Ich kenne mich noch nicht einmal auf dem Schaltplan wirklich aus, und 
einige der Befehle kann ich auch nicht wirklich zuordnen.

Das ist völlig fremdes Gebiet für mich, aber es wird jetzt erwartet, 
dass ich das innerhalb einer Woche beherrschen soll.

Derzeit versuche ich herauszufinden, ws Port B genau ist, wo er zu 
finden ist, und was hier jetzt genau geschieht. (ab Zeile 32).
Ich weiß nicht, was diese "&"-Symbole zu sagen haben, oder die 
Dollarzeichen. Bin wie gesagt völliger Neuling auf dem Gebiet.

Was ich bisher herausgefunden habe, ist, dass "PortX" angibt, dass Infos 
auf Port X gespeichert werden sollen, und man zum auslesen anstatt 
"PortX" "PinX" angeben muss.

Im Anschluss an diesen Eintrag füge ich mal ein, was ich bisher 
geschrieben habe, und wie es in etwa aussehen soll. Das Ganze soll so 
erläutert werden, dass es jedermann, also auch jemand, der zum ersten 
Mal ein elektronisches Bauteil in der Hand hat, Schritt für Schritt 
nachvollziehen kann, was hier jeweils geschieht, was welcher Befehl 
genau bedeutet etc.

Als Anhang noch der Schaltplan zu dem guten Stück. (TARGET 3001 - Datei)

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

lll.  Erstellen der Software - Arbeiten mit BASCOM

Betrachten wir uns nun die Struktur der Software, mit deren Hilfe wir 
die Codes unserer Fernbedienungen auslesen und anzeigen lassen können.

Bevor wir mit dem Programmieren richtig beginnen können, müssen wir dem 
Programm zunächst einmal mitteilen, mit welchem Bauteil es denn 
überhaupt arbeiten soll. So stellen wir sicher, dass keine 
Missverständnisse in der Kommunikation zwischen unserem Programm und dem 
AVR auftreten, die zu Fehlfunktionen führen können. Hierzu dient der 
Befehl $regfile. Da wir auf unserem AVR den Atmega16 verwenden, müssen 
wir hierbei auf die Datei m16def.dat verweisen. Der korrekte Befehl 
lautet also $regfile = "m16def.dat" (siehe Zeile 20 in unserem 
Beispiel).

Nun müssen wir noch regeln, wie schnell unser Programm dem AVR 
Informationen zukommen lassen darf, damit dieses mit dem Ausführen der 
Anweisungen nachkommt. Diese Geschwindigkeit, die sogenannte 
"Datenübertragungsrate", nennt man Baudrate. Der Zahlenwert, den man 
einer Baudrate zuordnet, gibt an, wieviele Informationen in einer 
Sekunde übertragen werden sollen. Für unser AVR wollen wir uns auf eine 
Baudrate von 38400 einigen, also in jeder Sekunde 38400 Informationen 
auf elektronischem Wege an das AVR weiterleiten.
Den hierfür zuständigen Befehl finden wir in unserem Programm in Zeile 
28:
$baud = 38400

Jetzt, wo wir unser AVR mit unserem Programm gewissermaßen miteinander 
bekanntgemacht haben, können wir uns daran machen, die einzelnen 
Stationen zuzuweisen, an denen fortan gearbeitet werden soll, und was 
genau dort jeweils geschehen soll.

von ich (Gast)


Lesenswert?

"Das ist völlig fremdes Gebiet für mich, aber es wird jetzt erwartet,
dass ich das innerhalb einer Woche beherrschen soll."

"Muss bis kommenden Donnerstag zur Prüfung meine Dokumentation vorlegen
können."

Prüfung in einem völlig fremdem Gebiet. Wo wird denn sowas praktiziert 
???

von Karl H. (kbuchegg)


Lesenswert?

> Bin wie gesagt völliger Neuling auf dem Gebiet.

Nein. Du bist einfach nur zu spät drann.
In der Zeit, in der du auf deine Hardware gewartet hast, hättest du dich 
längst mit BASCOM vertraut machen sollen / können.

Was bringts dir, wenn dir hier jemand die Doku schreibt? Spätestens bei 
der ersten Frage in deiner Abschlussprüfung bist du aufgeschmissen.

Klingt hart, ist aber so.

von Nico S. (captain-n)


Lesenswert?

wenn ich früher gewusst hätte, was ich machen sollte, hätte ich mich 
auch mit dem Programm befassen können.
Der Vorschlag hierfür kam allerdings auch erst sehr spät. Habe keine 
Werkstatt zuhause, kein Geld, um mir nötiges Material zu beschaffen, 
kein funktionstüchtiges Auto, um anderswo regelmäßig arbeiten zu können, 
und auch keine Zeit wegen der tollen Bahnverbindungen.

So kam schließlich irgendwann der Vorschlag vom Prüfer, aus dem AVR 
einen Fernbedinungstester zu machen, was sich mit so ziemlich all diesen 
Umständen noch realisieren ließe.

Und jetzt sitze ich hier. Ich weiß, dass es verdammt knapp ist, aber ich 
habe bis einschließlich nächste Woche frei, und noch Zeit zum lernen. 
Der Prüfer weiß, dass er da keine Wunder erwarten kann, aber ich will es 
wenigstens fertigstellen udn erklären können.

Mit ein paar guten Links über den Umgang mit BASCOM wäre mir auch schon 
ziemlich geholfen.

Die Doku muss ich ja wohl selber schreiben, aber wenn ich nicht 
verstehe, was in dem Programm da genau geschieht, kann ich auch nichts 
schreiben.

von Analog (Gast)


Lesenswert?

Machen wir es mal anders herum. An welcher Stelle kommst Du nicht weiter 
?

von gast (Gast)


Lesenswert?

hier habe ich es auch begriffen.   ;-)

http://www.rowalt.de/mc/index.htm

von Karl H. (kbuchegg)


Lesenswert?

Nico S. wrote:
> wenn ich früher gewusst hätte, was ich machen sollte, hätte ich mich
> auch mit dem Programm befassen können.

Ist kein Grund.
Egal was du für ein Projekt machst, Grundlagen müssen sein.
Und die kann man auch mit dem BASCOM Simulator, ganz ohne Hardware, 
lernen

> Mit ein paar guten Links über den Umgang mit BASCOM wäre mir auch schon
> ziemlich geholfen.

google:
 bascom tutorial

das zb.
http://www.rowalt.de/mc/index.htm
Du kannst bei "Einführung 2" einsteigen.

von Analog (Gast)


Lesenswert?

Also ich hab mir jetzt den Code 5 Minuten angesehen. Ist doch alles 
Sonnenklar. Vielleicht hilft es Dir die Aliase wieder zurück zu wandeln 
in die eigentlichen Kommandos. Dann wird klarer was da passiert. Also 
nicht schlecht wäre wenn Du das Programm Stück für Stück selbst neu 
schreibst. Dabei beginnst Du mit der Hauptroutine. Dann machst Du Dir 
klar was die Tastenroutinen machen und dann das wichtige : Die 
Empfangsroutine.

Preisfrage: Was macht dieser Codeschnipsel?

Select Case Ire                    'IR EingangsPin selektieren
    Case 0
      If Bis = 1 Then                   'Bistabiler Zustand, verhindert
        Bis = 0                          'mehrfachschalten.
        1mz = 0                          'Puls/Pausen- Reset
        V7 = 0 : For I = 1 To 15 : Next I : V7 = 1          'nur zur 
Indikation für Oszi
        Incr Addr 
'Array-Zähler der Impulse
        Tar(addr) = 3mz : 3pp = 3pp + 3mz 
'Impulsbreite in Array+Summe ermitteln
        3mz = 0                                             'Zähler 
Reset
      End If                                                'Ende der 
negativen Flanken Steuerung.

von Analog (Gast)


Lesenswert?

Case 1

      If Bis = 0 Then                     'Pos. Flankenschalter.
        Bis = 1
        1mz = 0                            'Puls/Pausen- Reset
      End If                              'Ende der pos. 
Flankensteuerung.
    End Select



und was macht dieser Teil?

von Nico S. (captain-n)


Lesenswert?

bin im Moment noch eifrig am vertexten.

Wofür genau stehen in BASCOM die Zeichen "&" und das Dollarzeichen vor 
den Begriffen und Befehlen?

von Analog (Gast)


Lesenswert?

Kennst Du Compiler-Direktiven und Hex-Zahlen ?

von Nico S. (captain-n)


Lesenswert?

Hex-Zahlen kann ich lesen, aber was bedeuten diese zeichen nun? Das muss 
ich ja auch mit erläutern.

Und weshalb werden in Zeile 32/33 DDRA und PORTA getrennt aufgeführt?

Soweit ich das verstehe, wird das Datendirektionsregister doch auch an 
Port A mit den Pins adressiert.
Bzw. wenn nicht, was wird dann mit diesen beiden Werten angegeben?

von Analog (Gast)


Lesenswert?

>Hex-Zahlen kann ich lesen, aber was bedeuten diese zeichen nun? Das muss
>ich ja auch mit erläutern.

Ohje, jetzt sind mir die Zaunpfähle ausgegangen. Hat noch jemand welche 
da?

von Nico S. (captain-n)


Lesenswert?

sorry, hab wirklich null Plan von dem ganzen Zeugs, und die Zuordnungen. 
Deswegen dieses Und-Zeichen udn dieses Dollarzeichen, das sind ja wohl 
BASCOM-spezifische Begriffe.

von Peter (Gast)


Lesenswert?

> das sind ja wohl BASCOM-spezifische Begriffe.
Genau so ist es, du wirst also nicht drum rum kommen wenigstes die 
Grundlagen von BASCOM zu lesen.

von Weingut P. (weinbauer)


Lesenswert?

bascom unterstützt die Eingabe in
verschiedenen Zahlenvormaten.
Normalerweise verwendet man normale
Dezimalzahlen, daher brauchts da kein Vorzeichen
z.B. A=255
Man kann aber auch hex eingeben, dann muss man dem compiler sagen,
dass hier hex verwendet wurde durch &H
z.B. A=&Hff

und genau so ists auch bei binärer eingabe &B
a=&B11111111

von Weingut P. (weinbauer)


Lesenswert?

das $ wird verwendet für bestimmte Konfigurationen
z.B. Frame, Stack oder Baudrate und kommt immer
mit bestimmten Schlüsselworten

über $baud=9600 wird die UART konfiguriert und aktiviert.
will man im Programm die Baudrate verändern nimmt man nur noch

baud = 19200

$regfile ist einfach die Definition welcher Controller
verwendet wird.

von Paul Baumann (Gast)


Lesenswert?

Den Code habe ich doch gestern erst in mindestens einem weiteren Beitrag 
gesehen?! Verfasser war (glaube ich) "Ingo", der das gleiche Problem
hatte. ("Fernbedienungstester mit AVR-Starterkit" oder so ähnlich)

Das scheint ja ein "feines Ding" zu sein, wenn man von Leuten, die 
alle
offensichtlich vorher noch nie etwas mit Bascom zu tun hatten, eine aus-
führliche Erläuterung zum Programm in einer Prüfung verlangt....

Wenn das im Lehrplan nicht enthalten war, geht die Prüfung bei dieser 
Frage flächendeckend "in die Hose". Spätestens dann wird man sehen,
daß die Prüflinge keine Schuld trifft. Das wäre ja so, als ob man
von einem Friseur in dessen Prüfung verlangt, eine Sachertorte anzu-
fertigen.

Staunend
Paul

von Dominique G. (dgoersch)


Lesenswert?

Nico S. wrote:
> Und weshalb werden in Zeile 32/33 DDRA und PORTA getrennt aufgeführt?

DDR und PORT sprechen unterschiedliche Register an, zwei Zeilen drunter 
ist das ganze nochmal mit "B" und sogar kommentiert. Wo ist also das 
Problem?

von Gast (Gast)


Lesenswert?

Das Problem ist, daß hier einer entweder mords hohl ist oder stinkefaul.

von Gast (Gast)


Lesenswert?

Oder beides.

von Nico S. (captain-n)


Lesenswert?

das Problem ist zum einen, dass ich mit der Materie noch nie zuvor zu 
tun hatte, und dass ich an dieser Stelle eben nicht so recht weiß, wie 
das ganze technisch zu sehen ist.

Weil Port A nunmal nur über 8 Pins verfügt, aber weil DDRA (meiner 
Ansicht nach) ebenso an diesen Pins angesteuert wird. Ich muss das ganze 
ja für nen absoluten Neuling verständlich erklären können.

Werden hier jetzt nun schaltplantechnisch gesehen zwei verschiedene Pins 
angesteuert, oder kann hier ein Pin dieses Ports quasi mehrere 
Funktionen übernehmen? Das würde dann allerdings keinen Sinn machen, 
wenn die Bits in beiden Fällen unterschiedlich definiert sind.

Wo liegt der unterschied?



Das UND-Zeichen bedeutet also lediglich, dass danach angegeben wird, in 
welchem Zahlensystem die Bits dargestellt werden, und das Dollarzeichen 
gehört einfach zu diversen Befehlen dazu, um kenntlich zu machen, dass 
es eben programmspezifische Befehle sind?

von Sven P. (Gast)


Lesenswert?

Nico S. wrote:
> das Problem ist zum einen, dass ich mit der Materie noch nie zuvor zu
> tun hatte, und dass ich an dieser Stelle eben nicht so recht weiß, wie
> das ganze technisch zu sehen ist.
<off>
Ich kenn mich mit so Spielzeug und Basic auch nicht aus, aber eines 
würde mich interessieren:
Mir ist ein Beitrag von wegen Basic, RC5-Fernbedienung und Prüfung auch 
schonmal begegnet, daher die Frage: Was genau lernst/studierst du da 
gerade und vorallem, wie kommt es, dass man dir ganz urplötzlich ein 
offenbar vollkommen fachfremdes Dingen vorsetzt und dich damit zur 
Prüfung bittet?
</off>


> Weil Port A nunmal nur über 8 Pins verfügt, aber weil DDRA (meiner
> Ansicht nach) ebenso an diesen Pins angesteuert wird. Ich muss das ganze
> ja für nen absoluten Neuling verständlich erklären können.
Datenblatt.

von ich (Gast)


Lesenswert?

> ja für nen absoluten Neuling verständlich erklären können.
Erkläre es so das du es verstehst dann kapiert es jeder.

von Nico S. (captain-n)


Lesenswert?

Der Vorschlag hierfür kam erst sehr spät. Habe keine
Werkstatt zuhause, kein Geld, um mir nötiges Material zu beschaffen,
kein funktionstüchtiges Auto, um anderswo regelmäßig arbeiten zu können,
und auch keine Zeit wegen der tollen Bahnverbindungen.

So kam schließlich irgendwann der Vorschlag vom Prüfer, aus dem AVR
einen Fernbedinungstester zu machen, was sich mit so ziemlich all diesen
Umständen noch realisieren ließe.
Den AVR sollten wir zur Zwischenprüfung zusammenbasteln, da wurden 
Teile, Bestückungspläne etc alles zur Verfügung gestellt.
ein kollege von mir und ich sind die einzigen, die den AVR seither nicht 
mehr zu Gesicht bekommen hatten.
Dazu sei angemerkt, dass die Zwischenprüfung generell miserabel 
ausgefallen war, im theoretischen Teil habe ich als einziger bestanden, 
und im praktischen Teil wurde niemand auch nur fertig mit dem AVR.

Und aufgrund der fehlenden Löt-Erfahrung bot uns der Prüfer zunächst an, 
bei ihm zuhause ein wenig üben zu dürfen in dessen werkstatt, und bei 
der Gelegenheit das AVR eigenständig neu zusammenzubauen.

Irgendwann wurde es aber zeitlich immer enger bei mir, und irgendwann 
fing dann die Geschichte mit dem Auto an, weswegen ich fortan auch nicht 
mehr zum löten kommen konnte.

Stattdessen wurde mir versprochen, das das AVR fertig gebastelt werden 
würde, und ich es fertig überreicht bekommen sollte, sogar mit fertiger 
Software. Mein Hauptbestandteil der Prüfung solle dann die detaillierte 
Beschreibung dieser Software umfassen.
Das war vor etwa 4-5 Monaten. Seither kam dann immer wieder, er habe es 
nur zuhause vergessen, dann hieß es er habe es noch nicht fertig, dann 
hieß es ein andermal, ich würde es definitiv bis Mitte Dezember 
zugeschickt bekommen, dann hieß es, es würde mit etwas Glück am 
folgenden Wochenende fertig werden, und dann könnte ich es bei ihm 
abholen - ohne Auto. Letzte Woche hat er es dann immerhin geschafft, es 
mir in die Schule mitzubringen - und nun, nach monatelangem hin und 
hergerenne, halte ich nun endlich mein AVR in Händen, ud durfte mich 
dann erstmal mit der Software herumschlagen, damit die endlich mal lief.

Und nun sitze ich hier, und darf innerhalb einer Woche all das fertig 
machen, wofür mir ursprünglich mehrere Monate zur Verfügung stehen 
sollten.

Und da ich den Prüfer gut genug kenne, um zu wissen, dass ich mir lieber 
anderswo qualifizierte Hilfe suche, habe ich mich hier an dieses Forum 
gewandt

von Nico S. (captain-n)


Lesenswert?

@ "ich":

Da is ja grade das Problem an der Sache - dazu muss ich es ja erstmal 
bis ins letzte Detail verstehen.

Und eben dazu habe ich mich hier angemeldet, da ich nicht weiß, wo ich 
sonst Hilfe her bekommen könnte.

Hier sollen einige ziemlich fitte Leute anzutreffen sein.

von Analog (Gast)


Lesenswert?

Hm... hat zwar schon mal einer gesagt im vorigen Thread aber ich muss es 
nochmal zusammenfassen.

Also ein absoluter Neuling und Ahnungsloser in einem Gebiet soll 
absoluten Neulingen und Ahnungslosen etwas in genau diesem Gebiet 
erklären. Hähhh?
Wer macht denn sowas? Mich beschleicht das Gefühl, daß Du Dir hier 
versuchst Dir von den Leuten kostenlos und ohne was dazu tun zu müssen 
Mikrokontrollerprogrammierung in BASCOM an eimem Projektbeispiel 
beibringen zu lassen.

Ich habe wirklich noch nie in meinem Leben gesehen, daß zu einem Projekt 
in der Schule / Uni keine Unterrichtsunterlagen/Projektunterlagen mit 
ausgeliefert wurden. Das Du nicht mal die grundlegensden Sachen weißt 
erschreckt mich total. Ich glaube Dir nicht, daß Dein Lehrer Dir so eine 
Aufgabe gibt und Dich dann ohne Hinweise im Regen stehen läßt. Aber wenn 
Du so weiter hartnäckig bleibst und auf armes Opfer des Lehrers machst, 
dann kommst Du vielleicht am Ende ja noch zum Ziel. Irgendein Blödmann 
findet sich ja immer der einem was erklärt. Mit solchen Leuten habe ich 
später auch gearbeitet, außer Joghurt fressen konnten die nix. Faulheit 
wurde noch nie belohnt.

von G. L. (glt)


Lesenswert?

Nico S. wrote:
> Stattdessen wurde mir versprochen, das das AVR fertig gebastelt werden
> würde, und ich es fertig überreicht bekommen sollte, sogar mit fertiger
> Software. Mein Hauptbestandteil der Prüfung solle dann die detaillierte
> Beschreibung dieser Software umfassen.
> Das war vor etwa 4-5 Monaten.

Deine 5monatige Faulheit hat dich in deine jetzigen Situation gebracht - 
kein anderen Umstand und keine andere Person.

Internet war und ist ja wohl verfügbar, aber scheinbar war dir deine 
Prüfung auch das nicht wert.

 jm2c

von Nico S. (captain-n)


Lesenswert?

Ok, ein letzter Versuch noch, zu erklären, was offensichtlich niemand zu 
verstehen scheint oder es einfach nicht will:

Mein Thema zu dieser Projektarbeit hat sich erst so kurzfristig ergeben 
aufgrund der bereits genannten Umstände.
Ursprünglich wollte ich ein Sat-Messgerät bauen, was sich allerdings 
dann erübrigt hatte mit der Zeit. Nach langem Suchen und Grübeln bin ich 
durch den Kontakt mit meinem Prüfer auf diesen Vorschlag gekommen - und 
wie ebenso schon erwähnt wurde mir die Hard- und Software erst vor ein 
paar Tagen überreicht.

Es ist auch längst kein Geheimnis mehr, dass besagter Prüfer nicht 
gerade der fähigste Mann ist, wofür es auch Zeugen gibt, meinen Chef mit 
eingeschlossen. Aus eben diesem Grunde wird dieser Prüfer in nächster 
Zeit auch ersetzt werden, was ebenso schon länger im Gerede ist.
Aufgrund der gegebenen Umstände, dass mir nur so wenig Zeit gegeben 
wurde, und dass selbst die Hilfestellungen nur am Vorankommen gehindert 
haben, und mir beinahe sogar mein AVR geschrottet hätten, wird da schon 
in den nächsten Tagen wieder ein Donnerwetter losbrechen.
Vielleicht wird der Posten schon unmittelbar nach meiner Prüfung neu 
besetzt, nur bringt mir das nun herzlich wenig, weil ich da jetzt noch 
durch muss.

Aus eben diesem Grund verzichte ich auf die Hilfe meines Prüfers, und 
suche anderswo Hilfe. Mein Chef ist in Sachen AVR leider auch nicht fit 
genug, um mir das Wissen in ausreichendem Umfang vermitteln zuz können. 
Ganz abgesehen davon, dass es mir alleine zeitlich und finanziell 
einfach nicht möglich ist, jetzt während meines Urlaubs zur 
Prüfungsvorbereitung auch noch regelmäßig in die Firma zu kommen. Vor 
allem auch, weil mein Chef sicherlich andere Dinge um die Ohren hat, als 
dass er seine ganze Zeit für mich opfern könnte.

Solange ich weder Soft- noch Hardware zur Verfügung hatte, konnte ich 
mich auch nicht in ausreichendem Maße vorbereiten, was mich da erwarten 
sollte.

Und es ist auch nicht so, dass ich mein Projekt völligen Noobs 
vorstellen soll, sondern dass es so verständlich geschrieben sein soll, 
dass es jeder verstehen KÖNNTE, der dieses von mir geschriebene Handbuch 
in die Hand gedrückt bekäme. Daran soll dann gezeigt werden, ob ich die 
Software selbst verstanden habe.
Ein weiterer Teil der Prüfung wird auch darin bestehen, in besagte 
Software einen Fehler einzubauen, oder aber eine Erweiterung 
vorzunehmen, und dazu muss ich das Programm schließlich auch kennen.

wer mir noch immer vorwerfen will, dass ich nichts dafür mache, der darf 
sich gerne meine bisherige schriftliche Ausführung dieses Projekts 
durchlesen. Werde sie einfach mal anhängen.

Entweder hilft mir hier jemand, oder ihr lasst es einfach sein. 
Runterbuttern bringt mich auch nicht weiter, und wenn mir einfach 
niemand hier helfen will, ist das auch ok, dann werde ich mich anderswo 
hinwenden und Hilfe suchen. In dieser knappen Zeit, die mir nun noch 
bleibt, habe ich wahrlich besseres zu tun, als stundenlang Einträge hier 
ins Forum zu schreiben, nur um zu erklären, warum ich Hilfe suche.

Deswegen werde ich wohl nur noch auf ernsthaft gemeinte Ratschläge 
antworten.
Habe von einem Kollegen eigentlich nur gutes über das Forum gehört. Aus 
eben diesem Grund habe ich hier nach Hilfe gesucht. Beim Beheben der 
Softwareprobleme hat es ja auch sehr viel geholfen.Aber wenn mir niemand 
helfen möchte, dann eben nicht.

Nichts desto trotz hier nun meine bisherige ausgeführte schriftliche 
Arbeit über das Programm:

lll.  Erstellen der Software - Arbeiten mit BASCOM

Betrachten wir uns nun die Struktur der Software, mit deren Hilfe wir 
die Codes unserer Fernbedienungen auslesen und anzeigen lassen können.

Bevor wir mit dem Programmieren richtig beginnen können, müssen wir dem 
Programm zunächst einmal mitteilen, mit welchem Bauteil es denn 
überhaupt arbeiten soll. So stellen wir sicher, dass keine 
Missverständnisse in der Kommunikation zwischen unserem Programm und dem 
AVR auftreten, die zu Fehlfunktionen führen können. Hierzu dient der 
Befehl $regfile. Da wir auf unserem AVR den Atmega16 verwenden, müssen 
wir hierbei auf die Datei m16def.dat verweisen. Der korrekte Befehl 
lautet also $regfile = "m16def.dat" (siehe Zeile 20 in unserem 
Beispiel).

Nun müssen wir noch regeln, wie schnell unser Programm dem AVR 
Informationen zukommen lassen darf, damit dieses mit dem Ausführen der 
Anweisungen nachkommt. Diese Geschwindigkeit, die sogenannte 
"Datenübertragungsrate", nennt man Baudrate. Der Zahlenwert, den man 
einer Baudrate zuordnet, gibt an, wieviele Informationen in einer 
Sekunde übertragen werden sollen. Für unser AVR wollen wir uns auf eine 
Baudrate von 38400 einigen, also in jeder Sekunde 38400 Informationen 
auf elektronischem Wege an das AVR weiterleiten.
Den hierfür zuständigen Befehl finden wir in unserem Programm in Zeile 
28:
$baud = 38400

Jetzt, wo wir unser AVR mit unserem Programm gewissermaßen miteinander 
bekanntgemacht haben, können wir uns daran machen, die einzelnen 
Stationen zuzuweisen, an denen fortan gearbeitet werden soll, und was 
genau dort jeweils geschehen soll.

An dieser Stelle eine kleine Erläuterung. Von außen betrachtet ist unser 
Atmega16 nichts weiter als ein eckiges schwarzes Bauteil mit vielen 
Füßchen. Elektronisch betrachtet beinhaltet der Atmega16 mehrere 
miteinander verbundene Bauelemente. Als Fachbegriff verwendet man für 
derartig aufgebaute Teile die Abküzung IC - einen "integrated circuit". 
Diese Bezeichnung ist englisch, und bedeutet wortwörtlich in deutscher 
Sprache "integrierter Schaltkreis". Eine genauere Beschreibung finden 
wir im Stichwortverzeichnis, im letzten Teil dieses Handbuchs.
Würde man den Deckel dieses IC abnehmen können, und von oben einen Blick 
hineinwerfen können, so könnte man es durchaus mit einem Handelszentrum 
vergleichen, welches in unserem Falle in vier Hauptbereiche unterteilt 
ist, wobei jedes dieser Einzelteile mehrere Anbindungen zur Umgebung 
hat, aber auch untereinander verknüpft ist. Für diese Einzelteile 
verwendet man den englischen Begriff Port, was soviel bedeutet wie 
"Hafen". Letztendlich handelt es sich dabei tatsächlich um nichts 
anderes: Hier laufen verschiedene "Handelsrouten" zusammen, die zur 
Bearbeitung jeweils in das zuständige Büro geleitet werden. Diese 
"Büros" nennen wir also fortan schlichtweg Ports.

Jede dieser Handelsrouten benötigt zur eindeutigen Bestimmung eine 
festgelegte Adresse, eine Art Straßenschild, damit die Waren auch stets 
am richtigen vorgesehenen Zielort ankommen, oder man nachvollziehen 
kann, von wo diese herstammen, falls eine Lieferung womöglich fehlerhaft 
ist. Die Stellen, an denen diese Straßen in unseren Port führen, heißen 
Pins, und sind für den Betrachter als diese kleinen Füßchen zu sehen, 
die aus dem Atmega16 herausragen. In unserem Programm tauchen diese 
Straßenschilder unter dem Begriff Bit auf, und sind der Einfachheit 
halber lediglich nach ihrer Reihenfolge an ihrem jeweiligen Port 
aufgeführt - nummeriert von rechts nach links.

Diese Ports können allerdings nur jeweils den Verkehr in einer Richtung 
verwalten, also entweder nur Waren annehmen, oder aber nur abschicken. 
Diese Richtung aber lässt sich jederzeit auf Wunsch umkehren. Wir sind 
also nicht dauerhaft auf eine Richtung festgelegt. Wie bei einem 
Einbahnstraßenprinzip, bei dem wir nach Belieben die Fahrtrichtung 
umdrehen können.

Merke:
Die "Straßenschilder", die wir am entsprechenden Bauteil anfassen 
können, also zur Hardware gehören, heißen also Pins. In der Software, 
also die schriftliche Zuordnung, die wir nicht anfassen können, sind 
diese in Form von Bits beschrieben.

Jedes Bit entspricht in unserem BASCOM-Programm einer Ziffer 0 oder 1, 
die in ihrer Reihenfolge von rechts nach links durchnummeriert sind - so 
können wir ablesen, welches Bit für welche Straße steht. Führen also 
beispielsweise 8 Wege nach Büro A, so wären diese in BASCOM mit 
insgesamt 8 Ziffern mit Wert 0 oder 1 hinter Port A auffindbar.
Eine 0 bedeutet, dass nur Informationen in den Port A hineingelangen 
können, also einen Eingang beschreiben, während eine 1 hingegen nur 
Informationen aus Port A hinausgelangen ließe - ein Ausgang.

In Zeile 32 finden wir folgende beiden Anweisungen vor:
DDRA = &B0000_0011
PORTA = &B0010_1100

Was auf den ersten Blick vielleicht etwas verwirrend erscheinen mag, ist 
bei näherer Betrachtung letzten Endes doch recht simpel:
"DDRA" steht als Abkürzung für "Datendirektionsregister A". Wer 
fremdwortbezüglich etwas fit ist, wird auch die Bedeutung dieses Begriff 
schnell verstanden haben:
Ein Datendirektionsregister bezeichnet ein Register, welches die 
Richtung (englisch "direction" = Richtung) des Datenweges enthält.
Mit "&B" vor der Zahlenfolge erklären wir dem Programm, dass die 
folgenden Zahlenwerte im "Binären Zahlensystem" angegeben werden. Jede 
Ziffer kann also lediglich zwei Werte annehmen - das sind die beiden 
bereits erwähnten Werte 0 oder 1. Der Unterstrich zwischen diesen werten 
dient lediglich der Übersicht. Nachdem wir nun wissen, was die beiden 
möglichen Werte der Bits bestimmen, sind wir nun in der Lage, den Sinn 
dieser Zeile zu verstehen:

Die ersten beiden Bits ("Straßen") am Datendirektionsregister A haben 
den Wert 1, sind also Ausgänge (nicht vergessen: Bits werden von rechts 
nach links gelesen!). Die beiden Den Unterstrich ignorieren wir, und 
gelangen zu den beiden nächsten Bits, die ebenfalls einen Eingang 
bestimmen. Lediglich die beiden letzten Bits sind mit dem Wert 1 als 
Ausgänge festgelegt.

von Peter (Gast)


Lesenswert?

Ich glaube mit jetztigen Ausarbeitung hast du auch die letzen leute die 
dir Helfen wollen verjagt. ein µC kann man leider nicht einem 4Jährigen 
kind erklären, weil er einfach zu komplex ist.
Du bist gerade mal bei den ersten Zeilen Quellcode und hast schon so 
viel Text geschrieben, wie viele tausend Seiten willst du denn schreiben 
wenn du zu den etwas anspruchsvolleren Themen kommst? (IR-Protokoll!).
Auf diese art kann man das nicht Art erkären! Ist ja wie einen Tier 
versuchen würde ein Auto zu erkären.

von Nico S. (captain-n)


Lesenswert?

sorry, habe gerade einen Fehler entdeckt. War noch mitten im Absatz, als 
ich was abgeändert hatte. Der letzte Absatz lautet also wie folgt:

Die ersten beiden Bits ("Straßen") am Datendirektionsregister A haben 
den Wert 1, sind also Ausgänge (nicht vergessen: Bits werden von rechts 
nach links gelesen!). Die beiden folgenden Bits sind durch die 0 als 
Eingang markiert. Den Unterstrich ignorieren wir, und gelangen zu den 
letzten vier Bits, die ebenfalls einen Eingang bestimmen.

von Nico S. (captain-n)


Lesenswert?

so verlangt es nunmal die Prüfungskommission, da kann ich ja nix für

von Nico S. (captain-n)


Lesenswert?

ok, das Programm ist jetzt soweit betriebsbereit, und die Doku 
fertiggestellt.

Gibt es eine Möglichkeit, das Toggle-Bit des RC5-Codes irgendwie 
"sichtbar" zu machen? Dass ich es als einzelnen Wert ausgegeben bekomme, 
und den mit aufs Display geben kann.

von cdg (Gast)


Lesenswert?

Klar, ehe es hier wegmaskiert wird

> Bce = Bce And &B01111111            'filtert ToggleBit heraus.

mit &B10000000 maskieren, speichern und an entsprechender Stelle 
ausgeben.

Aber Du weißt schon was ein Togglebit tut,
bei welchen Tasten es benutzt wird und warum ?
Wie oft und wie schnell es auftreten kann ?

cdg

von cdg (Gast)


Lesenswert?

oder einfach nur vor Bce = Bce And &B01111111

if Bce.7 = 1 then    'Togglebit ist gesetzt

   LCD ......

end if

cdg

von Nico S. (captain-n)


Lesenswert?

Das Toggle-Bit wird dem RC5-Signal vorausgesandt, bzw ist das erste 
übertragene Bit des Signals (nach den start-Bits). Mit jedem neuen 
Signal wechselt es zwischen 0 und 1. So kann unterschieden werden, ob ne 
Taste gedrückt gehalten oder eine neue gedrückt wird.

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.