PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bug in Bascom 8051?



Ingo
17.07.2007, 07:46
Hallo Forum,

Mal sehen, ob hier auch Bascom User sind. Also, ich habe ein kleineres Problem, bei dem mir auch MCS nicht helfen mag. Zumindest ist nach einigem Hin und Her an E-Mails die Antwortfreudigkeit von Seiten MCS gegen 0 gegangen. Ich beschäftige mich noch nicht lange mit diesem Programm, da ich bisher alles in Assembler geschrieben habe. Beruflich nutzen wir aber seit Neuestem Bascom AVR und ich habe gesehen, daß es wirklich einfacher ist, Programme in Hochsprache (naja, Basic...) zu schreiben. OK, nun zu meinem Problemchen. Es ist nichts weltbewegendes, aber nervt doch etwas. Für ein größeres Bühnenequipmentprojekt schreibe ich gerade an einem Programm für einen Atmel AT89C55. Ein Portpin steuert einen Buzzer an. Dieser soll nach dem Einschalten, der Initialisierung der Hardware, dem Speichertest etc. durch eine Abfolge unterschiedlicher Töne mitteilen, daß der Aparillo nun bereit zur Verwendung ist. Anders als z.B. der Befehl Beep bei Conrads C-Control kann man in Bascom mit dem Soundbefehl die Länge und Frequenz des Tones durch 2 unterschiedliche Parameter angeben. Das funzt bei mir garnicht. Es ist vollkommen Wurst, welchen Wert ich für die Frequenz angebe. Es klingt alles gleich.

Hier mal der Codeschnipsel:

'Sound "Geraet bereit"
Sound Buzzer , 90 , 10000
Waitms 20
Sound Buzzer , 90 , 5000
Waitms 20
Sound Buzzer , 90 , 10000
Waitms 100
Sound Buzzer , 90 , 10000
Waitms 20
Sound Buzzer , 90 , 5000
Waitms 20
Sound Buzzer , 90 , 10000

Buzzer ist weiter oben im Programm als Portpin x.y definiert. Die 90 gibt die Länge an, 10000 bzw. 5000 ist die Anzahl der Wiederholungen (Frequenz). Kein Unterschied zwischen 5000 und 10000 zu hören. Am Buzzer liegt es definitiv nicht, das habe ich mittels Wobbelfunktionsgenerator ausgespielt. Er hat zwar bei 2,4 KHz das lauteste Signal, aber schwingt nicht nur auf dieser Frequenz.

Hat einer der Bascom User ein ähnliches Phenomän feststellen können? Bei Bascom AVR funktioniert das übrigens...

Gruß Ingo

Rudo
17.07.2007, 11:26
Bei Bascom AVR funktioniert das übrigens...

Gruß IngoHi,
ich hab zwar von Bascom genauso wenig Ahnung wie von AVR, aber ich schreib mal trotzdem was dazu:
AT89C55 ist doch ein Urviech von 8051-Derivat, oder? - d.h., z.B. keine PWM-Ausgaenge.
Deshalb sollteste auch nicht mit AVR vergleichen, ist wie 'Aeppel mit Birnen'.
Ich seh zwei Moeglichkeiten: entweder du nimmst ein Derivat, welches auch mit Basic locker die Frequenzen rausschleudert (also mit PWM-Controller) oder du schreibst ein paar Unterroutinen in Assembler. Ich geh mal davon aus, dass bascom auch Maschinenroutinen aufrufen kann (Befehl 'sys(speicherstelle)?)

Ingo
17.07.2007, 11:38
Hi Rudo,




Hi,
ich hab zwar von Bascom genauso wenig Ahnung wie von AVR, aber ich schreib mal trotzdem was dazu:
AT89C55 ist doch ein Urviech von 8051-Derivat, oder? - d.h., z.B. keine PWM-Ausgaenge.
Deshalb sollteste auch nicht mit AVR vergleichen, ist wie 'Aeppel mit Birnen'.
Ich seh zwei Moeglichkeiten: entweder du nimmst ein Derivat, welches auch mit Basic locker die Frequenzen rausschleudert (also mit PWM-Controller) oder du schreibst ein paar Unterroutinen in Assembler. Ich geh mal davon aus, dass bascom auch Maschinenroutinen aufrufen kann (Befehl 'sys(speicherstelle)?)

Der Vergleich ging eher in die Richtung der Programme. Die Befehle sind 100% kompatibel. Die Ansteuerung des Buzzers erfolgt auch nicht mit PWM. Es ist simpler Rechteck. Die Einbindung von Assembler ist problemlos. Habe das im aktuellen Projekt auch schon gemacht, da ich nicht den passenden Basic Befehl gefunden habe. Ich denke auch, daß ich eine kleine Unterroutine in ASM schreibe. Mich ärgert eben nur, daß ich für das Programm richtig Geld ausgegeben habe und es dann fehlerhaft ist. Der Support für die AVR Version ist weitaus besser. 51-er werden meiner Meinung nach zu stiefmütterlich behandelt. Und das vollkommen grundlos. Die Familie wächst zusehends. MP3, USB, Kartenleser... alles implementiert...
Naja. Mal sehen, ob noch jemand derartige Probleme hat.

Gruß Ingo

edgar
19.07.2007, 21:50
bascom hat ein Bug...

na UND ,welche software hat keinen ?

Aufgabe des programmierers ist ein work_around zu schaffen,damit es trotzdem geht.
.....und allgemein gilt : erst mal bei sich selber nachschauen ob der Bug nicht auf eigenem Mist gewachsen ist.

das klima hat ein Bug...

Klimaanlage einschalten :D

Ingo
20.07.2007, 08:39
Hallo,




bascom hat ein Bug...

na UND ,welche software hat keinen ?


Auf die Gefahr hin, daß ich mich zu weit aus dem Fenster lehne... meine.
Das mag daran liegen, daß ich mir Zeit nehme, die "professionelle Programmierer" nicht haben. Ich kenne den Druck noch von einer ehemaligen Arbeitsstelle, als ich noch "professionell" programmiert habe. Nun mache ich das nur noch für mich privat und nehme mir die Zeit, alle Macken auszubügeln. Das geht in der Regel mit etwas Nachdenken.




Aufgabe des programmierers ist ein work_around zu schaffen,damit es trotzdem geht.
.....und allgemein gilt : erst mal bei sich selber nachschauen ob der Bug nicht auf eigenem Mist gewachsen ist.


Das work_around ist die Einbindung von Assemblerroutinen. Das kann's doch aber nicht sein oder? Das wäre ein Freibrief, eine komplett vergurkte Version auf den Markt zu werfen und dann zu sagen, das was in Hochsprache nicht funktioniert, mach' eben in Assembler. Dann kann ich es auch gleich wieder auf hergebrachte Art und Weise tun und muß nicht 80 Euro zum Fenster raus werfen. Oder wie siehst Du das?
Das mit der Suche nach eigenen Fehlern ist selbstverständlich vorher getan worden. Im Allgemeinen programmiere ich frisch von der Leber weg ein Grundgerüst und werte dann erst mal die Bugs aus, die ich eingebaut habe. Dann mache ich mir to do Notizen und arbeite diese wie ein Pflichtenheft ab. Steht dann das Gerüst des Programmes, geht es an die Feinheiten und Gadgets. Dann erfolgt die genaue Prüfung, ob auch alles berücksichtigt worden ist. Es gibt ja DAU's, die alle z.B. Knöppe gleichzeitig drücken müssen...
Der Bug und einige Weitere sind dem Hersteller des Entwicklungstools übrigens bekannt. So wurde mir das von anderen Usern bestätigt. Ich stehe also nicht ganz alleine im Wald. So sind z.B. "wait" Anweisungen doppelt so lang, wie programmiert. Aber es erfolgt keine Rückmeldung des Herstellers. Sofern an einem Bug Fix gearbeitet wird, wäre es schon funny, dieses auch zu erfahren.



das klima hat ein Bug...

Klimaanlage einschalten :D

Och, das finde ich nicht. Auch wenn ich mir vergangene Woche im Ostseeurlaub etwas den Pelz versengt habe. Ich kann Wärme ganz gut ab.

Gruß Ingo

edgar
20.07.2007, 09:28
Hallo Ingo,

interessant klingt,dass die 'professionellen Programmierer' keine Zeit haben....
und es ist auch leider so.....sonst wuerden sie das ganze Leben an einer Software herumbuegeln.
Du kannst natuerlich als Bugjaeger manchen Murx finden....und koenntest dich sogar darueber aufregen....aber deine 80€ beinhalten eben auch diese kostbare und anerkannte Bugs. In solchen Faellen erinnert man sich einfach,dass 1000 Strassen nach Rom fuehren ....bei der Gelegenheit ist es in diesen Tagen hier sehr angebracht die Klimaanlage einzuschalten ! Gestern Autobahn Turin- Piacenza zeigte mein Autothermometer mal wieder 38°C :cool:

Hier wird das Klima und die Umwelt tuechtig studiert....neben meinem Garten ist mal wieder die Wetterstation aufgetaucht....und ich ''diesele'' denen direkt in die Sensoren :D ...ob das 'was bringt ?

Viel Spass beim Programmieren
hoffentlich crasht der PC nicht
ciao

Ingo
20.07.2007, 11:15
Hallo Edgar,




Hallo Ingo,

interessant klingt,dass die 'professionellen Programmierer' keine Zeit haben....
und es ist auch leider so.....sonst wuerden sie das ganze Leben an einer Software herumbuegeln.
Du kannst natuerlich als Bugjaeger manchen Murx finden....und koenntest dich sogar darueber aufregen....aber deine 80€ beinhalten eben auch diese kostbare und anerkannte Bugs. In solchen Faellen erinnert man sich einfach,dass 1000 Strassen nach Rom fuehren ....bei der Gelegenheit ist es in diesen Tagen hier sehr angebracht die Klimaanlage einzuschalten ! Gestern Autobahn Turin- Piacenza zeigte mein Autothermometer mal wieder 38°C :cool:

Hier wird das Klima und die Umwelt tuechtig studiert....neben meinem Garten ist mal wieder die Wetterstation aufgetaucht....und ich ''diesele'' denen direkt in die Sensoren :D ...ob das 'was bringt ?

Viel Spass beim Programmieren
hoffentlich crasht der PC nicht
ciao

Ja, leider ist die Zeit kanpp. Ich habe es selbst öfter erlebt, als es mir lieb gewesen wäre. Daher habe ich dann auch das Handtuch dort geworfen und bin woanders hingegangen. Man stelle sich vor, die Maschinensteuerung ist komplett fertig programmiert, die Anlage gereinigt und für den Transport verpackt, der Fuhrunternehmer steht auf dem Hof, um das Gerümpel abzuholen. Da fällt dem Chef ein, "Och Mensch, da muss noch ein Tippbetrieb dran". (Chefchen war damals so Kaliber "Meister Röhrich") Also Furhunternehmer nach Hause geschickt, Maschine wieder ausgepackt, neuen Schaltschrank bauen, neue, größere Steuerung rein, weil der Speicher bereits bis auf das letzte Byte voll war, jede Menge Überstunden einplanen, daheim telefonisch das Abendessen absagen, in sich hinein fluchen, wie bescheuert man eigendlich sein muß, um so einen Mist im Nachhinein zu bringen...

Naja, seit Jahren Vergangenheit. Aber soetwas gibt es tatsächlich. Und die Firma verkauft weltweit Maschinen für Konfiserien und Bäckereien...

Gruß Ingo

PS: Hier sind es moderate 23 Grad. Die hält man beuem auch ohne Klima durch.

edgar
20.07.2007, 12:10
Hallo Ingo,

das was du erzaehlt hast passiert in den besten 'Familien' /sprich WeltFirmen....., keine ausgeschlossen.
Die Chefs haben eben allzuoft nur die Kopfgroesse eines Hilfsarbeiters (nichts gegen Hilfsarbeiter...ohne die stuenden wir alle im Dreck!)
Ich habe meinen Chef zum teufel gejagt (er wurde entlassen) und habe mich selbstaendig gemacht .

Du sprachst bestimmt ueber SPS Programmierung....schau,gerade ''die'' habe ich immer anderen ueberlassen.....und nur das gemacht ,was die anderen (vielleicht) nicht konnten. Bei mir hat das immer funktioniert.
Wenn du dein eigener Chef bist,dann machst du Ueberstunden mit Freude,ueberspringst Abendessen,schreibst du die Soft wie du willst....du weisst ja fuer wen du das machst.Und alles machst du mit freudigem Laecheln, weil aufregen nichts bringt.


Dreiundzwanzig Grad Celsius....ist sehr angenehm...naechsten Monat werde ich bis zu 46° aushalten:D (solange das zeug haelt..)

ciao

Mirko
20.07.2007, 13:14
Hat einer der Bascom User ein ähnliches Phenomän feststellen können? Bei Bascom AVR funktioniert das übrigens...


Mit der Frequenz hatte ich auch schon mal ein Problem. Bei mir lag es aber nicht an der Software, sondern an der Hardware:

Der eingesetzte Piezo-Buzzer war einer, der nur +5V brauchte und dann ein Signalton mit fester Frequenz von alleine erzeugte. Da konnte man irgendeine Frequenz einstellen...der hat immer in der selben Tonlage gesummt.

Hast jetzt 2 Möglichkeiten:
1. Erstmal schauen, ob am Pin wirklich was mit veränderlicher Frequenz rauskommt... dazu entweder ein Oszi oder ein simples 08/15 Messgerät mit Frequenzmessung nehmen
2. Prüfen ob der Buzzer bei normaler Betriebsspannung ein Dauersignal abgibt...dann ist es nämlich so ein Teil mit Festfrequenz.


Mirko

Ingo
21.07.2007, 09:15
Hallo Mirko,


Mit der Frequenz hatte ich auch schon mal ein Problem. Bei mir lag es aber nicht an der Software, sondern an der Hardware:

Der eingesetzte Piezo-Buzzer war einer, der nur +5V brauchte und dann ein Signalton mit fester Frequenz von alleine erzeugte. Da konnte man irgendeine Frequenz einstellen...der hat immer in der selben Tonlage gesummt.

Hast jetzt 2 Möglichkeiten:
1. Erstmal schauen, ob am Pin wirklich was mit veränderlicher Frequenz rauskommt... dazu entweder ein Oszi oder ein simples 08/15 Messgerät mit Frequenzmessung nehmen
2. Prüfen ob der Buzzer bei normaler Betriebsspannung ein Dauersignal abgibt...dann ist es nämlich so ein Teil mit Festfrequenz.


Mirko

Die Buzzer, welche ich verwende, sind soweit OK. Sie haben bei 2,4KHz ihre höchste Lautstärke. Das war natürlich mein erster Gedanke, daß ich in die falsche Kiste gelangt habe und Piezo Buzzer erwischt habe. Aber nö. Die Buzzer ansich buzzen auch mit weniger oder mehr Hz. Daran liegt es nicht. Das habe ich mittels Funktionsgenerator geprüft.

Gruß Ingo

michl
24.07.2007, 19:03
Hallo, Ingo,
ich bin Bascom8051 - Benutzer und kenne dein Problem. Leider weiß ich nur noch (da lange diesen Befehl nicht mehr genutzt), dass die Beschreibung im Handbuch irreführend ist. Die beiden Werte beeinflussen sich gegenseitig. Ich bin nur durch Probieren auf brauchbare Töne gekommen. Ich habe einen Ton über eine Schleife verlängert und gemessen. Auch musste der erste Wert (duration) relativ groß sein.
Ich hatte eben dein Programm mal schnell getestet, bin aber nicht mehr auf die schnelle Lösung gekommen.
Viel Glück
michl

Ingo
26.07.2007, 11:05
Hallo Michl,


Hallo, Ingo,
ich bin Bascom8051 - Benutzer und kenne dein Problem. Leider weiß ich nur noch (da lange diesen Befehl nicht mehr genutzt), dass die Beschreibung im Handbuch irreführend ist. Die beiden Werte beeinflussen sich gegenseitig. Ich bin nur durch Probieren auf brauchbare Töne gekommen. Ich habe einen Ton über eine Schleife verlängert und gemessen. Auch musste der erste Wert (duration) relativ groß sein.
Ich hatte eben dein Programm mal schnell getestet, bin aber nicht mehr auf die schnelle Lösung gekommen.
Viel Glück
michl

Naja, so immens wichtig ist der Befehl nicht wirklich. Aber ärgern tut es mich schon. Schließlich hat das Proggi ja Geld gekostet. Über den Umweg "$asm" kommt man auch zu einer befriedigenden Lösung, ist aber wohl nicht Sinn und Zweck der Sache. Das mit dem Duration Wert ist übel, wenn man z.B. einen Tastenklick programmieren will. Ich werde am Wochenende mal etwas Zeit in den Befehl investieren. Evtl. komme ich doch noch zu einer Lösung.

Gruß Ingo

Ingo
26.09.2007, 07:13
Hallo,

mit einem Update wurden einige Bugs behoben. So haben die Bascom Leute gemerkt, daß ihre Sound Routine Müll ist und diese mit einer weiteren Routine ergänzt. Nun funktioniert das auch mit unterschiedlichen Tönen. Ebenfalls wurden die Zeitabhängigne Routinen überarbeitet. Jetzt passt auch das...

Gruß Ingo

edgar
26.09.2007, 17:50
Ist ja eine echt gute Nachricht.

Jetzt kann dein MC aus allen Loechern pfeifen....exakt so wie DU es willst :D

alles positive ereignet sich fuer denjenigen,der darauf warten kann...

Ingo
29.09.2007, 08:00
Hallo Edgar,




Ist ja eine echt gute Nachricht.

Jetzt kann dein MC aus allen Loechern pfeifen....exakt so wie DU es willst :D

alles positive ereignet sich fuer denjenigen,der darauf warten kann...

Und nicht nur das. Jetzt stimmen sogar noch andere Sachen, so daß meine Midigeschichten nun endlich auch mit anderen Midigeräten kommunizieren können, ohne daß man umständlich Assemblerroutinen einbinden muss...

Gruß Ingo