Hallo, ich habe mir für meine Präsentationsleistung in Informatik das Thema Robotik ausgesucht und habe als Aufgabe eine Einleitung in die Mikrokontroller Programmierung zu machen. Dazu wurde mir ein fertiger Roboter gestellt mit einem ATMega 644-20PO. Der Roboter ist mit einigen Sensoren und 2 Motoren ausgestattet. Leider habe ich sozusagen keinerlei Vorkenntnisse in diesem Bereich und alles was ich an Erklärung mit auf den Weg bekommen habe ist diese Präsentation. Ich habe mir überlegt das man den Roboter "ganz einfach" nach vorne fahren lassen könnte und anhand dieses Beispiel dann die Funktion und Verwendung von I²C und die Programmierung erklärt (so in etwa). Leider werde ich aus diesem Dokument überhaupt nicht schlau. Ich glaube, dass ich die Motoren irgendwie über IC $C6... bzw IC $C4... - weil das ja ihre Adressen sind - ansprechen kann doch wie genau das funktioniert... Ich habe noch ein Beispielprogramm in dem die Motoren verwendet werden. Das habe ich mal als Word Dokument mit angehängt. Ich bin wirklich über jede Hilfe dankbar. Liebe Grüße
Dominique Rademacher schrieb: > Ich habe noch ein Beispielprogramm in dem die Motoren verwendet werden. > Das habe ich mal als Word Dokument mit angehängt. /Ironiemodus_an ich sehe, du kennst dich aus. Alle gängigen Compiler verstehen heutzutage docx-Quellcode, und unterstützen Microsoft Formate. /Ironiemodus_aus
... Ich kann auch die .bas Datei posten. Ich dachte vielleicht lässt es sich ja so besser für andere lesen. Außerdem programmiere ich den Mikrokontroller direkt und spiele die Programme nicht drauf. /Ironiemodus_an Aber vielen Dank. /Ironiemodus_aus
Dann muss ich dir leider sagen, dass hier keiner freiwillig ein DOCX File aufmachen wird. Programmtext ist einfach nur Text. Mach dir nicht soviel Arbeit, sondern poste den Text so wie er ist: Nackte Buchstaben ohne Formatierung.
1 | ONERR 17:I=$C6:IC I+1,0,1 |
2 | GOS 80 |
3 | GOS 55 |
4 | K=KEY(0) |
5 | IF K=$E6 GOS 60 |
6 | IF K=$E7 GOS 65 |
7 | IF K=$E4 GOS 20 |
8 | IF K=$E5 GOS 25 |
9 | IF (K=$E3)&(M=0) GOS 35 |
10 | IF (K=$E3)&(M=1) GOS 45 |
11 | IF (K=$E2)&(M=0) GOS 30 |
12 | IF (K=$E2)&(M=1) GOS 40 |
13 | IF K=$ED GOS 50:END |
14 | IF K=$73 GOS 50 |
15 | GO 4 |
16 | |
17 | I=$C4:GO 2 |
18 | |
19 | |
20 | 'Motoren vorwaerts |
21 | DA 0,$15,$33:M=0 |
22 | IC I,0,2 |
23 | RET
|
24 | |
25 | 'Motoren rueckwaerts |
26 | DA 0,$15,$CC:M=1 |
27 | IC I,0,2 |
28 | RET
|
29 | |
30 | 'Robo links vor |
31 | DA 0,$15,$30 |
32 | IC I,0,2 |
33 | RET
|
34 | |
35 | 'Robo rechts vor |
36 | DA 0,$15,$3 |
37 | IC I,0,2 |
38 | RET
|
39 | |
40 | 'Robo links zurueck |
41 | DA 0,$15,$C0 |
42 | IC I,0,2 |
43 | RET
|
44 | |
45 | 'Robo rechts zurueck |
46 | DA 0,$15,$C |
47 | IC I,0,2 |
48 | RET
|
49 | |
50 | 'Motoren stop |
51 | DA 0,$15,0 |
52 | IC I,0,2 |
53 | RET
|
54 | |
55 | 'PCA9533 init |
56 | S=$80:M=0 |
57 | DA 0,$11,0,S,0,S,0 |
58 | IC I,0,6 |
59 | RET
|
60 | 'Motor schneller |
61 | S=S+1:IF S>255 S=255 |
62 | DA 0,$14,S |
63 | IC I,0,2 |
64 | RET
|
65 | 'Motor langsamer |
66 | S=S-1:IF S<=0 S=0 |
67 | DA 0,$14,S |
68 | IC I,0,2 |
69 | RET
|
70 | |
71 | |
72 | 'menu |
73 | ? "*** Tastenbelegung ***" |
74 | ?
|
75 | ? "Cursortasten" |
76 | ? %$5E;" = vorwaerts" |
77 | ? %$76;" = rueckwaerts" |
78 | ? %$3C;" = links" |
79 | ? %$3E;" = rechts" |
80 | ?
|
81 | ? "PgUp = schneller" |
82 | ? "PgDn = langsamer" |
83 | ? " s = stop" |
84 | ? "Esc = Ende" |
85 | RET
|
Dominique Rademacher schrieb: > alles was ich an Erklärung mit auf den Weg bekommen habe ist diese > Präsentation. Ich hoffe einige Lehrer oder die sich dafür halten, lesen in diesem Forum auch mal mit. Ich bin (als Ausbilder für Facharbeiter) immer wieder geradezu geschockt, was andere Pädagogen unter projektorientierter Ausbildung verstehen. Aber sie können sich tagelang mit Power-Point beschäftigen. Toll Das musste ich einmal loswerden.
Eigentlich nag ich meinen Informatiklehrer sehr gerne. Letztes Jahr hab ich meine Präsentationsleistung über Künstliche Neuronale Netzte gehalten. Mich selbstständig ins Thema eingelesen und dann ein Netz programmiert das gezeichnete Buchstaben erkennen konnte. Das hat mir ziemlich Spaß gemacht. Dieses Jahr läuft das allerdings nicht so gut... Ich steh ziemlich auf dem Schlauch... Deshalb hoffe ich hier Hilfe zu finden :)
> Leider werde ich aus diesem Dokument überhaupt nicht schlau. > Ich glaube, dass ich die Motoren irgendwie über IC $C6... bzw > IC $C4... - weil das ja ihre Adressen sind - ansprechen kann > doch wie genau das funktioniert... Offenbar korrespondieren die IC Anweisungen mit den jeweils vorstehenden DA Anweisungen. Mittels DA werden die Daten festgelegt, die über I2C in die jeweiligen Peripherie-Register geschrieben werden sollen und IC realisiert dann den Transfer DA 0,$15,$3 IC I,0,2 Das DA legt 2 Werte, beginnend ab einer Datenadresse 0 fest. Die Werte sind $15 und $3 und IC überträgt dann diese beiden Werte per I2C an einen Baustein mit der Adresse die sich in I befindet (zb $C2) Die $15 scheinen konstant zu sein. das zweite Byte legt offenbar die Geschwindigkeit der Motoren fest. Jeweils eine Hex-Ziffer pro Motor. Soweit meine Arbeitshypothese. Ob das allerdings zur Beschreibung von I2C taugt, wage ich mal dahinzustellen.
seltsamer Dialekt ist das ... Gosubs mit festen Zeilennummern ... ist ja ätzend, bei Programmänderungen muss man das ganze Gesumse durch gehen und die Zeilennummern anpassen. Sowas hab ich seit dem C64 nicht mehr gesehen. Der wichtigste Teil aber für I2C steht ganz unten versteckt: PCA9533 Schau Dir das Datenblatt von dem Kerl an, da sollte die Kommunikation via I2C konkret drinnen beschrieben sein. http://www.nxp.com/documents/data_sheet/PCA9533.pdf 4-Bit I2C LED-dimmer EDIT: Hab mir das PDF mal angeschaut ... da steht ja alles schön drinnen ... hast Du das Ding auch mal gelesen oder gleich hier rein gestellt dass andere sich Deinen Kopf zerbrechen?
Oooooh... natürlich! Jeweils eine Hex-Ziffer pro Motor -> daruaf wäre ich wohl nie gekommen -.- Dann hat sich der Rest auch grad geklärt außer, wieso $15? Und wieso wird dann hier:
1 | 'Motor schneller |
2 | S=S+1:IF S>255 S=255 |
3 | DA 0,$14,S |
4 | IC I,0,2 |
5 | RET
|
$14 verwendet?
Dominique Rademacher schrieb: > Oooooh... natürlich! Jeweils eine Hex-Ziffer pro Motor -> daruaf wäre > ich wohl nie gekommen -.- > Dann hat sich der Rest auch grad geklärt außer, wieso $15? > > Und wieso wird dann hier: >
1 | > 'Motor schneller |
2 | > S=S+1:IF S>255 S=255 |
3 | > DA 0,$14,S |
4 | > IC I,0,2 |
5 | > RET |
6 | >
|
> > $14 verwendet? RTFM ... steht im Datenblatt ... anderes Register, andere Funktion. S.4 folgende Soll das Deine Präsentationsleistung werden oder die des Forums?
ich denke in diesem speziellen Fall ist das nicht so kritisch... aber
über die Bedeutung von
>> COMPANY CONFIDENTIAL <<
sollte man schon einmal nachdenken, wenn man ein PDF öffentlich ins Netz
stellt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.