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
Schonmal den Port auf einer Experimentierplatine getestet? Vielleicht ist ja ein Fehler im Layout. Ich würde den Controller nur minimal beschalten und mit einem Minimal-Programm testen, um Hardware-Fehler auszuschließen.
Gleiches Problem auf Steckplatine. Habe nochmals einen neuen µC verwendet, hilft auch nicht. Kurzer Code hilft auch nicht. 'Schrittmotoransteuerung atmega16 ' $regfile = "m16def.dat" $crystal = 1000000 '4915200 $baud = 1200 Dim C As Integer Config Portc = &B11111111 'Config Portd = &B10000100 'Config Pinc.2 = 1 C = 500 'wartezeit zwischen einzelschritt der schrittmotorumdrehung Do Set Portc.2 Waitms C Reset Portc.2 Waitms C Loop
Hast du das JTAG Interface disabled. Dieses ist im Auslieferungszustand enabled und verhindert die normale Nutzung PC2-PC5
Hi Mikki, dieser Tip war echt GOLDWERT, hat mir auch weitergeholfen, da komm' mal drauf.... Gruss A. Arndt
Hallo Mikki, ebenfalls TAUSEND DANK für diesen Hinweis!!! Beste Grüße, Jo
Bei den Fudebits. Wenn du den Internene Programmer nutzt dann mal Manuell öffnen und schau auf "Fusebits High" "Fusebit H" auf Disabled setzen und mit "Write FSH" schreiben. Fertig. Bei Externem Programmer in die Anleitung schauen wo man die Fuses ändert.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.