Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Mega32: PortB.4 bis PortB.7 als Ausgang? Kategorie: Programmierung Basic (von Thomas Heike - 14.11.2011 14:35)
Als Antwort auf Mega32: PortB.4 bis PortB.7 als Ausgang? von Thomas Heike - 14.11.2011 14:00
Ich nutze:
C-Control Pro Mega32, C-Control Pro Mega128
SPI_Disable() ist das Zauberwort, und muĂ? noch vor den Befehlen stehen, welche die Pins als
Ausgang konfigurieren.

In der Hilfe zur CControl-Entwicklungsumgebung steht bei der Pinzuordnung an dieser Stelle
einfach "USB-Kommunikation". Das Durchforsten der Bibliotheksfunktionen brachte es dann:
"Das deaktivieren der SPI Schnittstelle verhindert die Benutzung USB Schnittstelle" Aha.

Wie wäre es mit einer ausführlicheren Beschreibung, welche Pins nach welchen
Voraussetzungen als allgemeine I/O-Pins nutzbar sind?

> Hallo zusammen,
>
> ich habe Schwierigkeiten, die obere Hälfte des PortB einer Mega32 auf Projectboard als Ausgang
> zu nutzen.
>
> Mit einem L293D sollen zwei kleine Motoren abwechselnd gesteuert werden. PortB.3 (Timer 0 Out)
> habe ich mit allen Enables des L293D verbunden, PortB.4 bis PortB.7 steuern die Richtungs-
> eingänge der vier Halbbrücken.
>
> Dabei funktioniert ein Motor einwandfrei, der andere nur in einer Richtung. Messung ergab, daĂ?
> PortB.6 auf 5V hängenbleibt, auch wenn er 0V ausgeben soll.
>
> Danach habe ich Pulldowns (4,7k) drangelötet.
>
> Jetzt: Alle Eingänge wechseln zwischen 0V und 0,5V, gehen also nicht mehr richtig auf High.
> Mein Verdacht: Die Ports sind gar nicht als Ausgänge aktiv, sondern schalten nur den
> internen Pullup an und aus.
>
> Wie kann das sein, bei folgendem Code?
>
> Sub main()
>   Port_DataDirBit(11,1)
>   Timer_T0PWM(1,PS0_64)
>   Port_DataDirBit(12,1)
>   Port_DataDirBit(13,1)
>   Port_DataDirBit(14,1)
>   Port_DataDirBit(15,1)
>   Motortest()
> End Sub
>
> Sub Motortest()
>   Dim PWMWert As Integer
>   Do While 1
>     Port_WriteBit(12,0)
>     Port_WriteBit(13,1)
>     Port_WriteBit(14,0)
>     Port_WriteBit(15,1)
>     For PWMWert = 1 To 255
>       Timer_T0PW(PWMWert)
>       AbsDelay(10)
>     Next
>     AbsDelay(1000)
>     For PWMWert = 255 To 1 Step -1
>       Timer_T0PW(PWMWert)
>       AbsDelay(10)
>     Next
>     Port_WriteBit(12,1)
>     Port_WriteBit(13,0)
>     Port_WriteBit(14,1)
>     Port_WriteBit(15,0)
>     For PWMWert = 1 To 255
>       Timer_T0PW(PWMWert)
>       AbsDelay(10)
>     Next
>     AbsDelay(1000)
>     For PWMWert = 255 To 1 Step -1
>       Timer_T0PW(PWMWert)
>       AbsDelay(10)
>     Next
>   End While
> End Sub

>
>
>


    Antwort schreiben


Antworten: