Forum: Mikrocontroller und Digitale Elektronik bitte checken. Bascom


von Alex (Gast)


Lesenswert?

Hallo!
was ist an diesen programm verkehrt?
1
$regfile = "m8def.dat"
2
$crystal = 1000000
3
4
Config Clock = Soft
5
Config Portb.0 = Output                                     'LED
6
Config Portb.1 = Output                                     'Ausgang
7
Time$ = "00:00:00"
8
Dim Led As Byte
9
Dim Luefter As Byte
10
11
Do
12
If Time = "00:01:00" Then
13
Gosub Luefter
14
Else
15
Gosub Led
16
End If
17
Loop
18
19
20
21
Led:
22
23
Set Portb.0
24
Waitms 50
25
Reset Portb.0
26
Waitms 50
27
28
Return
29
30
Luefter:
31
32
Set Portb.1
33
Waitms 500
34
Reset Portb.1
35
36
Return
37
End
compiler sagt in dieser zeile "If Time = "00:01:00" Then " ist ein 
Invalid Datatyp.

von Gast (Gast)


Lesenswert?

Time ist eine andere Variable als Time$

von Alex (Gast)


Lesenswert?

>Time ist eine andere Variable als Time$
jetzt klappt es, danke! :)))

von I_ H. (i_h)


Lesenswert?

Wenn ich mich an meine Basic Zeit (lang ist's her...) richtig 
zurückerinnere und das nicht mit PHP durcheinaderwerfe muss es 
$Time="00:00:00" heißen, und nicht Time$="00:00:00".
Probier es abgesehen davon mal mit einem dim time as string.

von Alex (Gast)


Lesenswert?

aber die Zeit auf dem lcd läuft nicht. warum?
Config Lcd = 16 * 4
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , 
Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4

Initlcd
Cls

Config Clock = Soft
Config Portb.0 = Output                                     'LED
Config Portb.1 = Output                                     'Ausgang
Time$ = "00:00:00"

Dim Led As Byte
Dim Luefter As Byte
Locate 1 , 5
Lcd Time$
Do
If Time$ = "00:01:00" Then
Gosub Luefter
Else
Gosub Led
End If
Loop
Led:
Set Portb.0
Wait 1
Reset Portb.0
Wait 1
Return
Luefter:
Set Portb.1
Wait 30
Reset Portb.1
Return
End

von Alex (Gast)


Lesenswert?

>und nicht Time$="00:00:00"
habe ich aus bascom -hilfe so entnommen.

>dim time as string
jetzt sagt der Compiler, dass die variable "Time$" schon definiert ist.

von Niels H. (monarch35)


Lesenswert?

I_ H. wrote:

> zurückerinnere und das nicht mit PHP durcheinaderwerfe muss es
> $Time="00:00:00" heißen, und nicht Time$="00:00:00".

Doch, du hast gerade PHP und Basic durcheinander geworfen :)

von Alex (Gast)


Lesenswert?

>Doch, du hast gerade PHP und Basic durcheinander geworfen :)
und was könnte bei mir die Abhilfe sein?
ich finde es ist logisch, was ich da geschrieben habe.

von Niels H. (monarch35)


Lesenswert?

Alex wrote:

> aber die Zeit auf dem lcd läuft nicht. warum?

Die Zeile "Lcd Time$" aktualisiert die Zeit auf dem Display. Sie müsste 
also zyklisch aufgerufen werden, damit sie die laufen Uhrzeit anzeigen 
kann. Tut sie aber nicht. Sie wird nur einmal im ganzen Programm 
angesprungen...nämlich beim Start... und das hätte dir ganz locker 
flockig selber auffallen können.

von Avr N. (avrnix) Benutzerseite


Lesenswert?

muss man nicht noch einen Uhrenquarz anschliessen?

von Niels H. (monarch35)


Lesenswert?

Avr Nix wrote:
> muss man nicht noch einen Uhrenquarz anschliessen?

Nicht zwangsläufig. Die Uhr kann auch vom internen RC-resonator laufen.
Jedenfalls fehlt die "crystal"- Angabe, damit der Compiler weiss, mit 
welchen Systemtakt die Kiste läuft und diesen auf 1 Herz runterteilen 
kann.

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Jo ist richtig ! Im Listing 1 stehts ja drin , aber nicht im zweiten.

von Karl H. (kbuchegg)


