Forum: Mikrocontroller und Digitale Elektronik bascom syntax?


von Steven Z. (steven84)


Lesenswert?

Hallo liebe Mikrocontroller Gemeinde,

ich habe wieder mal ein Problem. Diesmal in Bascom, hier mal der Code 
dazu:


Config Adc = Free , Prescaler = Auto , Reference = Internal


Start Adc

Dim Channel As Byte
Dim Heatdi As word
Config Pind.5 = Output
Config Pind.7 = Output
Const Tempmax = 160

Pin5 Alias Pind.5
Pin7 Alias Pind.7



Do
Channel = 0
  Heatdi = Getadc(channel)

  If Heatdi < Tempmax Then   ' Vergl. von Adc-Wert mit Constante
  Reset Pin5
    Else
    Set Pin5
  End If

  If Pin5 = 1 Then
  Set Pin7
  Else
  Reset Pin7
  End If
Loop

der ADC Arbeitet einwandfrei hab das Ergebniss mal mit dem Print Befehl 
ausgeben lassen. Das Prog schaltet mir die Ausgänge nicht ein. Es 
passiert rein gar nix. Hab auch mal den Status der Ports über die RS232 
ausgeben lassen da kommt auch nur ne 0 raus. ich hab echt keine Idee wo 
ich da anfangen soll mit suchen.

Grüße

von Otto (Gast)


Lesenswert?

Vorweg: ich habe keine Ahnung von Bascom

Fang mal damit an zu schreiben, welche Werte "Heatdi" annimmt.....
Vermutlich ist Pin5 aber nur das Eingangsregister....

von Joachim R. (bastelbaer)


Lesenswert?

PinD ist der Eingang, benutz PortD, das ist der Ausgang.


Also:
Config Portd.5 = Output
Config Portd.7 = Output

Pin5 Alias Portd.5
Pin7 Alias Portd.7

usw....

von Gast (Gast)


Lesenswert?

1.
Niemals "Config PinD.5 = Output" schreiben (siehe unten)
Immer "Config Portd.5 = Output" schreiben
oder "DDRD = 255" alle Pin's von "D" sind Ausgänge
2.
Und es liegd daran das du die "PIN" register als alias nimmst. Du 
solltest aber "PORT" nehmen.

erklärung:

PinD.5 = Statusabfrage ob Pin High oder Low (If PinD.5 = 0 Then ...).
PortD.5 = Ausgang auf High (PortD.5 = 1) oder Low (PortD.5 = 0) setzen.
DDRD.5 = Richtungsregister ob Pin als Eingang oder Ausgang geschalten

Im algemeinen zur Bascom Programmierung:

Ich würde niemals "Port's" einen alias Namen mit "Pin Namen" geben da 
das nur zu Verwechslungen führt.

von Steven Z. (steven84)


Lesenswert?

Abend, so ich hab das jetzt mal in Portd.* geändert und siehe da es 
geht.
Frag mich nur warum die dann auch im Syntax "CONFIG PINx.y = state " 
schreiben??? Na gut jedenfalls konnte ich heute das schon lange 
rumliegende Projekt zu Ende bringen.

Vielen Dank!

Grüße

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.