Forum: Mikrocontroller und Digitale Elektronik 1023 PWM sind 0 v?


von Pascal B. (mini12345)


Lesenswert?

Ich hab das Problem das bei mir jetzt 1023 PWM jetzt 0 V sind.

Hier der Code:
1
$regfile = "m8def.dat"
2
$crystal = 1000000
3
$baud = 9600
4
5
Config Portc.5 = Output
6
Config Portc.4 = Output
7
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , _
8
   Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
9
Config Lcd = 16 * 1
10
Cursor Off
11
12
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Prescale = 1
13
14
15
Config Adc = Single , Prescaler = Auto , Reference = Avcc
16
Start Adc
17
Dim Wert As Integer
18
19
Do
20
21
22
Wert = Getadc(0)
23
Compare1a = Wert
24
25
 Locate 1 , 1
26
 Lcd ; Wert
27
Waitms 10
28
Cls
29
30
If Wert < 600 Then
31
32
Portc.5 = 1
33
Elseif Wert > 700 Then
34
35
Portc.4 = 1
36
37
Else
38
Portc.5 = 0
39
Portc.4 = 0
40
41
End If
42
Loop
43
End
wo liegt der Fehler? ich such jetzt schon 3 Stunden nach dem Problem und 
finde nichts ...
hab nur ich den Fehler?

Normal sollten ja bei 1023 5 v anliegen ...
Danke

von Karl H. (kbuchegg)


Lesenswert?

Pascal B. schrieb:

> Normal sollten ja bei 1023 5 v anliegen ...

Wieso sollte das normal sein.

Solange du
1
    ....  Compare A Pwm = Clear Down ...
konfiguriert hast, würde ich genau das beobachtete Verhalten erwarten.

von J. H. (joho62)


Lesenswert?

Also bei mir gehts.
Kann es sein, daß Du was falsch verstehst?
Weil, Du schreibst "1023 PWM sind 0 Volt".
Es geht ja soherum: Du legst an ADC0(PINC.0) einen Wert vor, z.B.
mit einem Poti. Diesen Wert, übersetzt in einen Digitalwert,
zeigt Dein LCD an. Dito die Ausgänge, wenn Du da LED mit Vorwiderstand
dranmachst, leuchtet die an C.5 von 0V ("0") bis ca 2,4V ("600") und
die an C.4 ab ca. 2,6V ("700").
Joachim

von J. T. (chaoskind)


Lesenswert?

Es gibt auch die Möglichkeit, die PWM invertiert ausgeben zu lassen. 
Schau dir mal im Datenblatt deines µC die Registerbeschreibung der Timer 
an, da solltest du alles dazu finden.

Wobei ich dir in deiner Arduino-Sprache da auch nicht sagen kann, wie du 
das entsprechende Register auf den entsprechenden Wert bekommst :D

von J. H. (joho62)


Lesenswert?

Nachtrag:
Deine PWM kommt zwar raus, laut Datenblatt am Pin B.1 (OC1A),
allerdings, wie Karl-Heinz schon schrieb, verkehrtrum. Und wird von
Dir garnicht ausgewertet (nichts an B.1 angeschlossen).
Joachim

von Karl H. (kbuchegg)


Lesenswert?

j. t. schrieb:

> Wobei ich dir in deiner Arduino-Sprache

es ist BASCOM, aber egal

> da auch nicht sagen kann, wie du
> das entsprechende Register auf den entsprechenden Wert bekommst :D

Braucht er auch nicht.
1
   .... cCompare A Pwm = Clear Down ....
ist genau die von dir angesprochene invertierte PWM. Eine normale PWM 
wäre Clear Up.
Aber eigentlich wollte ich ihn dazu 'nötigen', selbst mal in der BASCOM 
Hilfe zu recherchieren, welche Möglichkeiten er da hat. Denn das ist 
eines der Hauptprobleme bei vielen BASCOM Programmierern (die hier im 
Forum aufschlagen): der Unwille, mal in die Doku zu schauen.

von Pascal B. (mini12345)


Lesenswert?

Karl Heinz schrieb:
> j. t. schrieb:
>
>> Wobei ich dir in deiner Arduino-Sprache
>
> es ist BASCOM, aber egal
>
>> da auch nicht sagen kann, wie du
>> das entsprechende Register auf den entsprechenden Wert bekommst :D
>
> Braucht er auch nicht.
>
1
>    .... cCompare A Pwm = Clear Down ....
2
>
> ist genau die von dir angesprochene invertierte PWM. Eine normale PWM
> wäre Clear Up.
> Aber eigentlich wollte ich ihn dazu 'nötigen', selbst mal in der BASCOM
> Hilfe zu recherchieren, welche Möglichkeiten er da hat. Denn das ist das
> Hauptproblem bei vielen BASCOM Programmierern: der Unwille, mal in die
> Doku zu schauen.



Genau das war die Lösung, Danke an alle.

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
Noch kein Account? Hier anmelden.