Sie sind vermutlich noch nicht im Forum angemeldet - Klicken Sie hier um sich kostenlos anzumelden Impressum 
Sie können sich hier anmelden
Dieses Thema hat 22 Antworten
und wurde 5.345 mal aufgerufen
 Bascom - Unser Einsteigerkurs
Seiten 1 | 2
diezel Offline



Beiträge: 709

22.01.2013 00:33
[BEK04] Fusebits und Taktquellen STK500 Zitat · Antworten

Hallo,

ein wichtiges, aber auch oft heikles Thema, gerade wenn man nicht weiß was man tut. Darum nehmen wir dieses Thema gleich mal zu Anfang mit dran.
Die Fusebits sind eine Art Grundeinstellung des µC, mit denen man bestimmte Funktionen einstellen kann. Heikel daran ist, daß man sich durch falsche Einstellungen "aussperren" kann, d.h. man kann mit dem normalen ISP nicht mehr drauf programmieren und somit auch nicht mehr die Fusebits ändern. Das STK500 bietet zwar noch die Möglichkeit der "High-Voltage"-Programmierung (nachfolgend "HV"-Programmierung" genannt) und hat auch noch 2 Taktquellen drauf, jedoch wenn der µC in der Zielschaltung verlötet ist, kann z.B. "High-Voltage"-Programmierung nicht mehr möglich sein.
Hintergrund: während der HV-Programmierung liegen am Reset-Pin 12V an. Kann sein, daß dort angeschlossene Bauteile diese Spannung nicht überleben, oder andere Bauteile leiten die Spannung ab, so daß am µC nicht mehr die vollen 12V ankommen und damit die HV-Programmierung nicht mehr funktioniert.

Also gaaaanz wichtig: bevor man an den Fuse-Bits was verstellt, !!!GEHIRN EINSCHALTEN!!!


Wenn man jedoch weiß was man tut, ist´s halb so schlimm.

-------------------------------------------------------------------------------------------
hier mein aktueller TinyKatalog


diezel Offline



Beiträge: 709

22.01.2013 00:39
#2 RE: [BEK04] Fusebits und Taktquellen STK500 Zitat · Antworten

los geht´s...
Verbindet euer STK mit dem PC und startet Bascom. Dann gibt´s oben die Schaltfläche "Programm CHIP" und gleich nebendran ist ein kleiner Pfeil. Wenn ihr da drauf drückt, kommt eine kleine Auswahl und dort drückt ihr „manuell Programmieren“.
Im folgenden Fenster wechselt ihr auf die dritte Registerkarte „Lock and Fusebits“:
Fusebits.png - Bild entfernt (keine Rechte)

Die wählabren Möglichkeiten sind je nach µC verschieden, was jeweils dahinter steckt, steht im Datenblatt. Ich beschreibe mal die Einstellungen in der Reihenfolge, wie im Fenster dargestellt:

Calibraion Bytes:
Damit kann man den internen RC-Oscillator kalibrieren. Dieser kann im Auslierferungszustand um ± 10% abweichen. Dort spielen die Temperatur und die Spannung eine große Rolle. Hab ich selbst noch nicht gemacht, wenn´s genau gehen sollte, hab ich mich immer auf einen externen Quarz verlassen.

Lockbit 65 und Lockbit 43
da geht’s darum, ob die Assembler Befehle SPM und LPM tun dürfen. Grob gesagt kann man mit diesen Befehlen den Flash-Speicher zur Laufzeit verändern. Werden wir hier bestimmt nicht brauchen

Lockbit 21: Memory Lock
hiermit kann man das Programm vor dem Auslesen schützen, wenn dies nicht erwünscht ist.
Drei Sicherheitsstufen sind wählbar:
1. No Memory Lock: Das Programm und der Eeprom-Inhalt könne ohne weiteres ausgelesen werden. Das Programm liegt dann aber im Hex-Format vor. Es gibt zwar Disassembler die aus dem Hex ein Assembler Programm machen. Dies ist dann mit vieeel Mühe und Know-How wieder lesbar.
2. Further programming of the Flash and Eeprom is disabled...
Programm und Eeprom-Inhalt sind geschützt. Auch die Fuse- und Lockbits können nicht mehr verändert werden. Verification, also das Vergleichen mit einem Programm auf dem PC soll noch funktionen.
3. Further programming an verification...
da ist dann alles gesperrt.
Was aber immer noch geht, ist den Speicher auf dem µC zu löschen. Danach hat man einen Jungfräulichen µC im Auslieferungszustand (auch Inhalt Eeprom und Einstellungen der Fuse- und Lockbits sind gelöscht)

Fusebit C und B, Brown-Out-Detection (Abkürzung BOD)
Fällt die Versorgungsspannung unter die im Datenblatt angegebene Untergrenze, kann es zu Fehlverhalten des µC kommen. Manch Funktion mag dann streiken, Pins können ein Eigenleben entwickeln.
Um diese Unterspannung zu erkennen, wurde der BOD eingebaut. Tritt dieser in Kraft, wird ein Reset ausgelöst, das Programm wird abgebrochen und startet wieder neu. Am Anfang des Programms fragt man dann ab, ob ein Reset für den Start schuld war und kann darauf reagieren.
Eingeschaltet wird der BOD im Fusebit B: Enable BOD = Ein
im Fusebit C kann man die Spannungsschwelle einstellen

Fusebit KLA987: Auswahl der Taktquelle und Frequenz:
der µC braucht einen Taktgenerator, der ihn antreibt. Bildlich kann man es sich wie den Trommler auf einem Ruderboot vorstellen. Jedes mal, wenn die Trommel ertönt, folgt der nächste Ruderschlag. Der µC macht dann halt einen Arbeitsschritt.
Grundsätzlich können 3 verschiedene Taktquellen ausgewählt werden:
- interner RC-Oscillator mit seinen verschiedenen Frequenzen und Startzeiten
- externer RC-Oscillator mit verschiedenen Frequenzbereichen
- externer Quarz (=Crystal) mit verschiedenen Frequenzbereichen
Ich finde diese Auswahlmöglichkeiten mehr als bescheiden erklärt. Es fehlt die Angabe der Startzeiten völlig. Darum bin ich zum Fuse- und Lockbits setzen auf ein anderes Programm umgestiegen: MyAVR Workpad SE.
Ich nutze hier nur die Demo, die nur 15 Minuten am Stück nutzbar ist. Aber diese Zeit ist für meine Zwecke völlig ausreichend.

Fusebit High M: Pin PC6 is Reset
Hier kann man Einstellen, daß man den Reset-Pin als normalen Ein/Ausgang nutzen möchte. ACHTUNG: Programmierung über die ISP-Schnittstelle ist dann nicht mehr möglich. Es nutzt dann nur noch die HV-Programmierung

Fusebit High J: WDT enabled by WDTCR
der WDT, ausgeschrieben WatchDogTimer, ist der „Wachhund“ eures AVRs. Mit ihm kann man überwachen, ob das Programm in der Ausführung irgendwo hängengeblieben ist, weil es z.B. ewig auf eine Eingabe wartet. Dieses Hilfsmittel werden wir gegen Ende des Kurses mal an einem Beispiel durchkauen.

Fusebit High I: SPI enabled
Hiermit kann die SPI-Schnittstelle ausgeschaltet werden. Auch hier gilt:
ACHTUNG: Programmierung über die ISP-Schnittstelle ist dann nicht mehr möglich. Es nutzt dann nur noch die HV-Programmierung

Fusebit High H: CKOPT 1
Dies ist ein Bit, daß bei bestimmten Einstellungen der Frequenz und Taktquelle gesetzt werden muß → Datenblatt !!!

Fusebit High G: Erase Eeprom when Chip erase
der Eeprom-Inhalt wird beim übertragen eures Programms auf den µC normalerweise gelöscht, außer ich schützt es hiermit: „Preserve Eeprom...“ ist dann die richtige Einstellung

Fusebit High FE und D: Einstellungen für Nutzung Bootloader
ein Bootloader ist ein auf dem µC gespeichertes Programm, das es z.B. ermöglicht, ein neues Programm ohne Programmiergerät auf den µC zu übertragen. Dieses kann z.B. über die serielle Schnittstelle übertragen werden. In den Fusebits muß man Einstellen, wie groß der durch den Bootloader belegte Speicherplatz ist und an welchen Speicherort der µC nach einem Reset springen soll.

Das wären erstmal die Fusebits von unserem Mega8. Andere µC haben andere Möglichkeiten und Funktionen, die in den Fusebits eingestellt werden können. Ich möchte hier nur noch kurz auf die JTAG-Schnittstelle eingehen. JTAG ist eine Schnittstelle mit der man den µC während der Laufzeit debuggen kann. Sie ist meist in den Grundeinstellungen aktiv, bestimmte Pins funktionieren dann nicht wie gewohnt, z.B. beim Atmega16 auf dem PortC. Wer es also nicht nutzt, muß es deaktivieren.

-------------------------------------------------------------------------------------------
hier mein aktueller TinyKatalog


diezel Offline



Beiträge: 709

22.01.2013 00:55
#3 RE: [BEK04] Fusebits und Taktquellen STK500 Zitat · Antworten

auf der rechten Seite findet man noch paar Schaltflächen:

Refresh
liest die Fuse- und Lockbits nochmals aus dem µC aus. Nicht übertragene Änderungen werden verworfen

4 Write Buttons
damit kann man einzelne Teile der Fusebits übertragen

Write PRG
damit werden die gerade eingestellten Fusebits im Programm abgespeichert. Es wird dazu am Ende des Programms eine Zeile eingefügt.

Oben in den Symbolleisten sind diverse Befehle, z.B.
- Write Buffer to Chip: die Fusebits werden zum µC übertragen
- Read Code into Buffer: liest die Fusebits aus dem µC



Bitte laßt euch von den vielen neuen Begriffen nicht abschrecken. Ich habe die meisten nur angeschnitten, um euch nicht gleich zu überrumpeln. Aber ich möchte auch nichts verschweigen. Ihr habt jetzt zumindest mal was davon gehört, falls ihr mal eine der Funktionen braucht, hilft das Datenblatt und ganz häufig diverse Internet-Foren und Artikel.


Gruß
Gerhard

-------------------------------------------------------------------------------------------
hier mein aktueller TinyKatalog


diezel Offline



Beiträge: 709

22.01.2013 20:24
#4 RE: [BEK04] Fusebits und Taktquellen STK500 Zitat · Antworten

Hallo,

im Anhang 3 Bilder vom MyAVR Workpad SE, das ich zum Fusebits-Setzen verwende.
Dort ist es besser gelöst, viel übersichtlicher. Die Einstellungen sind dort auf 3 "Registerkarten" verteilt.

-------------------------------------------------------------------------------------------
hier mein aktueller TinyKatalog

Angefügte Bilder:
Aufgrund eingeschränkter Benutzerrechte werden nur die Namen der Dateianhänge angezeigt Jetzt anmelden!
 workpad1.png  workpad2.png  workpad3.png 

diezel Offline



Beiträge: 709

22.01.2013 20:30
#5 RE: [BEK04] Fusebits und Taktquellen STK500 Zitat · Antworten

im Internet gibt´s noch den AVR Fusebit Calculator als Webapp:
http://www.engbedded.com/fusecalc/

für Android gibt´s natürlich auch eine App:
https://play.google.com/store/apps/details?id=com.misc.avrfuse

Last but not Least, im AVR-Studio geht´s natürlich auch. Ist aber - leider - der Umsetzung in Bascom recht ähnlich.


Mit welchem Programm ihr euch besser zurechtfindet, muß jeder selbst entscheiden. Einfach mal reinschauen...

-------------------------------------------------------------------------------------------
hier mein aktueller TinyKatalog


diezel Offline



Beiträge: 709

22.01.2013 20:39
#6 RE: [BEK04] Fusebits und Taktquellen STK500 Zitat · Antworten

wer es dann mal geschafft hat, in den Fusebits eine andere Taktquelle auszuwählen, der muß auf dem STK auch die passende Taktquelle verwenden.
Dazu sind auf dem STK zwei Jumper, die richtig gesteckt werden müssen: "OSCEL" und "XTAL1".
Hier ein Bild aus dem "AVR Tools User Guide" aus der Hilfe vom AVR-Studio:
STK500_Takt.png - Bild entfernt (keine Rechte)
Damit kann man 3 Möglichkeiten für die Taktquelle wählen:
1. bei Verwendung des internen RC-Oscillators öffnet ihr den Jumper XTAL1 und trennt damit die externe Taktquelle. Den entsprechenden Pin kann man dann für was anderes verwenden.
2. Bei Verwendung des externen Quarzes muß XTAL1 gesteckt werden und mit dem Jumper OSCEL die Verbindung 2-3 hergestellt werden.
3. Man verwendet den Taktgenerator vom STK500, dessen Geschwindigkeit über das AVR-Studio einzustellen ist. Hierfür muß OSCEL auf 1-2 gesteckt und XTAL1 ebenfalls gesteckt sein


So weit sollte für´s erste mal alles zum Thema geschrieben sein. Fragen?


Gruß
Gerhard

-------------------------------------------------------------------------------------------
hier mein aktueller TinyKatalog


xenton Offline




Beiträge: 805

23.01.2013 08:50
#7 RE: [BEK04] Fusebits und Taktquellen STK500 Zitat · Antworten

Nö, meinerseits erstmal keine Fragen.
Ich wollte nur ein Lob loswerden: Du machst das echt klasse mit dem Kurs. Was Du da für Arbeit reinsteckst. Respekt!
Gerade die Fuses werden ja oft stiefmütterlich behandelt. Dabei sind die doch so wichtig!

Kleiner Tip am Rande: Das speichern der Fuses im Programm halte ich für nicht empfehlenswert.
Man schreibt das einmal rein. 'Nen Jahr später holt man den Code wieder raus, ändert ihn und will ihn brennen. Natürlich schön die Fuses angepasst, weil man jetzt z.B. mit internem Takt arbeiten will. Und... nix geht mehr, da die im Code gespeicherten Fuses die händisch eingestellten überschreiben und man natürlich vergessen hat die alten zu löschen und nochmal PRG zu drücken. Da hilft dann nur eine externe Taktquelle anzuschließen oder HV-Programmierung, die ja, wie Gerhard schon geschrieben hat, nicht immer möglich ist.

Das ganze ist mir schon mehrfach passiert (bis ich überhaupt kapiert hatte wie der Hase läuft). Zum Glück hatte ich noch einen Keramikoszillator um den Chips wieder leben einzuhauchen.

Gruß, Martin

>>> Hilfe! Mein Ball ist umgefallen! <<<

http://www.microtruckracing.de - http://mikromodellbau.voll-der-hammer.de


diezel Offline



Beiträge: 709

23.01.2013 21:39
#8 RE: [BEK04] Fusebits und Taktquellen STK500 Zitat · Antworten

Hallo Martin,

Zitat von xenton im Beitrag #7
Ich wollte nur ein Lob loswerden: Du machst das echt klasse mit dem Kurs. Was Du da für Arbeit reinsteckst. Respekt!

Naja, ich versuch da nur den Spagat zu schaffen, einerseits möglichst viele Dinge zu vermitteln um nicht halbe Sache zu machen und andererseits den Neueinsteiger nicht gleich mit den vielen neuen Begriffen zu überfordern. Ich beschränke mich meist eh nur auf das Wichtigste. Wirklich jedes Thema können wir hier eh nicht ausführlich behandeln, aber zumindest sollte man schon mal was davon gehört haben. Weitere Infos findet der Neugierige zu Hauf im Web.
Aaaaber, wir sind ja erst am Anfang...
Zitat von xenton im Beitrag #7
Das ganze ist mir schon mehrfach passiert (bis ich überhaupt kapiert hatte wie der Hase läuft). Zum Glück hatte ich noch einen Keramikoszillator um den Chips wieder leben einzuhauchen.

Willkommen im Club :-)


