Forum: Mikrocontroller und Digitale Elektronik Bascom zu ArduinoIDE übersetzen oder umschreiben


von Strom S. (strom_s)


Lesenswert?

Nabend, ich bin frisch hier. Habe auch die suche bemüht. Aber nix in 
Richtung meines Vorhabens gefunden.

Vorab ich kenne mich mit ArduinoIDE aus. Bin aber kein Profi und kenne 
nur das rudimentäre.  Auch wie man zb HEX auf einen Atmega oder Atmel 
Derivate bekommt.
Aber ein Totaler noob was Bascom angeht.

Mein Vorhaben ist, ich habe ein Bascom Programm das auch Funktioniert. 
Selbst so abgewandelt mit Google Hilfe das es auf meinem Atmega168P 
Läuft.

Allerdings würde ich das Bascom Programm gerne in der ArduinoIDE 
schreiben bzw Übersetzen wollen. Das ist einfacher für sehr viele User 
die das gerne nachbauen möchten.

Das Bascom Programm stammt nicht von mir. Es ist aber zu freien 
Verwendung mit Erlaubnis es abzuändern.
Der Herr der es geschrieben hat kennt sich aber nur in Bascom aus.

Gibs da eine Möglichkeit wie das einfach zu handhaben ist?
Ich habe vor einigen Jahren mal ein Video gesehen, dort konnte man die 
ArduinoIDE auch so umstellen das man zb nicht Digitalpin 13 hat sondern 
die Echte Adresse zb PB5. Die IDE Kompiliert es ja im Hintergrund so um. 
Berichtigt mich wenn ich da falsch liege. Ich finde da leider keine Info 
mehr zu wie man das sichtbar machen kann.

Währe aber hilfreicher bezüglich des LC Displays. Ok das würde ich noch 
so hinbekommen, mit den Pinout Bezeichnungen der IC´s.

Allerdings den Rest kapiere ich nicht wirklich.

Ich gebe euch mal nen kleinen Auszug aus dem Programm.

( das ist jetzt nur ein teil aus dem Programm )
Config Adc = Single , Prescaler = 32 , Reference = Internal 'Internal 
oder AVCC
Start Adc

Config Pinb.5 = Output                                      ' Output-Pin 
für Strom AN / AUS

Cls : Cursor Off : Lcd "-Akku-Ri-Meter- "                   ' 
Einschaltmeldung
Lowerline : Lcd "   Ri @ 1 A     "
Waitms 1000
Print #1 , "--- Start ---"

Adcc = 2 : In_mv = 0.671                                    ' 
Batteriespg. messen  über 10k/1k
Adc64 : Ubatt$ = Str(u) : Ubatt$ = Left(ubatt$ , 4)         ' UBatt, 
Ausgabeformat:0.00
Cls : Lcd "Batteriespannung"
Lowerline : Lcd "   = " ; Ubatt$ ; " V"
Waitms 1000

Do                                                          '  100 ms 1 
A  +  500 ms Pause


Da habe ich schon Probleme zu erkennen was die erste Zeile bezüglich des 
ADC bewirken soll und wie ich das für die IDE umschreiben müsste. Das 
weitere würde ich eventuell noch so hinbekommen.

( noch wein weiterer Auszug aus dem Programm )
 '------------------- SUBs 
----------------------------------------------------------
Sub Adc64                                                   ' 64 
Messungen, liefert Spg. in V
   W = 0
   For J = 0 To 64                                          ' 64 ADCs 
= 8 ms @ 8 Mhz
      W = W + Getadc(adcc)                                  ' adc(0/1/2) 
= Pin 23/24/25
   Next J
   Shift W , Right , 2                                      ' auf 16k 
shiften
   U = W * In_mv                                            ' Spg im mV 
(über Spg-teiler)
   U = U / 1000                                             ' Spg im 
Volt
End Sub

End

Da stehe ich nun ganz auf dem schlauch. Damit kann ich so gar nix 
anfangen. Und wüsste nicht mal ansatzweise das für die IDE zu 
übersetzen.

Hoffe ihr habt da Tips zu. Wenn nicht auch nicht schlimm.
Und nein ich möchte nicht Bascom erlernen. Ich möchte bei der ArduinoIDE 
bleiben. Reichte schon das in Bascom so zu Ändern das ich das benötigte 
HEX File bekomme für den Controller den ich benutzen möchte.

LG

von Veit D. (devil-elec)


Lesenswert?

Hallo,

Ich kann zwar kein Bascom, aber es gibt immer Gemeinsamkeiten, die muss 
man erkennen. Und man muss natürlich die vorhandenen Arduino Funktionen 
kennen. Um die ADC Konfig musste dich nicht kümmern. Standard Referenz 
sind Ub 5V. Zum einlesen gibts analogRead(). Du musst für die gezeigten 
Zeilen nur eine passende LCD Lib nehmen, I2C, SPI, Parallel? Was immer 
du hast. Das Bsp. der Lib zum laufen bringen. analogRead Bsp. der IDE 
anschauen. Waitms 1000 sind gleichzusetzen mit delay(1000) und die LCD 
Zeilenausgabe mit Cursor setzen. Kannste alles aus dem LCD Bsp. 
entnehmen. Der Rest sind paar Formeln. Also im Grunde nichts 
Weltbewegendes. Einfach in Ruhe die Bascomzeilen lesen und verstehen was 
gemeint ist. Da gibts sicherlich komplizierteres in Bascom.

Im Grunde macht das Programm nichts anderes wie analog einlesen, den 
Wert umrechnen und aller paar X [ms] auf das Display ausgeben. Wenn du 
die Formeln und den Hardwareaufbau übernommen hast, kannste das auch 
ohne der Bascomvorlage nachprogrammieren. Von daher brauchste dich nur 
mit dem Grundbsp. der Arduino IDE beschäftigen. Etwas C/C++ Verständnis 
vorrausgesetzt.

von Strom S. (strom_s)


Lesenswert?

Hallo Veit,

danke für die Antwort. Ja LCD das weis ich wie das geht. Und danke mit 
dem Zaunpfahl schlagen :-) AnalogRead. Jetzt wo du es sagst. Stimmt ist 
ja einfach nur das :-)
War von dem ganzen Bascom so im Wald gestanden das ich das nicht mehr 
gesehen habe. Habe einfach zu Kompliziert um die Ecke gedacht.

Danke nochmal.

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.