Sie sind nicht angemeldet.

EDV-Dompteur

Administrator

  • »EDV-Dompteur« ist der Autor dieses Themas

Beiträge: 2 004

Wohnort: Hamburg

Beruf: Techniker

  • Nachricht senden

1

Donnerstag, 13. Juni 2013, 04:01

BASCOM - Einleitung und wichtige Links


Dieser Beitrag wird mit der Zeit immer mehr erweitert werden.


Kurzbeschreibung BASCOM (Expanderkreuz anklicken)

Kurzbeschreibung BASCOM:


Bascom ist ein BASIC-Dialekt für die 8-Bit AVR-Mikrocontroller der Firma ATMEL.
Um nicht zu sagen: Es ist das BASIC für AVR.

Die Sprache unterstützt zwar nebenbei noch ein paar weitere Controller, aber hier reden wir über AVR.

Wer in die Welt der Mikrocontroller einsteigen will und noch nicht in eine bestimmte Sprache eingearbeitet ist, der ist meines Erachtens mit Bascom bestens beraten. Die Sprache ist relativ schnell zu erlernen; insbesondere gibt es sehr rasche Erfolgserlebnisse, schon am ersten Tag.
Die Sprache bietet Hochsprachenbefehle, die zum Teil mit einer einzigen Befehlszeile mächtige Aktionen bewerkstelligt, für die man in anderen Sprachen zuerst seitenweise Code schreiben müsste.
Dennoch entdeckt man aber auch nach Monaten und Jahren immer noch neue Kniffe - zumindest geht es mir so.

C-Programmierer neigen dazu mit der Nase zu rümpfen, sobald das Wort "BASIC" fällt. Da kommen wohl irgendwelche, halbreligiösen Antipathien zu Tage oder so ...
Fakt ist: Ich selbst programmiere AVRs seit Jahren ausschließlich in Bascom. Von der Sprache "C" bekomme ich einfach nur Pickel!

Nun ist Basic generell nicht unbedingt die Programmiersprache, die für besonders schnell ausführbaren Programmcode bekannt ist ...
Aber in solchen Fällen, wo ein Programm mal wirklich extrem schnell vom Mikrocontroller ausgeführt werden muss (Ansteuerung grafischer Displays), garniere ich den Code noch mit ein paar Zeilen eingebettetem Assembler, was in Bascom sehr leicht zu integrieren ist.
So kombiniere ich die Vorteile einer angenehmen Hochsprache, die schnell zu schreibenden Code erlaubt, mit der extrem hohen Geschwindigkeit von Assembler.

Für Codegrößen bis 4kB ist Bascom als kostenlose "Demo" verfügbar:
http://www.mcselec.com/index.php?option=…id=14&Itemid=41
Die "Demo" unterscheidet sich von der käuflichen Version ausschließlich in der dort unbegrenzten (durch den jeweiligen Controller vorgegebenen) Codelänge.

Kurzbeschreibung AVR-Controller (Expanderkreuz anklicken)

Kurzbeschreibung AVR-Controller:



Bei den ATMEL AVR hanelt es sich um 8-Bit Mikrocontroller mit RISC-Architektur.
Es stehen etliche Varianten dieser Controller zur Verfügung. Diese haben allesamt einen gemeinsamen Kern, unterscheiden sich jedoch in den zusätzlichen Features (Anzahl der Timer, PWM-Kanäle, ADC-Kanäle, USB, Funk ...).

Es gibt aus dieser Serie winzige Bausteine mit nur 6 Anschlusspins!
Es gibt aber auch AVRs mit über 100 Anschlüssen, sowie alle möglichen Zwischengrößen.
(Die nebenstehenden Abbildungen sind unterschiedlich skaliert, die Größenverhältnisse zueinander sind also nicht korrekt dargestellt.)

Die Tatfrequenzen liegen meistens bei 8 MHz bis 20 MHz, wobei es auch schnellere Typen gibt und man den Takt (um Strom zu sparen) auch beliebig weit herunterdrehen kann.
Ein kalibrierter RC-Oszillator mit 8 MHz ist jedenfalls überall schon eingebaut.

