mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bascom: Mega16:mehrere Pins schalten nicht auf high


Autor: Florian Stäudle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Florian Stäudle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du das JTAG Interface disabled. Dieses ist im Auslieferungszustand 
enabled und verhindert die normale Nutzung PC2-PC5

Autor: A. Arndt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Mikki,

dieser Tip war echt GOLDWERT, hat mir auch weitergeholfen, da komm'
mal drauf....

Gruss
A. Arndt

Autor: Jo Wollbeck (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mikki,

ebenfalls TAUSEND DANK für diesen Hinweis!!!

Beste Grüße,
Jo

Autor: Horst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie aktiviert oder deak. man das JTAG Interface.

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.