Bascom: Mega16:mehrere Pins schalten nicht auf high

Gast #27318
Lesenswert?
• ▲
▼
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
Gast
Lesenswert?
• ▲
▼
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.
Gast
Lesenswert?
• ▲
▼
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
Gast
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.