Gast
#27318
Mit nachfolgenden Code möchte ich 4 Pins (PD7,PC0,PC1,PC2) ansteuern.
Allerdings macht der PC2 nicht mit. Am Ausgang liegen dauernd 1.09 V an.
In der Simulation stimmen die Portwerte. Wo liegt der Fehler? Kein
Unterschied in verschiedenen Platinen und mit verschiedenen µC. Die
Platinen habe ich selbst gefertigt.
'Schrittmotoransteuerung atmega16
'
$regfile = "m16def.dat"
$crystal = 4915200
$baud = 1200
Dim A As Integer
Declare Sub Linksdrehung
Declare Sub Rechtsdrehung
Dim C As Integer
Dim Eingang As Integer
Dim W As Integer
Dim V As Integer
Dim Richtung As Integer
Dim Sensor1 As Integer
Dim Sensor2 As Integer
Config Serialout = Buffered , Size = 30
Config Portc = &B11111111
Config Portd = &B10000100
Config Pinc.2 = 1
'legt die Richtung der Pins fest: 0
für Eingang 1 für Ausgang, links deen höchsten Pin, rechts den
niedrigsten
Set Portd.3 'PullUp von
Pin PD3 aktivieren, zieht PD3 sauber
Set Portd.4 'auf 5V, Mit
Taster dann auf 0V herunterziehen (für input).
Set Portd.5
Set Portd.6
C = 500 'wartezeit
zwischen einzelschritt der schrittmotorumdrehung
Richtung = 0
'eingabe der drehgeschwindigkeit über tastatur
Do
W = Ischarwaiting() 'gibt eine 1
aus, wenn über V24 ein Signal kommt
If W = 1 Then
V = Inkey()
Print V
C = Asc(v) 'formt ein
ASCII_Zeichen in eine Zahl um
End If
'Fahrtrichtung festlegen
Sensor1 = Pind.5
Sensor2 = Pind.6
Set Portd.2 'LED ein
If Richtung = 0 Then
If Sensor1 = 0 Then Richtung = 1
End If
If Richtung = 1 Then
If Sensor2 = 0 Then Richtung = 0
End If
Print Richtung
Print Sensor1
Print Sensor2
'Signale für Fahrtrichtung generiern
If Richtung = 0 Then Gosub Linksdrehung
If Richtung = 1 Then Gosub Rechtsdrehung
Loop
Rechtsdrehung:
Set Portc.3
Waitms C
Reset Portd.7
Waitms C
Set Portc.1
Waitms C
Reset Portc.3
Reset Portd.2 'LED aus
Waitms 500
Set Portc.0
Waitms C
Reset Portc.1
Waitms C
Set Portd.7
Waitms C
Reset Portc.0
Waitms C
Print C
Return
Linksdrehung:
Set Portd.7
Waitms C
Reset Portc.2
Waitms C
Set Portc.0
Waitms C
Reset Portd.7
Reset
Portd.2 'LED aus
Waitms C
Set Portc.1
Waitms C
Reset Portc.0
Waitms C
Set Portc.2
Waitms C
Reset Portc.1
Waitms C
Print C
Return