PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ausgang wird nicht richtig gesetzt



TobiasBlome
17.09.2006, 14:43
Hallo,
ich möchte ein PWM Signal auswerten was auch gut klappt, aber wenn ich dann einen Ausgang setze leuchtet die LED am Ausgang nur schwach.

Wenn ich mit
PORTD = &B11111111
die Ausgänge setze Leuchten die LED´s ordentlich (gemessener strom 1,5mA! LED mit Vorwiderstand für 5V)

Wenn ich das mit dem Programm (unten) versuche habe ich 5V am Ausgang Bis ich die LED anschließe! Dann geht die Spannung auf 1,7V runter und die LED glimmt nur!


'Konfiguration µC:
$regfile = "2313def.dat" 'AT90S2313-Deklaration
$crystal = 3686400 'Quarz: 3.6864 MHz

' Ein- und Ausgänge

Ddrd.2 = 0 'Eingang setzen Empfängersignal



'===============================================
' Variablen
'===============================================
Dim Pulsbreite1 As Word 'Knüppelstellung von Knüppel 1

Dim Kanal1o As Bit 'Speicher von Knüppel 1 OBEN


'-------------------------------------------------------------------------------

Do

Pulsein Pulsbreite1 , Pind , 2 , 1 'Pulsbreite auslesen (1=High Impuls)


If Pulsbreite1 > 140 And Kanal1o = 0 Then 'Wenn Impuls lang genug
Toggle Portd.3 'PD3 schalten
Kanal1o = 1 'Merker kanal1o setzen
End If

If Pulsbreite1 < 140 Then 'Wenn Impuls zu kurz
Kanal1o = 0 'Merker kanal1o RÜCKsetzen
End If


Loop
End

philiph
18.09.2006, 18:49
Ich kenne zwar nicht die genaue Pinzuweisung des Chips aber kann es sein das der Pin für IIC oder so genutzt wird(combiler optione )(oder die Fuse Bits dem Port eine andere Aufgabe zuweisen)

TobiasBlome
18.09.2006, 18:55
vielen Dank für die antwort. Ich dachte schon das dazu gar keiner eine Idee hat.

Also dieses Problem ist bei beliebigen Pins. Egal welche Pinns oder welcher Port...

philiph
18.09.2006, 19:00
Möglichkeit 1 wäre es mit einem anderen chip zu testen ode variante 2 stat mit toggle es mal mit portx.x =1 zu versuchen(sicher das die LED heil ist?)

PicNick
18.09.2006, 19:07
Definiere das Port ausdrücklich für Output
Ddrd.3 = 1 'Ausgang setzen für LED

Nutz' nix, schad' nix

TobiasBlome
18.09.2006, 19:16
Jippiiiiiiiii!!!!!!
DANKE!!!!!!!!!!!!!!!

Ddrd.3 = 1 'Ausgang setzen für LED

DAS WAR´S!!!!

vielen vielen DANK!!!

TobiasBlome
18.09.2006, 19:29
Also mein Modellbauschalter ist nun fast fertig! Wer Interesse hat aus 4 Kanälen 8 zu machen ohne in der Fernsteuerung zu löten Kann dieses Programm benutzen. Es hat 6 "rastende" Funktionen und 2 "tastende" Funktionen. Habe festgestellt, das es kaum Beschreibungen gibt um etwas am Empfänger anzuschließen sonder fast immer nur um Servo´s anzusteuern:

'-------------------------------------------------------------------------------
' Modellbauschalter 4/8Kanal 18.09.2006 Tobias Blome
'-------------------------------------------------------------------------------
'Beschreibung:

'4Steuerkanäle von Fernsteuerung auf 8 µC - Ausgänge
'Das Hi-Signal vom Empfänger wird mit "Pulsein" ermittelt!
'Knüppelstellung mitte hat ca. 121 Zeiteinheiten bei einem 3.6864 MHz Quarz!
'guter Schaltbereich für:
'oben einschalten ca.: 140
'unten einschalten ca.: 100
'Der mit "Pulsein" gemessene Wert wird in Pulsbreite1-4 ausgegeben.
'Kanal1-3u/o wird zum speichern benutzt, damit damit nicht bei jedem Durchlauf
'über "toggle" geschaltet wird, sondern erst wieder,
'wenn der Knüppel vorher in Nullstellung gewesen ist!
'"toggle" schaltet den Ausgang von Hi auf Low und wieder zurück!



'-------------------------------------------------------------------------------
'Konfiguration µC:
$regfile = "2313def.dat" 'AT90S2313-Deklarationen
$crystal = 3686400 'Quarz: 3.6864 MHz

'-------------------------------------------------------------------------------
'Ein- Ausgänge:
Ddrd = &B1000011 '1 Ausgang, 0 Eingang = Pin PD6,1+0 als Ausgang / PD5-2 als Eingang
Ddrb = &B11111111 '1 Ausgang, 0 Eingang = Pin PB7-0 als Ausgang



'-------------------------------------------------------------------------------
'Variablen
Dim Pulsbreite1 As Word 'Knüppelstellung Knüppel 1 '
Dim Pulsbreite2 As Word
Dim Pulsbreite3 As Word
Dim Pulsbreite4 As Word

Dim Kanal1o As Bit 'Speicher von Knüppel 1 OBEN
Dim Kanal1u As Bit 'Speicher von Knüppel 1 UNTEN
Dim Kanal2o As Bit
Dim Kanal2u As Bit
Dim Kanal3o As Bit
Dim Kanal3u As Bit
'-------------------------------------------------------------------------------




'-------------------------------------------------------------------------------
' HAUPTPROGRAMM
'-------------------------------------------------------------------------------


'Do Loop Schleife
Do

'Kanal 1:
'________

Pulsein Pulsbreite1 , Pind , 5 , 1 'Pulsbreite auslesen (1=High Impuls)
'Knüppel rastend OBEN
If Pulsbreite1 > 140 And Kanal1o = 0 Then 'wenn Knüppel oben und Kanal1oben=0 dann
Toggle Portb.1 'Pin 1 mal schalten (entweder auf Hi oder Low je nach vorherigem zustand)
Kanal1o = 1 'Variable Kanal1o setzen damit nicht neu getoggled werden kann
End If
If Pulsbreite1 < 140 Then 'Wenn Knüppel nicht oben dann
Kanal1o = 0 'Variable Kanal1o RÜCKsetzen damit neu getoggled werden kann
End If
'Knüppel rastend UNTEN
If Pulsbreite1 < 100 And Kanal1u = 0 Then
Toggle Portb.0
Kanal1u = 1
End If
If Pulsbreite1 > 100 Then
Kanal1u = 0
End If



'Kanal 2:
'________

Pulsein Pulsbreite2 , Pind , 4 , 1 'Pulsbreite auslesen (1=High Impuls)
'Knüppel rastend OBEN
If Pulsbreite2 > 140 And Kanal2o = 0 Then
Toggle Portb.3
Kanal2o = 1
End If
If Pulsbreite2 < 140 Then
Kanal2o = 0
End If
'Knüppel rastend UNTEN
If Pulsbreite2 < 100 And Kanal2u = 0 Then
Toggle Portb.2
Kanal2u = 1
End If
If Pulsbreite2 > 100 Then
Kanal2u = 0
End If



'Kanal 3:
'________

Pulsein Pulsbreite3 , Pind , 3 , 1 'Pulsbreite auslesen (1=High Impuls)
'Knüppel rastend OBEN
If Pulsbreite3 > 140 And Kanal3o = 0 Then
Toggle Portb.5
Kanal3o = 1
End If
If Pulsbreite3 < 140 Then
Kanal3o = 0
End If
'Knüppel rastend UNTEN
If Pulsbreite3 < 100 And Kanal3u = 0 Then
Toggle Portb.4
Kanal3u = 1
End If
If Pulsbreite3 > 100 Then
Kanal3u = 0
End If



'Kanal 4 (Taster / Taster):
'________

Pulsein Pulsbreite4 , Pind , 2 , 1 'Pulsbreite auslesen (1=High Impuls)
'Knüppel tastend OBEN
If Pulsbreite4 > 140 Then 'Knüppel oben
Portb. 7 = 1 'Port PB 7 setzen
Else 'sonst
Portb. 7 = 0 'Port PB 7 zurücksetzen
End If
'Knüppel tastend UNTEN
If Pulsbreite4 < 100 Then 'Knüppel unten
Portb. 6 = 1 'Port PB 6 setzen
Else 'sonst
Portb. 6 = 0 'Port PB 6 zurücksetzen
End If



'Automatikfunktion für Scheinwerfer:
'___________________________________

If Portb.0 = 1 Or Portb.1 = 1 Then 'Wenn PB0 oder PB1 Hi sind dann
Portd.6 = 1 ' PD6 setzen
Else 'sonst
Portd.6 = 0 'PD6 RÜCKsetzen
End If



'PWM für Kanal 2 auf PB2 + PB3:
'______________________________


Loop

'-------------------------------------------------------------------------------

End

'================================================= ===============================
'Pinbelegung µC
'================================================= ==============================
' Atmel90S2313
'PD0 = Frei +---U---+
'PD1 = ResetTaster Reset +1 20+ Vcc+5V
'PD2 = Kanal 4 FREI ->PD0 +2 19+ PB7 Zusatzfunktion 3 tastend
'PD3 = Kanal 3 FREI ->PD1 +3 18+ PB6 Hupe / tastend
'PD4 = Kanal 2 x x Xtal 2 +4 17+ PB5 Zusatzfunktion 2 rastend
'PD5 = Kanal 1 x x Xtal 1 +5 16+ PB4 Zusatzfunktion 1 rastend
'PD6 = Licht vorne Kanal 4->PD2 +6 15+ PB3 Licht Boden 2 / rastend
'PB0 = Licht hinten 1 Kanal 3->PD3 +7 14+ PB2 Licht Boden 1 / rastend
'PB1 = Licht hinten 2 Kanal 2->PD4 +8 13+ PB1 Licht hinten 2 / rastend
'PB2 = Licht Boden 1 Kanal 1->PD5 +9 12+ PB0 Licht hinten 1 / rastend
'PB3 = Licht Boden 2 GND +10 11+ PD6 Licht vorne
'PB4 = Zusatzfunktion 1 +-------+
'PB5 = Zusatzfunktion 2
'PB6 = Hupe
'PB7 = Zusatzfunktion 3

'Naja, die Pinbelegung müsst ihr euch
'etwas hinschieben! Alle + Zeichen untereinander ;-)

'Tobias

TobiasBlome
18.09.2006, 19:35
Kann mir jemand sagen wie ich Software PWM auf Pin PB2 und PB3 programmiere?

Mein RC-Car hat blaue und rote Unterbodenbeleuchtung:
- rot soll voll an sein.
- dann wird blau hochgedimmt
- wenn blau voll an ist soll rot langsam runter gedimmt werden
- dann wird rot hochgedimmt
- wenn rot voll an ist soll blau langsam runter gedimmt werden

und dann wieder von vorne ;-)
müsste man mal als bild hochladen...geht das hier?

TobiasBlome
18.09.2006, 20:02
ich hoffe man kann einigermaßen erkennen, dass die Farbe von Rot über violett nach Blau wechseln soll und dann wieder zurück(die oberen striche sollen hi und die unteren low signal bedeuten)

ROT_R ._
ROTR\ /

BLAU_ _
BLA/B B \