PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bascom spinnt oder ich ??



molleonair
15.02.2006, 18:12
Was zur hölle ist mit diesem compiler los

einen code den ich gestern noch fehlerlos compilen könnte geht heut nicht mehr

könnts ihr mal testen

die fehlermeldungen hab ich als kommentar in den code eingefügt


Dim Zeichen As Byte
Declare Sub Lcdwrite(byval Zeichen As Byte) 'funktion zum senden an das display

'Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.1 , Rs = Porta.0


Initlcd
Call Lcdwrite(&B00101100) 'aufruf zum initialisieren
Waitms 5 'des display controllers
Call Lcdwrite(&B00001001)
Waitms 5
Call Lcdwrite(&B00101000)
Waitms 5
Call Lcdwrite(&B00000110)
Waitms 5
Call Lcdwrite(&B00001100)
Waitms 5

Config Lcd = 20 * 4a 'display als 20 zeichen mal 4 zeilen

Do
Wait 1
Cls
Upperline
Lcd "11111111111111111111"
Lowerline
Lcd "22222222222222222222"
Thirdline
Lcd "33333333333333333333"
Fourthline
Lcd "44444444444444444444"
Loop


Sub Lcdwrite(byval Zeichen As Byte)
' Höherwertiges Nibble setzen
If Zeichen.4 = 1 Then Porta.4 = 1 Else Porta.4 = 0 'error 31 invalid datatype (0)
If Zeichen.5 = 1 Then Porta.5 = 1 Else Porta.5 = 0 'error 31 invalid datatype (0)
If Zeichen.6 = 1 Then Porta.6 = 1 Else Porta.6 = 0 'error 31 invalid datatype (0)
If Zeichen.7 = 1 Then Porta.7 = 1 Else Porta.7 = 0 'error 31 invalid datatype (0)

Porta.1 = 1 'enable auf 1
Waitms 5
Porta.1 = 0 'enable auf 0
Waitms 5

' Niederwertiges Nibble setzen
If Zeichen.0 = 1 Then Porta.4 = 1 Else Porta.4 = 0
If Zeichen.1 = 1 Then Porta.5 = 1 Else Porta.5 = 0
If Zeichen.2 = 1 Then Porta.6 = 1 Else Porta.6 = 0
If Zeichen.3 = 1 Then Porta.7 = 1 Else Porta.7 = 0
' Niederwertiges Nibble übertragen
Porta.1 = 1
Waitms 5
Porta.1 = 0
Waitms 5
'error 229 line 0 end sub or end function expected
End Sub

End

PicNick
15.02.2006, 19:00
Schwer was zu sagen: select all & copy & paste und compiliert, und keine Fehler

molleonair
15.02.2006, 19:23
ich hab bascom mehrfach deinstalliert und installiert registry gelöscht
alle updates und die demo getestet

hab ständig fehlermeldungen in den einfachsten codes

und das für 100 euro na vielen dank

PicNick
15.02.2006, 20:24
Kollege ! Schlechter Handwerker schimpft auf das Werkzeug !

Wenn ICH den stiefel ohne Tricks übersetzen kann, spinnt von uns vieren
Ich, mein Bascom
Du, dein bascom
offenbar einer wirklich !

Du wirst sehen, kaum machst du es richtig, wird es auch schon gehen !

:Haue

Torsten_G
15.02.2006, 20:27
Hi,

