Forum: Mikrocontroller und Digitale Elektronik Warum funktioniert das Programm nicht?


von Michael K. (Gast)


Lesenswert?

Hallo Leute,

kann mir einer helfen?
Ich will mit einem Taster (PIND.2) eine LED (PORTD.5) ein- und 
ausschalten.
Ich habe in Visual Basic ein Programm geschrieben welche mir die LED 
ein- und ausschaltet. Aber warum kann ich mit meinem Taster diese LED 
nicht ein- bzw. ausschalten?

Und vielleicht kann mir ja einer mit VB helfen wie kann ich den 
gesendetet Printbefehl des AVRs in VB in ein Label schreiben? (Auch wenn 
ich per Taster drücke!?)

Vielen Lieben dank jetzt schon mal :)

Micha
1
$regfile = "m8def.dat"
2
$crystal = 1000000
3
$baud = 2400
4
5
Config Portd.5 = Output
6
Config Pind.2 = Input
7
Config Pind.3 = Input
8
Config Portd.6 = Output
9
10
Dim Eingang As String * 255
11
12
13
Do
14
15
   Select Case Pind.2
16
      Case 0
17
         Portd.5 = 0
18
         Print "0"
19
      Case 1
20
         Portd.5 = 1
21
         Print "1"
22
   End Select
23
24
25
   Eingang = ""
26
   Input Eingang
27
28
   Select Case Eingang
29
      Case "0"
30
         Portd.5 = 0
31
         Print "0"
32
      Case "1"
33
         Portd.5 = 1
34
         Print "1"
35
   End Select
36
37
Loop
38
39
End

von Spess53 (Gast)


Lesenswert?

Hi

>Config Portd.5 = Output
>Config Pind.2 = Input
>Config Pind.3 = Input
>Config Portd.6 = Output

Ist dieses Durcheinander PIN/PORT beabsichtigt?

MfG Spess

von Michael K. (Gast)


Lesenswert?

Hallo,

nein ist es nicht das hat sich so ergeben beim Testen und probieren weil 
diese Funktion nicht geht.

von Spess53 (Gast)


Lesenswert?

Hi

>nein ist es nicht das hat sich so ergeben beim Testen und probieren weil
>diese Funktion nicht geht.

Dann wird es Zeit, das du erst mal ein paar Tage das Programmieren sein 
läßt und das Datenblatt intensiv liest. Dir fehlen die Grundlagen.

MfG Spess

von Martin K. (maart)


Lesenswert?

Eventuell passt ja das Stichwort "prellender Taster"

von Martin K. (maart)


Lesenswert?

So wie ich das jetzt in meinem Zustand überblicke:
Wenn du den Taster gedrückt hälst, sollte die LED an bleiben, lässt du 
den Taster wieder los, erlischt sie.
Funktioniert das soweit?

von Michael K. (Gast)


Lesenswert?

Martin Kreiner schrieb:
> So wie ich das jetzt in meinem Zustand überblicke:
> Wenn du den Taster gedrückt hälst, sollte die LED an bleiben, lässt du
> den Taster wieder los, erlischt sie.
> Funktioniert das soweit?

So ist es geplant aber funktioniert so leider nicht. Nehme ich diese 
Zeile raus funktioniert es

> Eingang = ""
>    Input Eingang
>
>    Select Case Eingang
>       Case "0"
>          Portd.5 = 0
>          Print "0"
>       Case "1"
>          Portd.5 = 1
>          Print "1"
>    End Select

von Martin K. (maart)


Lesenswert?

Bitte entschuldige, ich habe schon ein paar gepustet.

> Nehme ich diese Zeile raus funktioniert es

Warum hast du sie überhaupt drin? Die Pin-Abfrage hast du doch schon in 
der vorrausgehen case-Abfrage gemacht.

von pff (Gast)


Lesenswert?

deinen avr scheinst du in bascom zu programmieren.
schau dir mal den befehl "debounce" an
 man muss auch mal in die befehlsliste schauen... ;-)

von Martin K. (maart)


Lesenswert?

pff schrieb:
> schau dir mal den befehl "debounce" an

Das kommt erst als zweiter Schritt ;-)

von pff (Gast)


Lesenswert?

Martin Kreiner schrieb:
> Das kommt erst als zweiter Schritt ;-)

jetzt seh ichs auch,
der letzte beitrag den ich las war von 23:30... :-)
aber dann mache einen print von der var eingang...

von Martin K. (maart)


Lesenswert?

Auf die schnelle Google-Suche habe ich jetzt nur herausfinden können, 
das BASCOM bei select case nur nummerische Werte zulässt.
Bei der zweiten Abfrage handelt es sich aber um einen String. Hm, hätte 
der Compiler doch monieren müssen, oder nicht?

von Micha (Gast)


Lesenswert?

Martin Kreiner schrieb:
> Auf die schnelle Google-Suche habe ich jetzt nur herausfinden können,
> das BASCOM bei [i]select case[/i] nur nummerische Werte zulässt.
> Bei der zweiten Abfrage handelt es sich aber um einen String. Hm, hätte
> der Compiler doch monieren müssen, oder nicht?

Das funktioniert aber super :)

von Martin K. (maart)


Lesenswert?

Micha schrieb:
> Das funktioniert aber super :)

Na gut, ein einzelnes Zeichen wird wohl auch als (Ascii?)Nummer 
angesehen. Ist schon ok.

von Martin K. (maart)


Lesenswert?

Micha schrieb:
> Das funktioniert aber super :)

Ok, neue Theorie: Beide select case Abfragen funktionieren für sich 
alleine genommen.
Was passiert aber, wenn man per print etwas ausgeben will, aber die 
vorherige Übertragung noch nicht abgeschlossen ist? Pufferüberlauf, 
Fehler oder läuft?

von nummer 5 (Gast)


Lesenswert?

wartet INPUT auf bestimmte eingaben und blockiert, bis sie diese 
bekommt?

von Micha (Gast)


Lesenswert?

nummer 5 schrieb:
> wartet INPUT auf bestimmte eingaben und blockiert, bis sie diese
> bekommt?

kann es wirklich an dem input Eingang liegen? muss dieser irgendwie 
geschlossen werden?

von Peter R. (peterfido)


Lesenswert?

Ungetestet würde ich es so probieren:
1
$regfile = "m8def.dat"
2
$crystal = 1000000
3
$baud = 2400
4
5
6
$hwstack = 20
7
$swstack = 20
8
$framesize = 10
9
10
Ddrd = &B00100000                                           'D.5 als Ausgang
11
Portd = &B00000100                                          'Pullups
12
13
Dim Eingang As Byte
14
15
16
Do
17
18
   If Ischarwaiting() = 1 Then
19
      Eingang = Inkey()
20
      Select Case Eingang
21
         Case 48                                               '0
22
            Reset Portd.5
23
         Case 49                                            '1
24
            Set Portd.5
25
      End Select
26
      Print Chr(eingang)
27
   End If
28
29
   If Pind.2 = 0 Then                                       'Taster nach GND mit Pullups
30
      Toggle Portd.5
31
      Print Portd.5
32
      Do
33
         Waitms 20
34
      Loop Until Pind.2 = 1                                 'Warten bis Taster wieder losgelassen wurde
35
   End If
36
37
Loop
38
39
End

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.