Gruß
Gerhard

-------------------------------------------------------------------------------------------
hier mein aktueller TinyKatalog


Tüftler_Senior Offline




Beiträge: 79

25.01.2013 21:29
#9 RE: [BEK04] Fusebits und Taktquellen STK500 Zitat · Antworten

Hallo Gerhard

Auch ich muss dich Loben!
Der Kurs ist super und du hast auch schon so
einige Probleme gelöst!
Ich habe schon wieder eins

Auf dem Menüpunkt „manuell Programmieren“, geht bei mir
kein Fenster auf!?!?

Endschuldige: aber immer habe ich als einziger solche Probleme

Gruß Michael


diezel Offline



Beiträge: 709

25.01.2013 21:54
#10 RE: [BEK04] Fusebits und Taktquellen STK500 Zitat · Antworten

Hallo Michael,

hmmm... hast Du in den Bascom Optionen bei Programmer alles richtig ausgefüllt? Stimmt der Pfad zur "STK500.exe"?
Geht´s bei jemand anderem?


Gruß
Gerhard

-------------------------------------------------------------------------------------------
hier mein aktueller TinyKatalog


diezel Offline



Beiträge: 709

28.01.2013 20:34
#11 RE: [BEK04] Fusebits und Taktquellen STK500 Zitat · Antworten

macht sonst keiner mit?


Gruß
Gerhard

-------------------------------------------------------------------------------------------
hier mein aktueller TinyKatalog


zampes Offline



Beiträge: 88

28.01.2013 21:26
#12 RE: [BEK04] Fusebits und Taktquellen STK500 Zitat · Antworten

Hallo Gerhard,
auch von mir ein Lob für die ausführliche Anleitung.
Bis jetzt funktioniert alles.

Gruß Dirk


Danexim Offline



Beiträge: 35

29.01.2013 05:23
#13 RE: [BEK04] Fusebits und Taktquellen STK500 Zitat · Antworten

Hallo Gerhard,

ich werde wohl erst am Wochenende wieder dazu kommen mich mit dem Programmieren zu befassen.
Aber schon einmal vielen Dank für die umfangreichen Informationen zu diesem Thema.

So - jetzt auf zur Arbeit.

Klaus


Scotch Offline




Beiträge: 415

31.01.2013 23:35
#14 RE: [BEK04] Fusebits und Taktquellen STK500 Zitat · Antworten

Zitat von diezel im Beitrag #11
macht sonst keiner mit?


Gruß
Gerhard


Hallo Gerhard,
doch, doch... hatte jetzt nur ein wenig andere Sachen um die Ohren.
Die Erklärung der Fuse Bits finde ich sehr gut.
Auch von mir ein Lob für Deine Arbeit.

@Tüftler_Senior
welche Bascom Version hast Du?
Ich hab zwei unterschiedliche Versionen und wenn ich bei beiden die Einstellungen
gleich mache, hab ich bei der einen Version nur ein schwarzes DOS Fenster welches kurz auf geht
und bei der anderen Version geht das Fenster, welches von Gerhard beschrieben wurde, auf.
Gruß Ingo

------------------------------------------

Meine Webseite


diezel Offline



Beiträge: 709

31.01.2013 23:58
#15 RE: [BEK04] Fusebits und Taktquellen STK500 Zitat · Antworten

Zitat von Scotch im Beitrag #14
Auch von mir ein Lob für Deine Arbeit.

Dank Dir und auch an die vorherigen Poster!!!

Zitat von Scotch im Beitrag #14
Ich hab zwei unterschiedliche Versionen

Nenn bitte die 2 Versionsnummern, würd mich auch interessieren.


Gruß
Gerhard

-------------------------------------------------------------------------------------------
hier mein aktueller TinyKatalog


Seiten 1 | 2
 Sprung  

disconnected Mikromodell-Chat Mitglieder Online 1
Xobor Xobor Community Software
Datenschutz