Archiv verlassen und diese Seite im Standarddesign anzeigen : Pin's konfigurieren während de programablaufs?
Hallo Leute
Ist es möglich während des programablauf pins als output oder input zur konfigurieren?
ungefähr so:
For Idx = 15 To 0 Step -1
Config Porta.6 = Output
Reset Porta.6
'
If Dat.0(idx) Then
Config Porta.5 = Input
Else
Config Porta.5 = Output
Reset Porta.5
End If
Waitms 1
Config Porta.6 = Input
Waitms 1
Next Idx
Config Porta.5 = Input
Grüsse
Pinto
Dazu musst du die DDRx Register umschalten.
Also DDRA.6=1 schaltet den Pin auf Output, entsprechend DDRA.6=0 für Input.
Evtl. musst du noch aufpassen, dass du das Port-Register zum richtigen Zeitpunkt umschaltest.
PORTA.6=1 setzt den Ausgangspin auf High bzw. schaltet den PullUp des Eingangspins ein.
Gruß
Rolf
Hallo Pinto,
Ist es möglich während des programablauf pins als output oder input zur konfigurieren?
ja.
Dat.0(idx) -> daran dürfte sich der Compiler aber stören?
Gruß, Michael
Besserwessi
12.01.2009, 21:26
Wann sonst, wenn nicht zur Laufzeit soll man die Register zur Datenrichtung ändern. Extra Fuses dafür gibt es nicht.
Hallo
Was ich meine ist, ob die DDR Register in der Hauptschleife des Programs geändert werden düfen? Also nicht nur in der Initialisierungsphase.
Was ich damit bewirken will, ist das einige pins's in tri-state versetzt werden ohne die pullups einzuschalten. Geht das in Bascom?
Ich schreibe mein program von Picbasic Pro auf Bascom um, darum die Zeile "If Dat.0(idx) Then" die in Bascom natürlich nicht funktioniert.
Gruss
Pinto
Hallo Pinto,
Was ich meine ist, ob die DDR Register in der Hauptschleife des Programs geändert werden düfen?
Hast du meine letzte Antwort gelesen? Und die von Besserwessi?
Gruß, Michael
Hallo!
Dieses Programm von mir ändert den Zustand der Pins auch zur Laufzeit:
'Name:.............Reaktive LED
'Version:..........1.0a
'Datum:............25.12.2008
'Autor:............Thomas Edlinger
'---------------------------------
'Beschreibung: Bei Lichteinfall auf die LED schaltet sich die LED ein
' PA6=Anode
' PA7=Kathode
$regfile = "m32def.dat"
$crystal = 1000000
'KONFIGURATION PORTS
Config Porta.6 = Output
Config Porta.7 = Output
Dim A As Bit
Do
Porta.6 = 0
Porta.7 = 1
Waitms 1
Config Porta.7 = Input
Porta.7 = 0
Waitms 20
A = Pina.7
Config Porta.7 = Output
Porta.7 = 0
If A = 0 Then
Porta.6 = 1
Wait 1
Porta.6 = 0
End If
Loop
End
Das Programm funktioniert übrigens einwandfrei. ;)
Gruß
Thomas
Hallo TomEdl
Danke für die Hilfe.
Was ich wissen wollte ist ob der controller pin nach ein Config Porta.7 = Input in Tri-State geht?
Ist die zweite instruktion nötig?
Config Porta.7 = Input
Porta.7 = 0 'warum?
Waitms 20
A = Pina.7
Gruss
Pinto
Was ich wissen wollte ist ob der controller pin nach ein Config Porta.7 = Input in Tri-State geht?
Tristate direkt nicht aber er ist eben hochohmig. ;)
Ist die zweite instruktion nötig?
Config Porta.7 = Input
Porta.7 = 0 'warum?
Waitms 20
A = Pina.7
Diese Instruktion ist in meinem Programm notwendig, da sich ansonsten die LED - bei welcher ich vorher die Sperrschichtkapazität aufgeladen habe - sofort wieder über den internen Pullup-Widerstand wieder entladen würde und ich somit keine Messung der Helligkeit vornehmen könnte. Als nächstes wird dann 20ms gewartet und der Zustand des Pins (0 oder 1) in die Variable A geschrieben. Bei A=0 wurde die LED mit der Taschenlampe angeleuchtet, bei A=1 nicht. ;)
Ist ein recht geniales Prinzip, nur Batterie, µC, ein Widerstand und eine LED. Wenn ich jetzt mit der Taschenlampe nach draußen auf den Baum leuchte, blinkt es zurück. ;)
Gruß
Thomas
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.