na, wirst Du wohl aufhören, hier meinen Lieblingscompiler madig zu machen... [-X :mrgreen:

Ich habe bei Deinem Code identische Fehlermeldungen.

Auf den ersten Blick würde ich sagen, der Code passt nicht zum in den "Options" eingestellten Chip.

Ich würd´s gern gegentesten, aber Du gibst ja Deinen Prozessor nicht an.

Um solche Fehler grundsätzlich zu vermeiden, solltest Du es Dir angewöhnen, die Compiler-Direktiven in den Code zu schreiben, hier ein Beispiel für den Mega 8:

'Definition für Mega 8
$regfile "m8def.dat"

'Angabe der Taktfrequenz (4Mhz)
$crystal = 4000000

Und immer dran denken:
Die fettesten Bugs sitzen meist zwischen den eigenen Ohren... #-o


Viele Grüße

Torsten

chr-mt
15.02.2006, 20:30
Hi,
welchen Controller benutzt du denn ?
Ich hab' die gleichen Probleme, wenn ich den 2313 oder 2323 auswähle.
Beim Tiny 2313 geht es dann wieder.
Bei anderen Chips geht es ebenfalls problemlos.

Übrigens, wo gibt's denn Bascom für 100 Euro ???
Kostet doch nur 78 ?

Gruß
Christopher

molleonair
15.02.2006, 21:07
da hast du wohl recht ...

aber ich hab das problem jetzt einkreisen können es liegt wohl an dem update das ich gemacht hab
habs alte orginal (xx.12) aufm laptop mal installiert da hab ich die fehler nicht

und beim neuen (xx.18.2) hab ich wenn ich nen den code fürn mega 16 compile keinen fehler
aber wenn ich den fürn tiny26 compile kommt immer die meldung
"baudrate not possible"

was soll das ich hab gar nix mit baudrate eingestellt
hier mein geänderter code mit crystal und def
wenn ich $baud verwende krieg ich gleich noch ne fehlermeldung



$crystal = 8000000
$regfile = "at26def.dat"


Dim Zahler As Byte
Dim Richtung As Bit
Richtung = 1
Dim Zeichen As Byte
Declare Sub Zumdisplay(byval Zeichen As Byte) 'funktion zum senden an das display


Db4dis Alias Porta.4
Db5dis Alias Porta.5
Db6dis Alias Porta.6
Db7dis Alias Porta.7
Rsdis Alias Porta.0
Enabledis Alias Porta.2

Config Lcdpin = Pin , Db4 = Db4dis , Db5 = Db5dis , Db6 = Db6dis , Db7 = Db7dis , E = Enabledis , Rs = Rsdis

Initlcd
Call Zumdisplay(&B00101100) 'aufruf zum initialisieren
Waitms 5 'des display controllers
Call Zumdisplay(&B00001001)
Waitms 5
Call Zumdisplay(&B00101000)
Waitms 5
Call Zumdisplay(&B00000110)
Waitms 5
Call Zumdisplay(&B00001100)
Waitms 5
Config Lcd = 20 * 4a 'display als 20 zeichen mal 4 zeilen

Do
If Richtung = 1 Then Incr Zahler Else Decr Zahler
If Zahler = 255 Then Richtung = 0
If Zahler = 0 Then Richtung = 1
Waitms 500

Cls
Upperline
Lcd Zahler
Loop

End


Sub Zumdisplay(byval Zeichen As Byte)

' Höherwertiges Nibble setzen
If Zeichen.4 = 1 Then Set Db4dis Else Reset Db4dis
If Zeichen.5 = 1 Then Set Db5dis Else Reset Db5dis
If Zeichen.6 = 1 Then Set Db6dis Else Reset Db6dis
If Zeichen.7 = 1 Then Set Db7dis Else Reset Db7dis

' höherwertiges nibble übertragen
Set Enabledis
Waitms 5
Reset Enabledis
Waitms 5

' Niederwertiges Nibble setzen
If Zeichen.0 = 1 Then Set Db4dis Else Reset Db4dis
If Zeichen.1 = 1 Then Set Db5dis Else Reset Db5dis
If Zeichen.2 = 1 Then Set Db6dis Else Reset Db6dis
If Zeichen.3 = 1 Then Set Db7dis Else Reset Db7dis

' Niederwertiges Nibble übertragen
Set Enabledis
Waitms 5
Reset Enabledis
Waitms 5

End Sub

chr-mt
15.02.2006, 21:23
Hi,
das ist ja echt lustig mit der Baudrate.
Da meckert Bascom bei einigen Chips, obwohl gar nix im Code steht (leeres File, oder nur Kommentare) bei anderen Chips geht's.


Gruß
Christopher

molleonair
15.02.2006, 21:38
mag sein das es für dich lustig ist ...

das problem ist das ich nicht clever genug bin ne lösung zu finden
also was soll man da machen
Wo liegt der Fehler bei mir oder beim ach so tollen compiler ??

chr-mt
15.02.2006, 21:49
Hi,

Eventuell hat Bascom beim letzten Update irgendwelche Bugs bekommen.
Da hilft zum endgültigen klären wohl nur eine Anfrage / Bugreport an mcselec.
Mark kümmert sich meistens SEHR schnell um solche Sachen.
Ein großer Vorteil meines Lieblingscompilers. ;)

Gruß
Christopher

molleonair
15.02.2006, 21:55
hast du vieleicht ne mail von dem mark
und spricht der deutsch

hab schon versucht ne mail an mcs zu schicken da hab ich irgendeine validierungsmail zurück bekommen wo ich nicht kappiert hab was ich damit soll

muß man informatik studieren um ne email zu versenden

und danke fürs ausprobieren Gruß Daniel

