Der Code sieht soweit ganz gut aus. Wie gesagt Kommentare wären schön
Das 2x "Wait 100" würde ich noch zusammenfassen. Und die If-Abfragen ruhig mal beschriften damit man weiß was die machen.
Der Code sieht soweit ganz gut aus. Wie gesagt Kommentare wären schön
Das 2x "Wait 100" würde ich noch zusammenfassen. Und die If-Abfragen ruhig mal beschriften damit man weiß was die machen.
Also erst mal vielen Dank für die Tipps, ich hab den Code mal überarbeitet.
Ist das so Ok oder hab ich wieder was vergessen???
Code:' Pinbelegung: ' Schalter vorne =PC0 ' Schalter hinten =PC6 ' Enable Motor1 = PA=0 ' Motor1 Eingang A = PA1 ' Motor1 Eingang B = PA2 ' Enable Motor2 = PA4 ' Motor2 Eingang A = PA5 ' Motor2 Eingang B = PA6 $regfile = "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 1000000 Config Porta.0 = Output Config Porta.1 = Output Config Porta.2 = Output Config Porta.4 = Output Config Porta.5 = Output Config Porta.6 = Output Config Pinc.0 = Input Config Pinc.6 = Input Pinc.0 = 1 Pinc.6 = 1 Do If Pinc.0 = 1 Then 'Wenn keine kolision (vorne) erfolgt Porta.0 = 1 'fahre vorwärts. Porta.4 = 1 Porta.1 = 1 Porta.5 = 1 End If If Pinc.0 = 0 Then 'Wenn kollision (vorne) erfolgt, Porta.1 = 0 'Bremse, Porta.2 = 0 Porta.5 = 0 Porta.6 = 0 Waitms 20 'warte 20 ms Porta.1 = 1 'Drehe 200ms Porta.2 = 0 Porta.5 = 0 Porta.6 = 1 Waitms 200 Porta.1 = 0 'Bremse Porta.2 = 0 Porta.5 = 0 Porta.6 = 0 Waitms 20 'warte 20ms End If If Pinc.6 = 1 Then ' Wenn keine kolision (hinten) Porta.0 = 1 'fahre vorwärts Porta.4 = 1 Porta.1 = 1 Porta.5 = 1 End If If Pinc.6 = 0 Then 'Wenn kolision (hinten) Porta.1 = 0 'Bremse, Porta.2 = 0 Porta.5 = 0 Porta.6 = 0 Waitms 20 'warte 20 ms Porta.1 = 1 'drehe 200ms Porta.2 = 0 Porta.5 = 0 Porta.6 = 1 Waitms 200 Porta.1 = 0 'Bremse Porta.2 = 0 Porta.5 = 0 Porta.6 = 0 Waitms 20 'warte 20 ms End If Loop End
Die Website von ruedi99ms, einem anderen Freund und mir! http://www.highbankfive.de/
Unser Feuerlöschroboter ALUBME : Version 1 Version 2
Jap so ist gut
Die Kommentare dienen legendlich dazu, dass du und andere den Code leichter verstehen. Wenn du jetzt beim programmieren eine Pause machst oder dir den Code 2 Monate später nochmal anschaust hast du tierische Probleme den Code zu verstehen wenn eu ihn nicht ordentlich beschriftest. Bei der Beschriftung ist es weniger wichtig zu schreiben was ein Befehl macht sondern vielmehr was eine komplette Gruppe von Befehlen macht. Hier ein Beispiel:
Du schreibst nicht:
Waitms 200 'Warte 200ms
If PinD.1 = 1 then 'Wenn PinD.1 gleich 1 ist
PinD.2 = 1 'PinD.2 gleich 1
Else 'sonst
PinD.2 = 0 'PinD.2 gleich 0
End If
Weil da siehst du ja schon im Code was die Befehle machen. Du brauchst da nicht nochmal als Kommentar schreiben das "Waitms 200" eine Pause von 200ms bedeutet.
Du schreibst das vielmehr so:
Waitms 200
If PinD.1 = 1 then 'Wenn der linke Taster gedrückt wird,
PinD.2 = 1 'wird sie Lampe eingeschaltet
Else
PinD.2 = 0
End If
So siehst du sofort die Funktion hinter dem Codeblock. Achja und das ist nur ein frei erfundenes Beispiel
Das ist nicht aus deinem Code. In deinem Code hast du das Beschriften ja richtig gemacht, ich wollt dir nur nochmal erklären warum man das so macht.
Ansonsten gut so und weitermachen![]()
Ja, viel besser. Nur noch ne Kleinigkeit: Das Setzen der internen PullUps ist eigentlich auch eine Ausgabe am Pin:
Pinc.0 = 1
Pinc.6 = 1
Deshalb auch hier Portx.y=1
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Ok, danke für den tipp, ich hab den Code noch mal überarbeitet. So müsste es doch jetzt
stimmen oder???Code:' Schalter hinten =PC6 ' Enable Motor1 = PA=0 ' Motor1 Eingang A = PA1 ' Motor1 Eingang B = PA2 ' Enable Motor2 = PA4 ' Motor2 Eingang A = PA5 ' Motor2 Eingang B = PA6 $regfile = "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 1000000 Config Porta.0 = Output Config Porta.1 = Output Config Porta.2 = Output Config Porta.4 = Output Config Porta.5 = Output Config Porta.6 = Output Config Pinc.0 = Input Config Pinc.6 = Input Portc.0 = 1 Portc.6 = 1 Do If Pinc.0 = 1 Then 'Wenn keine kolision (vorne) erfolgt Porta.0 = 1 'fahre vorwärts. Porta.4 = 1 Porta.1 = 1 Porta.5 = 1 End If If Pinc.0 = 0 Then 'Wenn kollision (vorne) erfolgt, Porta.1 = 0 'Bremse, Porta.2 = 0 Porta.5 = 0 Porta.6 = 0 Waitms 20 'warte 20 ms Porta.1 = 1 'Drehe 200ms Porta.2 = 0 Porta.5 = 0 Porta.6 = 1 Waitms 200 Porta.1 = 0 'Bremse Porta.2 = 0 Porta.5 = 0 Porta.6 = 0 Waitms 20 'warte 20ms End If If Pinc.6 = 1 Then ' Wenn keine kolision (hinten) Porta.0 = 1 'fahre vorwärts Porta.4 = 1 Porta.1 = 1 Porta.5 = 1 End If If Pinc.6 = 0 Then 'Wenn kolision (hinten) Porta.1 = 0 'Bremse, Porta.2 = 0 Porta.5 = 0 Porta.6 = 0 Waitms 20 'warte 20 ms Porta.1 = 1 'drehe 200ms Porta.2 = 0 Porta.5 = 0 Porta.6 = 1 Waitms 200 Porta.1 = 0 'Bremse Porta.2 = 0 Porta.5 = 0 Porta.6 = 0 Waitms 20 'warte 20 ms End If Loop End
Die Website von ruedi99ms, einem anderen Freund und mir! http://www.highbankfive.de/
Unser Feuerlöschroboter ALUBME : Version 1 Version 2
Hallo
Ja, sieht gut aus. So wie ich gelesen habe verwendest du nun einen L293D als Motortreiber. Ich vermute PA0/4 sind die Enable-Eingänge, PA1/2 und PA5/6 sind Halbbrücken. Wenn du alles richtig angeschlossen hast sollte das so funktionieren.
Solange dein ISP nicht läuft könntest du noch ohne gesteckten Mega32 die Signale mit Drahtbrücken am Kontrollersockel simulieren. Möglicherweise stimmt die Drehrichtung eines Antriebs nicht, wenn die Antriebe um 180° gedreht angebaut sind.
btw. ist der Schaltplan in der Doku deines Pollinboards 'ne Frechheit.
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Hallo zusammen, ich hab gerade meinen Programmer bekommen und versucht das Programm zu übertragen,
ich habs so gemacht wie hier: http://www.rn-wissen.de/index.php/Ba...C3%BCbertragen
doch ich es wird nach dem click auf das grüne symbol, immer der Bascomordner auf der
festplatte geöffnet. Als Programmer benutze ich diesen hier: http://www.conrad.de/ce/de/product/1...archDetail=005
Den treiber hab ich installiert und nach anleitung bei Bascom die richtigen Programmereinstellungen eingestellt.
Hat jemand einen idee worann das liegen kann???
Die Website von ruedi99ms, einem anderen Freund und mir! http://www.highbankfive.de/
Unser Feuerlöschroboter ALUBME : Version 1 Version 2
Lesezeichen