Anzeige:

Digitale Lösung für Schaltungen / Problem?

Hier finden sie die archivierten Beiträge des alten PHPBB Forums von www.loetstelle.net

mySmartUSB einrichten

Von gerold am 08.03.2008 12:14

Hallo passat2001!

Ich möchte noch einmal auf den mySmartUSB-Programmer eingehen, bevor ich mich auf Bascom stürze. Der mySmartUSB muss nämlich installiert, upgedated und eingestellt werden bevor man los legen kann.

Zum mySmartUSB wird eine CD mit Software mitgeliefert. Aber bei mir war es so, dass die Programme auf dieser CD nicht so aktuell waren, wie die die man im Internet herunterladen kann.

Hinweis: Der mySmartUSB darf vor der Installation der Treiber nicht angeschlossen werden. Für die Installation benötigt man Administratorrechte.

Die zugehörigen Treiber, Programme und Informationen kann man unter dieser URL herunterladen: http://myavr.de/download.php

Suche auf der Download-Seite nach diesen Dateien:

USB-Treiber für das myAVR Board 2 USB und mySmartUSB
Dieser Treiber erstellt einen virtuellen COM-Port, über den auf den mySmartUSB zugegriffen werden kann. Dieser Treiber ist wichtig und muss korrekt installiert werden. Entpacke die heruntergeladene ZIP-Datei in einen Ordner und lies die mitgelieferte PDF-Datei "Update der mySmartUSB Treiber_d_eng.pdf" gründlich durch und halte dich bei der Installation so gut wie möglich an die Anleitung. Wichtig! Verwende beim Einstellen des COM-Ports nur Adressen zwischen 1 und 4. Ansonsten kann man mit einigen Programmen nicht auf diesen COM-Port zugreifen. Verwendbar sind also nur COM1, COM2, COM3 und COM4.

Firmware für USB-Programmer
Beim Schreiben dieses Beitrages ist die Version 2.5 aktuell. Bevor das Firmwareupdate durchgeführt werden kann, muss der USB-Treiber installiert werden.
Entpacke die Zip-Datei und führe das darin enthaltene Programm aus. Das Programm führt durch die Installation.

myAVR Workpad PLUS, Demo
Dieses Programm ist zwar nur eine Demo-Version, aber damit kann man die Fuse-Bits der µC einstellen. Das funktioniert zwar auch mit anderen Programmen, aber bei weitem nicht so komfortabel. Das Programm kann man installieren und nach dem Start einige Minuten lang nutzen. Lange genug um damit die Einstellungen tätigen zu können.

myAVR ProgTool
Damit kann man Programme zum µC übertragen. In der nächsten Programmversion soll man endlich auch Kommandozeilenparameter beim Start des Programms angeben können. Damit könnte dieses Programm auch komfortabel aus Bascom heraus verwendet werden.

Kommandozeilen-Tool für mySmartUSB
Damit schaltet man den mySmartUSB in die verschiedenen Modi. Dieser kann nämlich nicht nur als Programmer arbeiten. Man kann ihn auch dazu verwenden um direkt mit den µControllern zu kommunizieren. Aber darauf gehe ich nicht weiter ein. Wichtig ist, nur, dass man dieses Tool braucht um den Programmer in den "Programmier-Modus" zu schalten.
Bitte gleich ausprobieren und den Programmer in den Programmier-Modus stellen. Der Programmer befindet sich im Programmier-Modus, wenn die rote LED leuchtet.

Produktbeschreibung zum USB Programmer mySmartUSB
durchlesen

Technische Beschreibung zu mySmartUSB
durchlesen

Der Einstieg für die Programmierung des myAVR Boards mit BASCOM
durchlesen

Eine Leseprobe aus dem myAVR Lehrbuch
Es ist sicher kein Fehler wenn man sich das mal durchliest. Aber bitte nicht vom darin gezeigten Assembler abschrecken lassen.

lg
Gerold
Smile

Der nächste Beitrag wird schon von Bascom handeln. Smile Und, liest das überhaupt jemand oder schreibe ich das hier ganz umsonst?

Bascom - Einstellungen

Von gerold am 08.03.2008 18:31

Hallo!

Na, dann kommen wir jetzt zu Bascom.

Bascom ist das Programm mit dem die Programme für den µC geschrieben werden. Die Vollversion kostet 80 Euro und ermöglicht es dir, auch Programme über 4 kByte Größe zu schreiben. Aber für den Anfang genügt die Demo-Version. Damit kann man schon einiges anstellen. Erst recht, wenn man bedenkt, dass der Flash-Speicher eines ATtiny45 auch nur 4 kByte groß ist.

Das Programm Bascom-AVR kann man sich bei MCS-Electronics unter http://mcselec.com/index.php?option=com_content&task=view&id=14&Itemid=41 herunterladen.

Im linken Bereich kann man das Programm schreiben und im rechten Bereich kann man mehrere Hilfsmittel einblenden. Ich habe dort oft die Pinbelegung des Chips eingeblendet. Es wird ein Bild des µC angezeigt, sobald aus dem Programm hervor geht, welcher µC programmiert wird. Das hilft enorm bei der Auswahl der richtigen Pins.



Die wichtigste Info kommt gleich vorab. Wenn man den Cursor (blinkender Strich) auf einen Befehl setzt und dann die F1-Taste drückt, dann bekommt man die Hilfe zu diesem Befehl angezeigt. Bitte gleich ausprobieren und merken. >>F1-Taste<<






Einstellungen:
Zu den Einstellungen kommt man über das Optionen-Menü. Und so sehen die Einstellungen bei mir aus:

Compiler - Chip:
http://halvar.at/elektronik/avr/bilder_der_bascom_einstellungen/compiler_chip.gif

Compiler - Output:
http://halvar.at/elektronik/avr/bilder_der_bascom_einstellungen/compiler_output.gif

Compiler - Communication:
http://halvar.at/elektronik/avr/bilder_der_bascom_einstellungen/compiler_communication.gif

Compiler - I2C, SPI, 1Wire:
http://halvar.at/elektronik/avr/bilder_der_bascom_einstellungen/compiler_i2c_spi_1wire.gif

Compiler - LCD:
http://halvar.at/elektronik/avr/bilder_der_bascom_einstellungen/compiler_lcd.gif

Compiler - Options:
http://halvar.at/elektronik/avr/bilder_der_bascom_einstellungen/compiler_options.gif

Communication:
http://halvar.at/elektronik/avr/bilder_der_bascom_einstellungen/communication.gif

Environment - Editor:
http://halvar.at/elektronik/avr/bilder_der_bascom_einstellungen/environment_editor.gif

Environment - Font:
http://halvar.at/elektronik/avr/bilder_der_bascom_einstellungen/environment_font.gif

Environment - IDE:
http://halvar.at/elektronik/avr/bilder_der_bascom_einstellungen/environment_ide.gif

Environment - PDF:
http://halvar.at/elektronik/avr/bilder_der_bascom_einstellungen/environment_pdf.gif

Simulator:
http://halvar.at/elektronik/avr/bilder_der_bascom_einstellungen/simulator.gif

Programmer:
http://halvar.at/elektronik/avr/bilder_der_bascom_einstellungen/programmer.gif

Monitor:
http://halvar.at/elektronik/avr/bilder_der_bascom_einstellungen/monitor.gif

Printer:
http://halvar.at/elektronik/avr/bilder_der_bascom_einstellungen/printer.gif

Wenn du Fragen hast -- einfach melden. Das hier ist ein Forum! Smile

mfg
Gerold
Smile

Von Corone am 09.03.2008 19:02

Uiuiui, das ist aber echt arg umfangreich hier. Schon mal darüber nachgedacht, diese Postings hier zu einem umfassenden "Einsteiger-HowTo" umzuarbeiten?

Von gerold am 09.03.2008 19:49

Corone hat folgendes geschrieben:
Uiuiui, das ist aber echt arg umfangreich hier. Schon mal darüber nachgedacht, diese Postings hier zu einem umfassenden "Einsteiger-HowTo" umzuarbeiten?

Hallo Corone!

Das werde ich später auch daraus machen. Aber zuerst mal hier im Forum ausarbeiten und auf Probleme eingehen. -- Falls diesen Thread noch irgendjemand liest. Rolling Eyes

mfg
Gerold
Smile


PS: Es wäre super, wenn jemand diesen Topic in das richtige Forum schieben könnte.

.

Von BellaD am 09.03.2008 20:46

Ich lese Wink immer noch und bin gespannt wie es weitergeht.

Zum Bascom hätte ich nur eine Frage , wie kommt man an das erzeugte Assembler file ran - bzw wo speichert er das ?

ansonsten weiter so

mfg

Von BellaD am 09.03.2008 21:16

Ich nochmal