Die AVRs sind wegen ihrer relativen Einfachheit und der recht günstigen Preise besonders unter Hobbyelektronikern verbreitet. Sie kommen aber auch in der Industrie zum Einsatz.
Sie steuern z. B. Selbstbau-Roboter, Quadcopter und ansehnliche LED-Installationen an.
Sie kommen aber auch im KFZ der Hausautomation, mobilen Geräten und etlichen weiteren Anwendungen zum Einsatz.

Weil oft danach gefragt wird, hier die Belegung des ISP-Steckers, in 6-poliger und 10-poliger Ausführung.
Und damit man man nicht dauernd "über Kopf" denken muss, unten die Belegung des Gegenstücks, also der Buchse des Flachbandkabels, das vom Programmiergerät kommt.



Hinweis:
"MOSI" bedeutet bekanntlich "Master Out, Slave In".
Die Bezeichnungen "MOSI" und "MISO" beziehen sich aber stets auf den AVR, nicht auf das Programmiergerät (auch wenn dieses während des Flashens der Master ist).
Der MOSI-Kontakt des ISP muss im Layout also mit dem (im Datenblatt des AVRs angegebenen) MOSI-Pin verbunden werden.
Vice versa muss der MISO-Kontakt des ISP mit dem MISO-Pin des AVRs verbunden sein. Nix mit Überkreuzung!

Kommt bitte nicht auf den Hirnknoten, die Bezeichnungen irgendwie mit dem Programmiergerät in Bezug zu setzen.
Schert Euch also nicht darum, wer beim Flashen "Master", bzw. "Slave" ist, sondern verbindet die ISP-Kontakte auf der Platine stets mit dem gleichnamigen AVR-Pin.


Die vielfältigen Möglichkeiten der AVR-Controller aufzuzählen, würde hier völlig den Rahmen sprengen.
Ich werde diesen Artikel mit der Zeit aber noch erweitern.


Wichtige Links für Bascom-Programmierer:


Beschreibung
Weblink
Befehlsreferenz der Sprache Bascom (englisch)http://basavrhelp.mcselec.com/index.html
Online-Handbuch (Programmbedienung etc., englisch)http://avrhelp.mcselec.com/index.html
Herstellerseite (Download der Software und mehr ...)http://mcselec.com/
"Offizielles, deutsches Bascom-Forum"http://bascom-forum.de/forum.php?s=80004…266fa238759a92a
AVR-Praxis Forum auch für C und Assemblerhttp://www.avr-praxis.de/content.php
LEDstyles - das Forum für LED-Beleuchtung.
Stark AVR-lastig, auch viele "Bascommer" unterwegs dort.
Hat eine wundervoll nette, hilfsbereite Community!
http://www.ledstyles.de
Einführung AVR-Controller bei Roboternetz.dehttp://www.rn-wissen.de/index.php/Avr
Einführung BASCOM bei Roboternetz.dehttp://www.rn-wissen.de/index.php/Bascom


Wie man besonders kompakten Code erzeugt:

  • Beachte das 32Byte HW-Stack-Minimum für ISR.
  • Vermeide LOCAL Variable
  • Vermeide SUB / FUNCTION mit Parameterübergabe
  • Vermeide Bit-Variable
  • Vermeide a>b, verwende a>=c oder b<a (RISC-Prozessor kennt kein größer als)
  • Vermeide Double/Single/Long etc. und dazugehörige Matheoperationen (am besten nur Byte und Word)
Macht Technik dir das Leben schwör, ruf' schnell den EDV-Dompteur! ;-)

- Technische Fragen zu Eigenreparaturen bitte öffentlich im Forum stellen, nicht telefonisch! -

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Desi« (18. Juli 2013, 18:16)


Der Beitrag »Atmel Studio7 : Operator Bitweises NOT ( ~ )« von »Machtwas« (Montag, 24. Februar 2020, 11:13) wurde aus folgendem Grund vom Benutzer »EDV-Dompteur« gelöscht: Doppelposting in falschem Forenbereich. (Montag, 24. Februar 2020, 18:05).

Zur Zeit sind neben Ihnen 2 Benutzer in diesem Thema unterwegs:

2 Besucher