Archiv verlassen und diese Seite im Standarddesign anzeigen : Ports einlesen, aber wie ??
Hi ich möchte jetzt nach den ersten tests mit meinem Mega8 nun mal Servos für den Antrieb drann schrauben, mein Problem ist jetzt das wenn ich denn an einen Transistor schliesse das der dann sau Lahm ist. Was ich dann noch als Hauptproblem habe ist wie mach ich das, dass wenn ich Portd als Input deklariere und dann an Portd.1 5V anlege das ich das abfragen kann vielleicht irgendwie:
crystal 4000000
dim i as integer
config portd as input
config portb as output
do
portb.1 = 1
if portd.1 == 1
Portb.1 = 0
loop
Kann das so Funktionieren ??
würd mich über nen Codeschnipsel freuen
mfg Maik
Config portd = input
Config portb = output
muss es heißen.
Außerdem bei einzlenen eingängen Pin und nicht port, und die schleife...:
if pind.1 = 1 then
Portb.1 = 0
end if
und
$crystal= 4000000
du solltest aber noch die Pullups aktivieren:
portd = &HFF
MFG Moritz
Aber wenn ich da die PullUps aktiviere dann lieg doch sowieso an den pins 1 an oder irre ich mich da ?? dann müsste die if anweisung doch so heissen oder? if pind.1 = 0 then
Portb.1 = 0
end if
und dann reicht es aus wenn ich PD1 auf gnd ziehe ?? also einfach überbrücke ?? sry wegen den anfängerfragen
mfg Maik
Ja, genau!
Ne, im Ernst du hast recht, wenn du auf ne 1 wartest, musst du die Pulldowns aktivieren, also:
portd = 0
Hab ich wohl übersehen 8-[
MFG Moritz
Hi leider funzt der Input bei mir immer noch nicht ich weiss langsam echt nicht mehr was ich machen soll
$regfile = "m8def.dat"
$crystal = 4000000
Config Portb = Output
Config Portd = Input
Dim I As Integer
Enable Interrupts
Portd = 0
Do
Portb.1 = 1
I = Portd.7
If I = 1 Then
Portb.1 = 0
End If
Loop
aber wenn ich jetzt Portd.7 auf Vcc Lege passiert nüx und wenn ich mich nicht teusche ist Pord.7 auf der linken seite der 2. von unten oder nicht ? ?
Mfg Maik
I = Pind.7
zum Einlesen muss Pin verwendet werden, wenn Du Port verwendest bekommst Du als Antwort ob der eingebaute PullUp-Widerstand aktiv oder inaktiv ist bzw. wenn der Port als Ausgang definiert wurde, welchen Wert Du ihm als letztes zugewiesen hast.
Typischer Fehler :-)
Super danke Jetzt gehts mit diesem Code
$regfile = "m8def.dat"
$crystal = 4000000
Config Portb = Output
Config Portd = Input
Dim I As Integer
Enable Interrupts
Portd = 0
Do
I = Pind.7
If I = 1 Then
Portb.1 = 0
Else
Portb.1 = 1
End If
Loop Leider dauert es jetzt bestimmt 1-3 sekunden wenn ich den port nicht mehr auf Vcc ziehe bis Portb.1 wieder auf 1 gesetzt wird gibt es da nen trick damit das schneller geht ??
Aber schon mal vielen danke für eure Hilfe
mfg Maik[/code]
Hängt da irgendwie nen Kondensator dazwischen/neben? Denn normalerweise sollte es schneller gehen.
Eigentlich müsste auch dieser Code gehen:
do
Portb.1 = not Pind.7
loop
Halt ohne if und Else.
Der Fehler den ich oben genacht habe ist klar, wenn es einmal gessetzt ist, wird es nicht zurückgesetzt, da felhte halt die Else-Anweisung ](*,) .
MFG Moritz
ich habe nur eines Transistor in der Ganzen schaltung und zwar 100nF zwischen Vcc und Gnd kann das vllt an der LED liegen die ich benutze ??
Mfg Maik
So hab jezt pind.7 mit einem 100K ohm Pulldown wiederstand versehen jeztt geht die LED sofort wieder an wenn ich die brücke weg nehme leider geht sie auch wieder an wenn die Brücke drann bleibt also irgend was ist da noch nicht richtig habt ihr ne idee ? ?
Mfg Maik
Transistor in der Ganzen schaltung und zwar 100nF
??? Ich glaube es wäre gut, wenn du deine Schaltung mal skizzieren könntest, das würde einiges erleichtern, im Moment versteh ich nicht so ganz, was du machst.
MFG Moritz
So ich hoffe ich hab das richtig gemacht. Also ich denke dass das so richtig ist
Also probiers mal so, mir ist der Einsatz der Diode bei dir nciht ganz verständlich, vielleicht könntest du es kurz erläutern.
Ansonosten so:
Config Pind.7 = Input
Portd.7 = 1 'Pullup aktivieren
Config Pinb.1 = Output
Eingang Alias Pind.7
Ausgang Alias Portb.1
Do
Ausgang = Not Eingang
Loop
End
Zu beachten ist allerdings, dass der AVR, wenn er die Diode wie im Schaltbild schaltet weniger Strom vließen lässt, als wenn man die Diode andersrum einsetzt, also der AVR quasi die erforderliche Masse bildet... ICh hoffe das ist verständlich ;-)
Bei kleinen Dioden (Low Current) sollte es aber so kein Problem sein.
MFG Moritz
Hi ich habe mir noch mal meine Schaltung angesehen und da fiel es mir wie schuppen von den augen ich hatte den Pulldown nicht an PD7 sondern an PB0 angeschlossen also war PD7 wenn ich den schlater geöffnet habe unbeschaltet kein wunder das das dann nicht funktionieren kann ](*,) ](*,) ](*,) ](*,) ](*,) ](*,) ](*,) ](*,)
jetzt muss ich nur noch das mit den Servos als antrieb hintbekommen und ich kann meinen ersten robby bauen.
achso die Diode zeigt mir natürlich an aber der Port an oder aus ist ;-)
mfg MAIK ](*,) ](*,) ](*,) ](*,) ](*,) ](*,)
Ja, das kenn ich, es liegt oft an den kleinen Dingen, mal hier ein vergesser Code, mal da eine kalte Lötstelle...
Schön dass es läuft.
MFG Moritz
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.