Lesenswert?

Niels Hüsken wrote:

> angesprungen...nämlich beim Start... und das hätte dir ganz locker
> flockig selber auffallen können.

Hätte es. Wenn er sich endlich mal angewöhnen würde, den
Code einzurücken (oder kann BASCOM das nicht?).

@Alex
Vergleich doch die Schreibweise mal damit:
1
Config Lcd = 16 * 4
2
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 ,
3
Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
4
5
Initlcd
6
Cls
7
8
Config Clock = Soft
9
Config Portb.0 = Output                                     'LED
10
Config Portb.1 = Output                                     'Ausgang
11
Time$ = "00:00:00"
12
13
Dim Led As Byte
14
Dim Luefter As Byte
15
16
Locate 1 , 5
17
Lcd Time$
18
19
Do
20
  If Time$ = "00:01:00" Then
21
    Gosub Luefter
22
  Else
23
    Gosub Led
24
  End If
25
Loop
26
27
Led:
28
  Set Portb.0
29
  Wait 1
30
  Reset Portb.0
31
  Wait 1
32
  Return
33
34
Luefter:
35
  Set Portb.1
36
  Wait 30
37
  Reset Portb.1
38
  Return
39
40
End

Da sieht man schon besser, dass die Ausgabe nicht in der
Schleife enthalten ist.

von Alex (Gast)


Lesenswert?

habe meinen Parallelenport kaputtgemacht! :(

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Wie das ?

von Alex (Gast)


Lesenswert?

na ja, die Platine lag auf dem Tisch, und da war noch Stück lötzinn 
drunter..
kurzschluss.
beim ISP 74LS244 aufgeglüht und Parallel port kaputt :(

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Shit happens. Du hast mein aufrichtiges Beileid.

Hoffentlich ist nicht mehr futsch. Ein wenig Trost: Eine LPT-Karte 
kostet nicht die Welt.

Vielleicht ist das auch ein Anlass für dich, dir einen extrem 
preiswerten Bastelcomputer zuzulegen. Für ein gelegentliches 
ISP-Programmieren mit AVRDUDE, muss der gar nicht viel Power haben und 
als no-cost OS kannst du Linux nehmen.

von Alex (Gast)


Lesenswert?

>Eine LPT-Karte kostet nicht die Welt.
gibt es auch welche, die man an USB abschliessen kann?

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Mit denen kannst du fürs ISP Programmieren wenig bis nichts anfangen. 
DIe Umsetzung USB-LPT ist für das Timing beim Bitgeklapper in der Regel 
tödlich. Solche USB-LPT Wandler sind nur für den Anschluss von Drucker 
etc. gedacht.

von Peter D. (peda)


Lesenswert?

Alex wrote:
> na ja, die Platine lag auf dem Tisch, und da war noch Stück lötzinn
> drunter..
> kurzschluss.
> beim ISP 74LS244 aufgeglüht und Parallel port kaputt :(


Entweder man nimmt ein Labornetzteil mit einstellbarer Strombegrenzung 
oder ne Wandwarze mit 100mA-Regler (78L05) dahinter.
Dann glüht nichts mehr auf.

Ich stecke auch gerne mal IC falschrum oder versetzt ein, noch nie ist 
was kaputt gegangen. Ein gutes Labornetzteil spart richtig viel Geld.

Es soll ja Leute geben, die nehmen zum Experimetieren dicke 50A 
PC-Netzteile oder Autobatterien, daß es nur so qualmt. Muß jeder selber 
wissen, ob er das Geld so zum Fenster rausschmeißt.


Peter

von Alex (Gast)


Lesenswert?

>USB-LPT ist für das Timing beim Bitgeklapper in der Regel tödlich.
und PCMCIA auf LPT ? Gibt es sowas?

von Alex (Gast)


Lesenswert?

ich sehe schon.
gibt es.
kann man die denn dafür verwenden?

von Niels H. (monarch35)


Lesenswert?

Alex wrote:
> ich sehe schon.
> gibt es.
> kann man die denn dafür verwenden?

Ich hab zwar auch sowas noch nie gesehn, könnte aber sein. Jedenfall 
dürfte das eher funktionieren als ein USB-LPT-Anschluss.

Aber vieleicht solltest du dir mal überlegen, einen vernünftigen USB ISP 
zuzulegen, z.B. AVR Dragon.

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.