Ich habe mir grad vor ein paar Tagen das Arduino Board (das alte einseitige) nachgebaut .
Das läuft mit einem ATmega 8 und es gibt eine menge Aufsteckboards (shields genannt) und auch fertige Anwendungen und Entwicklungssoftware im Netz.
Am besten gefällt mir das Programmpaket 'Liberlab' ,es liest 4 ADC kanäle und 6 IO Pins mit 56700 baud über die serielle Schnittstelle und stellt das in einer schönen Grafischen anwendung auf dem PC - (mac) in windoof oder linux dar . Diese erfordert allerdings die Installation von Pyhton auf dem Rechner dafür bringt das dann aber 500 messungen in der Sek. (theoretisch). Es ist zwar nicht direkt für den Arduino geschrieben aber geht trotzdem super.
Ich betreibe das mit einem Bootloader über rs232 ,sodas man zum programmieren kein extra Programmiergerät benutzen muss.

Ich muss nooch anmerken das ich nicht die Programmierumgebung/programmiersprache von Arduino benutze,weil das einfach zuviel wäre nu noch irgend so ein prohibitäres c++/basic gemisch reinzuziehen. Aber man findet doch schon einige nette Lösungen oder anregungen für eigene Entwicklungen .

http://www.arduino.cc/ ' homepage von arduino

http://www.liberlab.net/ ' homepage von liberlab ,franz. + eng. Wink

Von gerold am 09.03.2008 21:28

BellaD hat folgendes geschrieben:
wie kommt man an das erzeugte Assembler file ran

Hallo BellaD!

Bascom erzeugt keine Assembler-Files. Es kompiliert direkt Maschinencode. Das sind die BIN-/HEX-Dateien, die im Programmordner mitgespeichert werden.

Es gibt aber Disassembler, mit denen man aus diesen BIN-Dateien Assembler-Code machen kann. Zum Analysieren des Ablaufes sollte das aber genügen.

Gefundene Links:
- >> http://avr.jassenbaum.de/ja-tools/reavr.html <<
- http://www.johannes-bauer.com/avruc/index.php
- http://www.visi.com/~dwinker/revava/

mfg
Gerold
Smile

PS: Dieses "liberlab" behalte ich mir im Hinterkopf. Das scheint ein recht interessantes Stück Software zu sein.

Hallo Welt

Von gerold am 09.03.2008 21:59

Hallo!

Jetzt, da Bascom installiert ist, der Programmer funktioniert und geklärt wurde, wie der AVR-µC angeschlossen werden muss, könnte man schon mal mit einer kleinen "Hallo Welt"-Anwendung los legen.

Ich möchte dich aber vorher nochmal kurz mit ein wenig Theorie langweilen. Wink Es geht darum, wie so ein AVR-Controller die Aussenwelt sieht und wie man diese beeinflussen kann. Es geht darum, wie man einen Pin als Eingang oder als Ausgang verwenden kann.

In den AVR-µControllern wird jede Information im Speicher abgelegt. Ob an einem Pin ein Signal anliegt oder ob ein Analog-Digital-Wandler herausfinden soll, wieviel Volt an einem Pin anliegen -- alles steht im Speicher. Man kann diesen Speicher auslesen und man kann in diesen Speicher schreiben. Um sich die Adressen der Speicherbereiche nicht merken zu müssen, wurden den einzelnen Speicherbereichen Namen gegeben. Diese Speicherbereiche nennt man REGISTER. Ein Register enthält acht einzelne Ja/Nein-Werte (Bit). Deshalb nennt man die AVR auch 8-Bit Mikrocontroller.

8 Bit = 1 Byte = 1 Register

Und auch für die Pins gibt es solche Register. Es wurden immer bis zu acht Pins zusammengelegt und können über ein dafür festgelegtes Register angesprochen werden. Diese Register nennt man I/O-Register (Input/Output).

Der ATmega8 hat drei solche Register die für die Pins zuständig sind. Das sind PORTB, PORTC und PORTD. Und das muss man sich noch merken: Wenn man aus diesen I/O-Registern etwas lesen möchte, dann spricht man sie nicht mit PORTx, sondern mit PINx an. PINB, PINC und PIND.

In diesem Bild wird statt PORT/PIN einfach "P" verwendet.


Die einzelnen Pins werden mit 0 beginnend numeriert. So ist PORTB.0 die Adresse mit der man den Status des Pins PB0 setzen kann. Und mit PINB.0 liest man aus, ob am Pin PB0 ein HIGH oder LOW anliegt. Ach ja, das hätte ich fast vergessen: Wenn ich von HIGH und LOW schreibe, dann meine ich damit, dass entweder Spannung an den Pin gelegt wird (HIGH) oder der Pin gegen GND gezogen wird (LOW).

