PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Erste Programme/Schritte in Bascom



Roboter n00b
03.04.2005, 21:21
Hi@all
Ich hab mir nun, nachdem ich meinen ersten Bot noch mit CC gebaut habe, einen AVR Mega32 (RN-Control) gekauft. Ich will nun Bascom lernen, und bin ehrlich gesagt gerade etwas überwältigt :0. Nunja, also bei der CC Entwicklungssoftware schien mir alles etwas logischer und einfacher. Ist das in der Tat so, oder bilde ich mir das bloss ein? Ich hab jetzt gerade mal das Prggi von Frank für Motorprüfung und Batterieprüfung angeschaut, es Funktioniert zwar, aber ich hab keine ahnung wies funktioiert. -.-
Also beim CC hat jedes Proggi mit "define x port[y]" angefangen. Wie ist das jetzt bei Bascom? Der Befehl define gibts irgendwie nicht mehr, durch was wurde er ersetzt? Naja, ich hätte natürlich noch viele Fragen, aber ich denke mal, ich werde es jetzt mal gleich versuchen wie ich das auch beim CC gemacht habe, mit der programmierung eines Lauflichts. Könnt ihr mir erklären, wie das geht, damit ich die befehle auch nachvollziehen kann? Wäre echt super

vielen Dank und gruss
Serge

Roboter n00b
04.04.2005, 14:42
Hi nochma^^
Ich hab jetzt einen anderen Thread gefunden, in dem das thema schon behandelt wurde. Sorry oO

gruss Serge

//Edit
Ok, ich hab jetzt mal ein programm mit tastern und Lauflichtern geschrieben, nach der anleintung von RN-Control Test von Frank. nun, eigentlich hab ich glaub alles richtig gesagt, nur beim Compillieren, motzt er:

Error:124 Line:0 ; Loop expected, in File: -.-

nun, er braucht also noch ein Loop aber wo?

hier noch mein code:

Declare Sub Lauflicht1()
Declare Sub Lauflicht2()
Declare Sub Lauflicht3()
Declare Sub Lauflicht4()
Declare Function Tastenabfrage() As Byte
Dim Taste As Byte

$regfile = "m32def.dat"

$crystal = 16000000
$baud = 9600

Config Adc = Single , Prescaler = Auto

Config Pina.7 = Input 'Für Tastenabfrage
Porta.7 = 1

Taste = Tastenabfrage()
If Taste <> 0 Then

Select Case Taste
Case 1
Call Lauflicht1

Case 2
Call Lauflicht2

Case 3
Call Lauflicht3

Case 3
Call Lauflicht4



End Select


End If



End

Function Tastenabfrage() As Byte
Local Ws As Word

Tastenabfrage = 0
Start Adc
Ws = Getadc(7)
If Ws < 1010 Then
Select Case Ws
Case 410 To 450
Tastenabfrage = 1

Case 340 To 380
Tastenabfrage = 2

Case 265 To 305
Tastenabfrage = 3

Case 180 To 220
Tastenabfrage = 4


End Select

End If

End Function

Sub Lauflicht1()

Config Portc = Output
Do
Porta.0 = 1
Wait 1
Porta.0 = 0
Wait 1
Porta.0 = 1
Wait 1
Porta.0 = 0
Wait 1

End Sub


Sub Lauflicht2()

Config Portc = Output
Do
Portc.0 = 1
Wait 1
Portc.1 = 1
Wait 1
Portc.2 = 1
Wait 1
Portc.3 = 1
Portc.0 = 1
Wait 1
Portc.1 = 1
Wait 1
Portc.2 = 1
Wait 1
Portc.3 = 1

End Sub

Sub Lauflicht3()

Config Portc = Output
Portc.0 = 1
Wait 1
Portc.0 = 0
Wait 1
Portc.1 = 1
Wait 1
Portc.1 = 0
Wait 1
Portc.2 = 1
Wait 1
Portc.2 = 0
Wait 1
Portc.3 = 1
Wait 1
Portc.3 = 0

End Sub

Sub Lauflicht4()

Config Portc = Output
Portc.0 = 1
Wait 1
Portc.0 = 0
Portc.1 = 1
Wait 1
Portc.1 = 0
Portc.2 = 1
Wait 1
Portc.2 = 0
Portc.3 = 1
Wait 1
Portc.3 = 0
Portc.4 = 1
Wait 1
Portc.4 = 0

End Sub


noch ne kurze frage: wird das Programm bei einem Compilierfehler nicht übertragen?

mfg Serge

harryup
04.04.2005, 17:44
hi,
du hast in deiner sub 'lauflicht1' und 'lauflicht2' jeweils ein "do" ohne dazugehöriges "loop" (müsste dann vor 'end sub' stehen).
grüssens, harry

Roboter n00b
04.04.2005, 18:51
Hi Harry

Danke für den Hinweis, es funktioniert nun. Nun ist das eine Problem gelöst, folgt das nächste... -.-
Und zwar hab ich probleme bei der übertragung ds Programms. Ich habe die optionen so eingestellt wie hier: https://www.roboternetz.de/wiki/pmwiki.php?n=Main.Avrbascom
Als Chip hab ich "M32" ausgewählt. Nun Compilliere ich also. Nun drücke ich oben in der Leiste auf dieses Grüne ding, um in den Programmiermodus zu gelangen.
Doch nun kommt folgende Fehlermeldung:
http://mitglied.lycos.de/sergewaechter/fehler.jpg

ich drück ok, dann kommt folgendes
http://mitglied.lycos.de/sergewaechter/fehler2.jpg
kann ich mir nicht erklären, da ich ja dei "Chip" "m32" eingestellt habe

ich drück nochmal ok, dann komm ich hierhin:
http://mitglied.lycos.de/sergewaechter/fehler3.jpg
Übertragen lässt sich das Programm aber nicht

Was auch komisch ist, dass jedes mal, wenn ich das Prog neu starte, bei der Option "Programmer" automatisch auf "Serial" umgestellt ist, obwohl ich "Parallel" (Druckerport) brauche.

Also ISP hab ich richtig angeschlossen, alle lämpchen sind aus, und Netzgerät ist auch drann.
Wäre für jeden Hilfeversuch dankbar O:)

gruss Serge

Alter Knacker
04.04.2005, 19:09
rechts oben steht bei chip aber nicht der 32er ;-)
mfg knacki

/edit:kannst ja auch avr-auto einstellen, genügt auch....

uwegw
04.04.2005, 19:37
unter options-> chip kannst du nochmal einstellen welchen avr du benutzt. eigentlich sollte der $regfile behehl die einstellungen dort außer kraft setzten aber sicher ist sicher...

