Shop-Wechsel

Der Warenkorb wird nicht übernommen.

Zum Privatkunden Shop

Neue Bausätze und Themen

Microcontroller Einstieg mit Bascom AVR

Beiträge zu diesem Thema: 9
Microcontroller Einstieg mit Bascom AVR
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
08.11.2014, 17:00
Hallo erst mal an alle die das Thema Bascom abonniert haben.

Ich möchte mich für ein Project in die DMX Steuerung mit Bascom einarbeiteten und habe das Problem, dass das Beispielprogramm nicht Compiliert wird.
Fehlermeldung mit Verweis auf Zeile 88

88 Printbin Dmx_daten(i);

Error : 377 Lini 88 Unexpected non mumeric characters fond

kann einer einen Tip geben woran es hängt ?

Beitrag in ELV 1/2014

Grüße Hans
Probieren ändern probieren ändern probieren ändern probieren ändern probieren vielleicht funktioniert es ja irgendwann mal
Aw: Microcontroller Einstieg mit Bascom AVR
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
08.11.2014, 23:40
Bitte versuchen Sie es mit
Printbin Dmx_daten(i) ; 1
Also eine 1 hinten anfügen.
Aw: Microcontroller Einstieg mit Bascom AVR
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
09.11.2014, 10:04
:):D
Hallo Stefan

Das mit der 1 dahinter hat funktioniert der Compeiler ist fehlerlos Durchgelaufen. Mal sehen mit welchen Controllern das jetzt Funktioniert.
Zumindest kann ich jetzt mit der Hardware weitermachen.

Vielen Dank für die schnelle Antwort.

Viele Grüße an alle Bastler Schrauber und selbst Denker

Hans
Probieren ändern probieren ändern probieren ändern probieren ändern probieren vielleicht funktioniert es ja irgendwann mal
Aw: Microcontroller Einstieg mit Bascom AVR
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
11.11.2014, 14:41
Tja so einfach wie ich mir das vorgestellt habe geht es dann doch nicht weiter. Habe statt eines M88 einen 328 genommen da er Pin-kompatibel ist. Aber leider klapts nicht. Gibt es vielleicht noch mehr Fehler in dem Programm von elv? Auch finde ich im netz keine Erklärung was Data 3% oder Data 5% bedeutet oder was es mit der Zeit(Dauer) zu tun hat.
:(
Habe das ganze zum testen gekürzt. Hier nur die Schleifen und Tabelle.

Do
Restore Rot
Gosub Anzeigen

Restore Dunkel
Gosub Anzeigen

Loop

End

Anzeigen:
Gosub Szenendaten_zuweisen 'Erst Szene inkl. Dauer zuweisen ..
Do
Gosub Dmx_daten_senden '.. dann senden
Loop Until Dauer = 0 'bis Sekunden heruntergezählt
Return

Szenendaten_zuweisen:
Read Dauer
For I = 1 To Max_dmx_adresse 'DMX-Werte einlesen
Read Dmx_daten(i)
Next I
Return

Dmx_daten_senden: 'DMX-Daten gemäß DMX-Protokoll senden
Baud = 500 'niedrige Geschwindigkeit
Printbin 0 ; ' 0 senden
Waitms 1
Baud = 250000 'normale DMX-Geschwindigkeit
Printbin 0 ; 'Startbyte
For I = 1 To Max_dmx_adresse ' Daten senden
Printbin Dmx_daten(i) ; 1
Next
Waitms 1
Return

Timer1_isr: 'Im Sekundentakt herunterzählen
Timer1 = Timer1startwert
If Dauer > 0 Then Decr Dauer
Return

Rot:
Data 3% 'Dauer
Data 255 , 0 , 0 , 0 , 0 '1. Gerät rot
Data 0 , 0 , 0 , 0 , 0 '2. Gerät aus
Dunkel:
Data 3% 'Dauer
Data 0 , 0 , 0 , 0 , 0 '1. Gerät aus
Data 0 , 0 , 0 , 0 , 0 '2. Gerät aus

Mein DMX Tester (Elektor) zeigt jedes mal andere Werte. Die Ausgabe des DMX Led-Treiber passt nicht zu den Werten. Schließe ich den Tester an den Treiber und gebe Werte vor passt alles. Irgendwo passt was nicht in der Übertragung oder Datenerzeugung.

Weiß Jemand an welcher schraube ich noch drehen kann?
Probieren ändern probieren ändern probieren ändern probieren ändern probieren vielleicht funktioniert es ja irgendwann mal
Aw: Microcontroller Einstieg mit Bascom AVR
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
11.11.2014, 22:56
Das mit dem Prozentzeichen steht in der BASCOM-Hilfe (im Internet oder in BASCOM) zu DATA:
Integer and Word constants must end with the %-sign.

Long constants must end with the &-sign.

Single constants must end with the !-sign.

Double constants must end with the #-sign.

Die Variable Dauer ist als WORD dimensioniert (und enhält die Anzeigedauer in Sekunden). Deshalb muss im DATA-Bereich das Prozentzeichen der Zahl nachgestellt werden.

Ist sichergestelt, dass eine Taktfrequenz von 16 MHz eingestellt indem das nicht nur bei $Crystal im Programm steht, sondern auch die Fuse-Bits entsprechend eingestellt sind?

Ich verstehe noch nicht genau das Hardware-Szenario.
Was macht der "DMX Tester (Elektor)"? Empfängt der DMX-Signale und zeigt sie an?
Was ist mit "DMX Led-Treiber " gemeint?
Was heißt "Schließe ich den Tester an den Treiber und gebe Werte vor passt alles. "?
Stimmt alles mit dem Pegelwandler (MAx485 / SN75176)?
Eventuell noch jeweils das Semikolon am Ende der anderen PRINTBIN-Befehle weglassen:
Dmx_daten_senden:
Baud = 500 'niedrige Geschwindigkeit
Printbin 0 ' 0 senden
Waitms 1
Baud = 250000 'normale DMX-Geschwindigkeit
Printbin 0 'Startbyte
For I = 1 To Max_dmx_adresse ' Daten senden
Printbin Dmx_daten(i) ; 1
Next
Waitms 1
Return

Aw: Microcontroller Einstieg mit Bascom AVR
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
12.11.2014, 10:28
Hallo Stefan

der DMX-Tester zeigt als Empfänger die Daten an welche auf den einzelnen Kanälen gesendet werden. Dazu kann man mit zwei Tasten die Kanäle anwählen.(Taste 1 Kanal auf Taste2 Kanal runter) Ein Display zeigt Kanal Nr. und den Wert 000-255 an.
Als Sender kann ich beliebige Kanale mit beliebigen werten ausgeben. Bei Kanal Wechsel werden die vorher eingestellten Werte auf den Kanälen weiter ausgegeben.

Mein DMX LED-Treiber empfängt 3 DMX Kanäle welche auf pwm Steuerung für RGB-LED-Streifen umgesetzt werden. Habe 2 davon.
Einen mit einstellbaren Start Kanal und einer mit fest auf Kanal 1 eingestellten Start Kanal.

Diese Geräte benutze ich zum Testen. Mein fertiges Programm soll im Endeffekt nach dem Start Impuls einen wert (z.b. 198) auf einen Kanal senden und nach einer bestimmten zeit 000 und auf den nächsten Start Impuls warten.

Im Moment komme ich mir wieder mal Blöd vor!
bin mir sicher dass das Programm richtig abgetippt war.
Die Semikolons am Ende der anderen PRINTBIN-Befehle hatte ich nachträglich zum testen eingefügt da das Programm nicht lief. Nach der letzten Änderung macht das Programm genau das was es soll.
Wenn ich das Programm jetzt richtig verstanden habe ist die Kürzeste Anzeigen Einheit bis zum Programm Wechsel 1 Sekunde und die Längste 65535 Sekunden.
Wie viel Data Kanäle 0 , 0 , 0 , 0 , 0 ......0 , 0 dürfen eigentlich auf einmal in der Zeile geschrieben werden?

Vielen Dank erst mal für die Hilfe und ich hoffe ich komme mit der weiteren Änderung des Programmes klar.

Das Programm soll am ende einen Indigo 400 LED gobo effect Strahler für eine Halloweenshow im Vorgarten Steuern.

Vielleicht komme ich ja auch noch mal dahin, anderen im Forum zu helfen.



Probieren ändern probieren ändern probieren ändern probieren ändern probieren vielleicht funktioniert es ja irgendwann mal
Aw: Microcontroller Einstieg mit Bascom AVR
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
12.11.2014, 22:20
Klingt ja nach einem interessant Projekt.

Woran lag es denn jetzt eigentlich?

Die ZEILENLÄNGE darf in BASCOM beliebig lang sein.
Aus der BASCOM-Hilfe:
BASCOM LineLength
If you enter your programs using the built-in editor, you are not limited to any line length, although it is advised to shorten your lines to 80 characters for clarity.

Man kann die Werte einer DATA-Zeile aber auch (genauso wie andere BASCOM-Zeilen) unterbrechen mit einem Unterstrich _ und dann in der nächsten Zeile fortsetzen.

Weiter viel Erfolg mit BASCOM-Projekten
Stefan Hoffmann
Aw: Microcontroller Einstieg mit Bascom AVR
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
15.11.2014, 09:32
Hallo Stefan
anscheinend gab es Kontaktprobleme mit dem Steckbord.
versuche jetzt einen ATMEGA8515 16PU mit 16MHz zum Laufen anzuregen.
16MHZ Quarz 2x 22pF aber nach dem Programmieren der Fuses lässt sich der Prozessor nicht mehr ansprechen. Mit einem 328 als Frequenz Generator Fuse Clock Out gesetzt an B0 klappt die Kommunikation. Meine Hexfiles Programmiere ich mit Atmel Studio 6.1 . Beim 328 weiß ich inzwischen welche Häkchen ich wo zu setzen habe, aber beim 8515 ist die Auswahl viel Größer.
Mal sehn, vielleicht verkleinere ich noch die Kondensatoren oder wechsele den Quarz. Der DMX-Sender mit Atmel328 macht inzwischen was ich will.

Viele Grüße Hans
Probieren ändern probieren ändern probieren ändern probieren ändern probieren vielleicht funktioniert es ja irgendwann mal
Aw: Microcontroller Einstieg mit Bascom AVR
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
17.11.2014, 15:05
Hallo mal wieder

möchte euch an meinen Weg der Fehlersuche heute mal Teilhaben lassen. (vor allem weils ein Happy End gibt.)

Habe den Fehler des nicht mit 16MHz laufenden 8515 gefunden.
Wie schon beschrieben hat er die 16MHz extern ja angenommen und die Fuses waren auch richtig gesetzt. Hatte mir im Internet 3 Platinen Bestellt um nicht mit Lochrasterplatten zu arbeiten. Leider ist bei den Platinen die Kupferschicht so Dünn, dass sich beim löten die Lötaugen zum teil von den Leiterbahnen Lösen. Genau das war passiert. Sogar beim Entlöten mit der Lötsaugpumpe wurde das Lötauge mit abgesaugt.
So Die 16MHz laufen, aber das nächste Problem ist schon wieder da- Kein DMX Signal am Ausgang. Beim 328 brauchte ich PortD.1 nicht als Ausgang konfektionieren aber der 8515 wollte dies schon. Gut- DMX-Signal kommt, ist aber gleich wieder weg.?
Auf der Platine sind zwei Ausgänge mit Leuchtdioden. Also einen konfektioniert und in der Do Loop-schleife nach jeden Szenenwechsel getooglet. Programm Läuft, nur die Schnittstelle nicht. Also die Dauer für DMX-Dunkel auf 10 Sec. gesetzt und wieder probiert. Keine Änderung am Signal. Was jetzt? - Also wieder ins Internet und Schaltplan der gekauften Platine mit dem Schaltplan in ELV verglichenen.
Beim Schnittstellen Chip sind Pin 2 (RE oberstrich) und 3 (DE) bei ELV mit +5V verbunden. In der Schaltung ist diese Verbindung auf Pin12 (PortD.2) des 8515 gelegt. Und siehe da-nach Programmänderung(PortD.2 als Ausgang konfektionieren
und 5V ausgeben) Funktioniert das Programm von ELV auch auf einer Gekauften Platine mit einem ATmega8515 PU16.

Ganz fertig bin ich mit dem Programm noch nicht. Mache mir jetzt Gedanken wie ich Zeiten der Szenen verkleinern kann.
Im Moment ist die Kürzeste Szenendauer 1 sec. Da ich auch eine Nebelmaschine damit steuern will, möchte ich die Szenendauer für einen kürzeren Nebelausstoß auf eine halbe besser noch auf eine viertel Sekunde einstellen können. Auch farbige Lichtblitze sollten damit möglich sein.
Von der Variablengröße (Dim Dauer As Word =65535) Sollte eine Szenendauer bis zu 273 min. möglich sein.
Probieren ändern probieren ändern probieren ändern probieren ändern probieren vielleicht funktioniert es ja irgendwann mal