Wenn ich in Bascom PB0 auf HIGH setzen möchte, dann schreibt man:

Code:
PORTB.0 = 1

Mit diesem Befehl setzt man PB0 auf LOW:
Code:
PORTB.0 = 0

Und wenn ich z.B. PB1 auf HIGH setzen möchte, wenn PB0 LOW ist und umgekehrt, dann sieht das so aus:
Code:
IF PINB.0 = 0 THEN
    PORTB.1 = 1
ELSE
    PORTB.1 = 0
END IF

Bevor man allerdings mit einem der Pins arbeitet, muss man festlegen, welche Pins eines PORTs Eingänge und welche Ausgänge sind. Wenn man nichts verändert, dann sind nach dem Start des Programms alle Pins Eingänge.

Ob ein Pin des PORTB ein Eingang oder ein Ausgang ist, wird im Register DDRB gespeichert. Jeder Pin entspricht einem Bit dieses Registers. So gibt es für den ATmega8 noch die Register DDRC und DDRD in denen die Ausrichtungen der Pins gespeichert werden. DDR steht hier für "Data Direction Register".

Diese Anweisung kennzeichnet PB1 und PB2 als Ausgänge. Alle anderen Pins bleiben Eingänge.
Code:
DDRB = &B00000110

Erst jetzt kann mit ``PORTB.1 = 1`` der Pin PB1 auf HIGH gesetzt werden.

Es gibt noch eine andere Art, einen Pin als Eingang oder als Ausgang zu kennzeichnen.

Code:
CONFIG PINB.0 = INPUT
CONFIG PORTB.1 = OUTPUT
CONFIG PORTB.2 = OUTPUT

Manchmal ist es einfacher, wenn man es so macht und manchmal ist es einfacher, wenn man direkt in das DDRx-Register schreibt. Das muss man selber entscheiden.

Mit diesem Wissen könnte man also schon eine LED anschließen und ein- bzw. ausschalten. Jetzt fehlt uns nur noch das Grundgerüst des Programms.

Minimales Grundgerüst eines Programms:
Code:
$regfile = "M8def.dat"       'es handelt sich um einen ATmega8
$crystal = 1000000       'der eingebauter RC-Oszillator läuft mit 1 Mhz
$hwstack = 32       'im Speicher werden für den Hardware-Stack 32 Byte reserviert
$swstack = 10       'im Speicher werden für den Software-Stack 10 Byte reserviert
$framesize = 40       'im Speicher werden für den Frame 40 Byte reserviert

Ddrb = &B00000010       'PB1 ist Ausgang. Die anderen Pins sind Eingänge
Portb.1 = 1       'Signal auf PB1 einschalten (HIGH)

End       'Ende des Programms

Dieser Code schaltet PB1 auf HIGH. Damit könnte an PB1 eine LED angeschlossen werden und sie würde leuchten.

Ein Pin des ATmega8 kann mit bis zu 40 mA belastet werden. Allerdings darf die Gesamtbelastung des ATmega8 (je nach Gehäusetyp) nicht über 200 mA steigen. Es gibt da auch noch Unterschiede zwischen den einzelnen Anschlüssen. Wer es genau wissen will, sollte ins Datenblatt schauen. Eine LED würde also leuchten. Aber um den µC zu schonen, sollte man einen Pin nicht immer unter Vollast betreiben. Wenn schon direkt eine LED angeschlossen werden soll, dann bitte eine Low Current LED.

Ich muss jetzt Schluss machen. Morgen geht es mit diesem "Hallo Welt"-Programm weiter. Dann erkläre ich wie man das Programm eingibt, abspeichert, kompiliert und zum µC überträgt. Ich werde dann auch genauer auf das Programm-Grundgerüst eingehen und einen Schaltplan für den Anschluss einer LED zeichnen.

mfg
Gerold
Smile

mySmartUSB mit Bascom

Von gerold am 10.03.2008 10:19

Hallo!

Ich habe vor ein paar Tagen ein Email an den mySmartUSB-Support geschrieben. Dieses möchte ich euch nicht vorenthalten:

Frage:

Zitat:
Hallo!

Ich bin gerade dabei, eine Anleitung für AVR-Beginner zu schreiben.
Jetzt fehlt mir noch die Information, wie lange es noch dauern wird, bis