Roboter n00b
04.04.2005, 19:42
Naja, rechts oben stell ich normalerweise auch au m32 um, geht trotzdem nicht. Und in den Options hab ich auch schon (wie oben geschrieben) auf "m32" umgestellt :(

Roboter n00b
04.04.2005, 20:27
Ah, ich hab das Problem nun entdeckt. Ich hab das teil an ein 5m langes Druckerverlängerungskabel angeschlossen, war wol zu lang^^

So, ich hab nun das Programm übertragen, funzt aber nicht richtig. Weiss nicht wo der fehler ist, ich hab nach der Vorlage von Frank gearbeitet. Alsoh RNControl reagiert nicht auf die Taster

Hier mal der Code, ich hoffe jemand kann das kurz durchgehen^^

Declare Sub Lauflicht1()
Declare Sub Lauflicht2()
Declare Sub Lauflicht3()
Declare Sub Lauflicht4()
Declare Function Tastenabfrage() As Byte
Dim Taste As Byte
Dim Ton As Integer
$regfile = "m32def.dat"

$crystal = 16000000
$baud = 9600


Sound Portd.7 , 400 , 450 'BEEP
Sound Portd.7 , 400 , 250 'BEEP
Sound Portd.7 , 400 , 450 'BEEP
Config Adc = Single , Prescaler = Auto

Config Pina.7 = Input 'Für Tastenabfrage
Porta.7 = 1

Taste = Tastenabfrage()
If Taste <> 0 Then

Select Case Taste
Case 1
Call Lauflicht1

Case 2
Call Lauflicht2

Case 3
Call Lauflicht3

Case 3
Call Lauflicht4



End Select


End If



End

Function Tastenabfrage() As Byte
Local Ws As Word

Tastenabfrage = 0
Start Adc
Ws = Getadc(7)
If Ws < 1010 Then
Select Case Ws
Case 410 To 450
Tastenabfrage = 1

Case 340 To 380
Tastenabfrage = 2

Case 265 To 305
Tastenabfrage = 3

Case 180 To 220
Tastenabfrage = 4


End Select

End If

End Function

Sub Lauflicht1()

Config Portc = Output
Do
Porta.0 = 1
Wait 1
Porta.0 = 0
Wait 1
Porta.0 = 1
Wait 1
Porta.0 = 0
Wait 1
Loop
End Sub


Sub Lauflicht2()

Config Portc = Output
Do
Portc.0 = 1
Wait 1
Portc.1 = 1
Wait 1
Portc.2 = 1
Wait 1
Portc.3 = 1
Portc.0 = 1
Wait 1
Portc.1 = 1
Wait 1
Portc.2 = 1
Wait 1
Portc.3 = 1
Loop
End Sub

Sub Lauflicht3()
Do
Config Portc = Output
Portc.0 = 1
Wait 1
Portc.0 = 0
Wait 1
Portc.1 = 1
Wait 1
Portc.1 = 0
Wait 1
Portc.2 = 1
Wait 1
Portc.2 = 0
Wait 1
Portc.3 = 1
Wait 1
Portc.3 = 0
Loop
End Sub

Sub Lauflicht4()
Do
Config Portc = Output
Portc.0 = 1
Wait 1
Portc.0 = 0
Portc.1 = 1
Wait 1
Portc.1 = 0
Portc.2 = 1
Wait 1
Portc.2 = 0
Portc.3 = 1
Wait 1
Portc.3 = 0
Portc.4 = 1
Wait 1
Portc.4 = 0
Loop
End Sub

gruss Serge

DIYLAB
04.04.2005, 21:26
Ah, ich hab das Problem nun entdeckt. Ich hab das teil an ein 5m langes Druckerverlängerungskabel angeschlossen, war wol zu lang^^gruss Serge

Moin,

sorry für das OT, aber wie kommt man eigentlich auf solch eine Idee, einen Progger an einem 5 Meter Kabel betreiben zu wollen?
Das soll auf keinen Fall anmaßend sein, ich analysiere nur, weil ich selbst ein ganz kleines bisschen Hardware anbiete und auf alles gefasst sein möchte und vieles im Vorfeld ausschließen möchte - darum die Frage.

Viele Grüße,
Bruno

Roboter n00b
04.04.2005, 21:46
Hi
Nun, ich hab mir nicht gedacht: Komm jetzt häng doch den RNC mal an ein 5 meter kabel, sondern es wäre einfach praktisch gewesen.
Ich hatte früher mal 2 PCs an einem Drucker, deshalb hat ich noch nen Switch. Das sah so aus:
PC1----Verlängerungskabel----Kabel----Swich----Kabel----PC2

da PC2 nun nicht mehr da ist, hatte ich einen Port am swich frei, und ich da es Praktischer ist, einfach zu switchen, statt immer umzustecken, hab ich ihn da rein gemacht.

gruss

Roboter n00b
05.04.2005, 19:45
naja, ich will ha nicht stürmen, aber kann mir niemand den/die Fehler im obigen programm kurz nennen? Würde mir echt was bringen^^

gruss und Danke

Serge