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
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
Hallo zusammen, Ich hab heute noch mal ein Geheuse für den
Roboter Gebaut. Zudem hab ich noch zwei Fragen:
Ich möchte nämlich versuchen, Den Roboter Probeweise über
einen ATiny 2313 zu betreiben, da ich den verdacht habe dass der Atmega32 Durchgebrannt ist.
Und nun hab ich keine Ahnung, wie ich den 6-poligen ISP an den ATiny 2313 anschließen soll,
und was ich an folgendem Programm ändern muss, damit es auf den Atiny läuft.EDIT: Code Pinbelegungen verbessert.Code:' Pinbelegung: ' Schalter vorne =PD2 ' Enable Motor1 = PB=0 ' Motor1 Eingang A = PB1 ' Motor1 Eingang B = PB2 ' Enable Motor2 = PB4 ' Motor2 Eingang A = PB5 ' Motor2 Eingang B = PB6 $regfile = "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 1000000 Config Portb.0 = Output Config Portb.1 = Output Config Portb.2 = Output Config Portb.4 = Output Config Portb.5 = Output Config Portb.6 = Output Config Pind.2 = Input Portd.2 = 1 Do If Pinb.0 = 1 Then 'Wenn keine kolision (vorne) erfolgt Portb.0 = 1 'fahre vorwärts. Portb.4 = 1 Portb.1 = 1 Portb.5 = 1 End If If Pinb.0 = 0 Then 'Wenn kollision (vorne) erfolgt, Portb.1 = 0 'Bremse, Portb.2 = 0 Portb.5 = 0 Portb.6 = 0 Waitms 20 'warte 20 ms Portb.1 = 1 'Drehe 200ms Portb.2 = 0 Portb.5 = 0 Portb.6 = 1 Waitms 200 Portb.1 = 0 'Bremse Portb.2 = 0 Portb.5 = 0 Portb.6 = 0 Waitms 20 'warte 20ms End If Loop End
Geändert von avus17 (16.09.2011 um 20:22 Uhr) Grund: Code Falsch
Die Website von ruedi99ms, einem anderen Freund und mir! http://www.highbankfive.de/
Unser Feuerlöschroboter ALUBME : Version 1 Version 2
Ich hab gerade mal eine kleine Microcontrollerplatine für den ATiny2313 gebastelt und das
folgendes Program draufgeladen :.Code:' Pinbelegung: ' Schalter vorne =PD2 ' Enable Motor1 = PB=0 ' Motor1 Eingang A = PB1 ' Motor1 Eingang B = PB2 ' Enable Motor2 = PB4 ' Motor2 Eingang A = PB5 ' Motor2 Eingang B = PB6 $regfile = "attiny2313.dat" $crystal = 1000000 Config Portb.0 = Output Config Portb.1 = Output Config Portb.2 = Output Config Portb.4 = Output Config Portb.5 = Output Config Portb.6 = Output Config Pind.2 = Input Portd.2 = 1 Do If Pinb.0 = 1 Then 'Wenn keine kolision (vorne) erfolgt Portb.0 = 1 'fahre vorwärts. Portb.4 = 1 Portb.1 = 1 Portb.5 = 1 End If If Pinb.0 = 0 Then 'Wenn kollision (vorne) erfolgt, Portb.1 = 0 'Bremse, Portb.2 = 0 Portb.5 = 0 Portb.6 = 0 Waitms 20 'warte 20 ms Portb.1 = 1 'Drehe 200ms Portb.2 = 0 Portb.5 = 0 Portb.6 = 1 Waitms 200 Portb.1 = 0 'Bremse Portb.2 = 0 Portb.5 = 0 Portb.6 = 0 Waitms 20 'warte 20ms End If Loop End
Das Flashen funktioniert mit dem Programm "myAVR ProgTool" von der Myavr Seite einwandfrei.
Ist vieleicht ganz interessant für andere mit dem mySmartUSB ligth programmer.
jetzt verkabel ich das ganze mal, und schau ob es läuft.
Die Website von ruedi99ms, einem anderen Freund und mir! http://www.highbankfive.de/
Unser Feuerlöschroboter ALUBME : Version 1 Version 2
Hallo zusammen,
ich hab mal wieder ne Frage nämlich ob jemand einen
Schaltplan hat, wie man mit einem Transistor einen Motor ansteuern kann.
Den mir ist mal wieder der Motortreiber abgeraucht und ich wollte schnell eine
Provisorische Schaltung aufbauen um zu sehen ob der rest der Elektronik was Abbekommen hat.
Die Website von ruedi99ms, einem anderen Freund und mir! http://www.highbankfive.de/
Unser Feuerlöschroboter ALUBME : Version 1 Version 2
Warum ist der Treiber dir abgeraucht? Wieder durch eine Unachtsamkeit (kein problem kann jedem passieren ) oder weil der Motorstrom zu groß ist? Wenn der Motorstrom zu hoch sein sollte, kannst du den L293B benutzen, der pro Kanal max. 1A liefern kann im gegensatz zum L293D der nur 600ma maximum liefert.
Einfach den MOSFET zwischen Motor und GND einbauen (Also Motor GND an Drain) und dann Gate mit PWM-Signal versorgen. Dies geht natürlich nur in die eine Richtung. Ansonsten müsstest du dich an diesen Schaltplan halten: Click
Dieser scheint allerdings nicht eine Dauerlösung zu sein. Wenns nur für Testzwecke ist, dann denke ich passt das mit nur einer Richtung oder?
MfG
Torrentula
MfG Torrentula
Also das ist schon OK das sich die Motoren nur in eine Richtung drehen.
allerdings hab ich nur BC337 rumliegen. Weiß jemand wie ich den
anschließen muß???
Die Website von ruedi99ms, einem anderen Freund und mir! http://www.highbankfive.de/
Unser Feuerlöschroboter ALUBME : Version 1 Version 2
Lesezeichen