das "myAVR ProgTool" auch *per Kommandozeilenparameter* zum Übertragen
von HEX- oder BIN-Dateien herangezogen werden kann. In der Hilfe steht
zumindest, dass daran gearbeitet wird. Und viele Bascom-Benutzer warten
schon sehr darauf.

Es geht mir besonders um die Einbindung des mySmartUSB in Bascom. Diese
läuft ja derzeit über die Einstellung "AVR ISP Programmer". Das ist
nicht besonders schnell. Schneller geht es mit dem "myAVR ProgTool",
aber dieses Tool nimmt noch keine Kommandozeilenparameter an, so dass
man den Pfad zu den HEX-Dateien nicht beim Aufruf übergeben kann.

Ich wäre ihnen sehr dankbar, wenn sie mir mitteilen könnten, wie lange
es noch dauern wird, bis diese Möglichkeit in das "myAVR ProgTool"
eingebaut ist, oder ob es gute Alternativen gibt, die ich in meinem
Tutorial ansprechen kann.

mfg und vielen Dank,
Gerold Penz
Smile


Antwort:
Zitat:
Hallo Herr Penz,

sie können das "myAVR ProgTool" auch jetzt schon als externen Programmer
einstellen. Sie müssen dann lediglich beim ersten brennen eines
Projektes die zu brennende(n) Datei(en) auswählen.

Das ProgTool soll jetzt noch eine bessere Konfiguration für Fuse- und
Lock-Bits erhalten. Es wird also noch so 2-3 Wochen dauern, bis es eine
neue Version gibt.

Mit freundlichen Grüßen,
Ihr myAVR Team

mfg
Gerold
Smile

Hallo Welt - Fortsetzung

Von gerold am 10.03.2008 17:40

Hallo!

In diesem Beitrag möchte ich erklären, wie man das Programm eingibt, speichert, kompiliert und zum µC überträgt.

Starte Bascom-AVR. Über das Menü "Datei/Neu" wird ein neues Programm erstellt. Damit hast du in der linken Seite schon mal ein weißes Fenster in das du den Programmcode eingeben kannst. Gib diesen Code ein:

Code:
$regfile = "M8def.dat"       'es handelt sich um einen ATmega8
$crystal = 1000000       'der eingebaute RC-Oszillator läuft mit 1 Mhz
$hwstack = 32       'im Speicher werden für den Hardware-Stack 32 Byte reserviert
$swstack = 10       'im Speicher werden für den Software-Stack 10 Byte reserviert
$framesize = 40       'im Speicher werden für den Frame 40 Byte reserviert

Ddrb = &B00000010       'PB1 ist Ausgang. Die anderen Pins sind Eingänge
Portb.1 = 1       'Signal auf PB1 einschalten (HIGH)

End

Speichere das Programm unter dem Namen "hallo_welt_v01.bas" in den Ordner Eigene Dateien\Bascom-Programme\Hallo Welt\ ab.




Wenn du nun auf das Symbol zum Kompilieren klickst, dann wird das Programm in Maschinensprache umgewandelt.

Im Ordner Eigene Dateien\Bascom-Programme\Hallo Welt\ befinden sich nun ein paar Dateien mehr. Die HEX-Datei und die BIN-Datei enthalten jetzt das fertige Programm. Dieses muss jetzt nur noch zum µC übertragen werden.

Dafür müssen wir den µC über den Programmer an den Computer anschließen. Ich nehme für solche Testaufbauten gerne ein Steckbrett (Breadboard). Damit kann man die Schaltung recht einfach aufbauen und testen. Wenn man schon ein Experimentierboard wie das von Roland Walter oder das "ATMEL Evaluations-Board Version 2.0" von Pollin hat, dann sind solche Aufbauten noch viel einfacher. Dann muss man sich nicht mehr um so grundlegende Dinge wie Stromversorgung und Stecker für den Anschluss des Programmers kümmern.



Diese Schaltung sieht auf einem Steckbrett so aus:


Wenn der mySmartUSB in den Programmiermodus geschalten wurde, dann leuchtet die rote LED auf dem Programmer auf (das wurde in einem der vorherigen Beiträge erklärt).


Mit einem Klick auf die grüne Schaltfläche sollte das Übertragen des Programms beginnen. Und wenn alles geklappt hat, dann sollte jetzt auch die Low Current LED leuchten. "Hallo Welt!" Smile

Ich denke mal, dass jetzt ein paar Fragen auftauchen könnten. Dann mal raus damit.

mfg
Gerold
Smile

Anzeige: