Forum: Mikrocontroller und Digitale Elektronik Frequenz-Zähler mit Picaxe funktioniert nicht.


von Achim K. (achim67)


Lesenswert?

Hallo zusammen,

für den Einstieg in die µC-Welt habe ich angefangen, mich mit Picaxe zu 
beschäftigen und ich habe es tatsächlich auch schon geschafft, LEDs 
blinken zu lassen :-D

Dann habe ich diesen Temp-Reader erfolgreich nachgebaut:
http://picaxe.zierath-software.de/beispiele/DS18B20.html
Der Code ist ursprünglich für einen 20M, daher mußte ich ihn
erst für meinen 08M2+ anpassen, was aber nicht sehr schwer war.

Also Zeit für die nächste Schwierigkeitsstufe:
http://picaxe.zierath-software.de/beispiele/Freqmessung.html
Damit hab ich nun so meine Probleme.
Auch hier ist es nötig den Code anzupassen, da dieser für einen
14M geschrieben ist, ich jedoch einen 14M2 verwenden will, der
einen etwas geänderten Befehlssatz enthält.
Die Ausgabe soll auf auf ein LCD-Display QC1602A (blau/weiß) erfolgen, 
also 16 Zeichen x 2 Zeilen, klar. Der Controller ist laut Datenblatt ein 
KS0066, meiner Recherche nach 100% kompatibel mit dem HD44780.
Letztendlich wird im Versuchsaufbau nichts Brauchbares angezeigt, 
lediglich die obere Reihe zeigt 16 weiße Klötzchen, was aber wohl kaum 
daran liegen wird, daß ich noch kein Meßsignal angelegt habe. Ich vemute 
den Fehler zunächst mal im Code, denn ich bin nicht sicher,
ob meine Anpassungen korrekt sind. Gerade die Initialisierung ist für 
mich ein bömisches Dorf, da tappe ich völlig im Dunkeln.
Ich habe zwar versucht, das Thema Initialisierung über die Seite
http://www.sprut.de/electronic/lcd/ zu lösen, dabei hat mein Hirn 
allerdings einen Strömungsabriss erlitten ;-)

Wäre schön, wenn mir jemand auf die Sprünge helfen könnte...
Herzlichen Dank :-)
Hier der von mir angepaßte Code:
1
setfreq m8
2
3
symbol Wert=b0
4
symbol LesePin=b1
5
symbol HighWert=b2
6
symbol LowWert=b3
7
symbol Zehntausend=b4
8
symbol Tausend=b5
9
symbol Hundert=b6
10
symbol Zehner=b7
11
symbol Einer=b8
12
symbol Schalter=b9
13
pause 250
14
15
'** LCD Display initialisieren  ************
16
17
let dirsB = %00111111
18
19
FOR b0=1 to 2
20
    LET PINSB=%00100011:low 5
21
    LET PINSB=%00100011:low 5
22
    pause 50
23
NEXT b0
24
25
LET PINSB=%00100000:low 5
26
LET PINSB=%00100010:low 5
27
pause 10
28
29
LET PINSB=%00100000:low 5
30
LET PINSB=%00100001:low 5
31
pause 1
32
33
LET PINSB=%00100000:low 5
34
LET PINSB=%00100100:low 5
35
pause 1
36
37
LET PINSB=%00100000:low 5
38
LET PINSB=%00101100:low 5
39
'*************************************
40
41
42
main:
43
 
44
   count LesePin,500,w5
45
   w6=w5*4
46
   pause 15  
47
   count LesePin,500,w5
48
   w5=w5*4
49
   if w6>w5 then
50
      w5=w6
51
   endif
52
     
53
   '__________________________________________________________  
54
   BINTOASCII w5, Zehntausend, Tausend, Hundert, Zehner, Einer
55
56
  
57
   '_______________________________
58
   LET PINSB=%00101000:low 5
59
   LET PINSB=%00100000:low 5
60
   Wert=Zehntausend:gosub sendtext
61
   Wert=Tausend:gosub sendtext
62
   Wert=46:gosub sendtext
63
   Wert=Hundert:gosub sendtext
64
   Wert=Zehner:gosub sendtext
65
   Wert=Einer:gosub sendtext
66
   Wert=32:gosub sendtext
67
   Wert=75
68
   LesePin=0
69
   Schalter=pinc.1
70
   if Schalter=1 then
71
      Wert=77
72
      LesePin=2
73
   endif
74
   gosub sendtext
75
   Wert=104:gosub sendtext
76
   Wert=122:gosub sendtext
77
   '_______________________________
78
  
79
  
80
goto main 
81
82
83
84
sendtext:
85
 
86
     HighWert=Wert/16
87
     LowWert=HighWert*16:LowWert=Wert-LowWert
88
    
89
     HighWert=HighWert+48
90
     let pinsB=HighWert:low 5
91
   
92
     LowWert=LowWert+48
93
     let pinsB=LowWert:low 5
94
     pause 1
95
return

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Achim K. schrieb:
> Gerade die Initialisierung ist für mich ein bömisches Dorf, da tappe ich
> völlig im Dunkeln.
Wie sieht es mit Messgeräten aus? Hast du ein Oszi?

von Achim K. (achim67)


Lesenswert?

Yepp, hab ich (Goldstar OS-9020A) :-)

von Achim K. (achim67)


Lesenswert?

Auf der folgenden Seite wird das Display prinzipiell auf gleiche Weise 
verschaltet, wie unter den oben genannten Links, dennoch gibt es in der 
Zuleitung zu RW/D0-D3 einen zusätzlichen 10k Widerstand:
http://bastronik.zierath-software.de/lcd14.html
Zwingend nötig ist der nicht, oder?

von Karl H. (kbuchegg)


Lesenswert?

Was genau ist die Bedeutung dieses ':low 5' in
1
LET PINSB=%00100011:low 5

von Karl H. (kbuchegg)


Lesenswert?

Die ganze Verdrahtung auf
http://picaxe.zierath-software.de/beispiele/Freqmessung.html
siehst seltsam aus, wenn ich mir die 4 Datenleitungen ansehe.
Aus dem Bauch raus würde ich sagen, die ist verdreht abgebildet.

von Achim K. (achim67)


Lesenswert?

@Karl Heinz
Laut Handbuch:
The low command switches an output off (low).
On microcontrollers with configurable input/output pins this command 
also
automatically configures the pin as an output

Aber Du bringst mich da auf eine Idee! Das müßte ja eigentlich auch "LOW 
B.5" heißen, da der 14M2 ja B und C Pins hat und das ja irgendwie 
unterschieden werden muss...?

Probier ich gleich mal aus :-)

von Karl H. (kbuchegg)


Lesenswert?

Von deinem µC versteh ich nicht viel.

Aber diese ganze Programmierung auf deinen verlinkten Web-Seiten sieht 
extrem brutal aus. Um Timing Sachen oder Reihenfolgen kümmern sich diese 
Brüder herzlich wenig.

Aber was will man schon erwarten, wenn jemand auf einer Web-Site 
"Standart" schreibt.

: Bearbeitet durch User
von Achim K. (achim67)


Lesenswert?

Da muss ich Dir recht geben, selbst mir als Laie ist aufgefallen, daß 
der Code für den Zähler Fehler enthält und so nicht wirklich richtig 
funktionieren kann (z.B. der 9-stellige Binärcode in der 
Initialisierungssequenz)

Leider hab ich keine brauchbaren anderen Seiten gefunden, die so 
übersichtlich einfache Picaxe-Projekte vorstellen. Zum lernen dachte 
ich, sei das ganz gut, aber da liege ich wohl falsch...

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.