chr-mt
16.02.2006, 01:05
Hi,
mailadresse hab' ich zwar, weiß aber nicht, ob ich die weitergeben darf.
Anscheinend haben die auch was am Support geändert..
Es gibt da jetzt den kostenpflichtigen "Premium" Support. 199€
Gibt's jetzt nur noch kostenpflichtigen Support ?
Oder finde ich die Supportadresse auch nicht.
( "Die "info" Adresse gibts aber noch)
Die "BAUD rate not possible" Meldung geht übrigens bei bestimmten Einstellungen für den Quarz weg.

Beim Tiny45 zB. mit:
$crystal=100000
mit:
$crystal=400000 geht's nicht

Übrigens schreibt Bascom als Zeilennummer immer die letzte Zeile.
Also auch, wenn nichts drinsteht.

Wenn ich also mit der Return Taste leere 100 Zeilen einfüge, sieht Bascom den Fehler in Zeile 100, auch wenn nur Code in den Zeilen 1-10 steht.

Strange...

Gruß
Christopher

Torsten_G
16.02.2006, 13:00
Hmm... haben nicht einige Atmel-Chips, die nur mit ihrem internen Taktgeber arbeiten können, festgelegte Teilungsraten?

Das würde erklären, warum manche Taktfrequenzen bei bestimmten Chips nicht funktionieren...

Viele Grüße

Torsten

hrei
16.02.2006, 13:49
Wenn ich also mit der Return Taste leere 100 Zeilen einfüge, sieht Bascom den Fehler in Zeile 100, auch wenn nur Code in den Zeilen 1-10 steht.

Strange...


Ja, seltsam ist das schon. Über das Thema gab es ja bereits einen Thread.
Mein anfänglicher Ärger legte sich aber, nachdem ich fesstellte, daß die Datei(en) trotz Fehlermeldung vollkommen korrekt kompiliert werden und dieses Kompilat auch anstandslos lauffähig ist.

BTW: Die "Baudrate not possible" Meldung kommt seit der ...8.1 als Fehlermeldung bei allen Prozessoren, die keinen HW-UART haben. Die ...8.0 gibt keine Fehlermeldung aus, schaut man aber unter "Compile result" nach, findet sich hier unter "Warnings" bereits das Gemeckere.

Das dürfte daran liegen, das es unter unter Options/Communication keine Möglichkeit gibt, diese Voreinstellung abzuschalten. Gleich ob man nun HW-RS232 nutzt oder nicht, der Compiler prüft...
Wie gesagt: auf den generierten Code hat das keinerlei Auswirkungen.

Grüße
Henrik

chr-mt
16.02.2006, 13:51
Hi Henrik,
Danke für die Erklärung. Das macht Sinn.

Gruß
Christopher

molleonair
16.02.2006, 17:03
Ja Danke ...

auf die idee den code trotz fehlermeldung in den prozessor zu flashen
bin ich nicht gekommen

aber es funktioniert

super_castle
16.02.2006, 17:24
...na, wirst Du wohl aufhören, hier meinen Lieblingscompiler madig zu machen...

na, der hellste bis du auch nicht, weil du noch nicht an die einfachen grenzen von bascom gekommen bist. wenn du halbwegs gut proggen tust mit dem avr hast du diese schnell erreicht und wirst mit selbstgebauten bascomlib weitermachen damit es wieder bergauf geht.

Castle

molleonair
16.02.2006, 17:40
wenn nur der der hellste ist, der bascom an seine grenzen bringt ,dann bin ich wirklich nicht der hellste.
Beschäftige mich mit dem atmel thema auch erst seid einem monat und irgendwann hast auch du genie mal ganz unten angefangen gell?

Aber trotzdem Danke an alle die auch hier geholfen haben.

chr-mt
16.02.2006, 18:00
Hi Daniel,
da Thorsten zitiert wurde, war wohl er gemeint.
Was den Spruch und den Rest des Beitrags auch nicht besser macht :(

Gruß
Christopher

Torsten_G
18.02.2006, 00:13
Super, Castle!

Das muß man Dir lassen, Deine Beiträge haben fast immer einen hohen Popcorn-Faktor... :mrgreen:

Reinhold Blasius
14.11.2013, 15:13
Hi Daniel,
da Thorsten zitiert wurde, war wohl er gemeint.
Was den Spruch und den Rest des Beitrags auch nicht besser macht :(

Gruß
Christopher

Kindergartenkram.Wer sich mit seinem Hobby nicht auskennt,soll in den Hof spielen gehen.

malthy
14.11.2013, 15:23
@Reinhold Blasius

Geht's noch? Der Thread ist bald acht Jahre alt ... :-)

HeXPloreR
14.11.2013, 16:44
Kindergartenkram.Wer sich mit seinem Hobby nicht auskennt,soll in den Hof spielen gehen.

Und da das Hobby ja auch nicht ansatzweise manchmal etwas komplizierter ist, fällt einem wie Dir auch nicht ein. Angefangen hast Du vermutlich auch nicht irgendwie und fragen hattest Du auch nie welche. Du kannst alles - dann fühle Dich glücklich und lass andere Leute ihre Probleme mit uns teilen.