www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega8 16Mhz Quarz Fusebits setzen


Autor: florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich hab für meinen Atmega8 und einen 16Mhz Quarz folgende "fusebits" mit 
dem
"calculator" von hier http://www.engbedded.com/fusecalc/ (ich hab 
startup auf 4ms und 16k ck gesetzt)

-U lfuse:w:0xef:m -U hfuse:w:0xd9:m

Ich benutze aber eigentlich das Makefile von mikrocontrollerspielewiese. 
Da gibt es den Befehl "make wrfusecrystal". Meine Frage ist jetzt ob 
damit die richtigen Fusebits wie die berechneten gesetzt werden.

MfG flo

Autor: Franz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
push

das interessiert mich jetzt aber auch, wie man einen atmega8 dazu 
bekommt mit 16mhz zu laufen.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>das interessiert mich jetzt aber auch, wie man einen atmega8 dazu
>bekommt mit 16mhz zu laufen.

TLC555 als Taktgenerator und auf externen Takt fusen. Brauchst dann aber 
schon
ziemlich große Widerstände und Kondensatoren.

Bei Beachtung von Groß- und Kleinschreibung wäre dir diese
Antwort erspart geblieben.

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Franz schrieb:
> das interessiert mich jetzt aber auch, wie man einen atmega8 dazu
> bekommt mit 16mhz zu laufen.

Datenblatt lesen, dann labern! Gegen 16 MHz spricht rein garnichts...

holger schrieb:
> TLC555 als Taktgenerator und auf externen Takt fusen. Brauchst dann aber
> schon
> ziemlich große Widerstände und Kondensatoren.

genau - ab in die erste Klasse. PS: der 555 geht nur bis 2 MHz.

holger schrieb:
> Bei Beachtung von Groß- und Kleinschreibung wäre dir diese
> Antwort erspart geblieben.

Wenn du mal dein Hirn einschalten würdest, keine bescheuerten Kommentare 
posten würdest, dann würde hier vielleicht mal was produktives 
rauskommen und das ganze wird kein Off-Topic!

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>genau - ab in die erste Klasse. PS: der 555 geht nur bis 2 MHz.

Es geht um 16mhz. In Worten: 16 MilliHertz

Den Rest von  Holger nun auch verstanden?

MfG Spess

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
toll und meint ihr jetzt, dass ihr irgendwas sinnvolles zur 
Problemlösung beigetragen habt? PS: Die Frage war rein rethorisch und 
die Antwort lautete NEIN. Also lasst den Schrott und gebt euren Senf 
dazu wenn's was sinnvolles ist.

Nachdem ich nicht weiterhelfen kann, will ich Vorbild sein und bin darum 
jetzt auch still.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI

>toll und meint ihr jetzt, dass ihr irgendwas sinnvolles zur...

"Satiren, die der Zensor versteht, werden mit Recht verboten."

Karl Kraus

MfG Spess

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also laut Datenblatt müsste es gehen, hat noch jemand eine Antwort auf 
meinen ersten Beitrag?
MfG flo

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.mikrocontroller.net/articles/AVR_Fuses#...

Aber was es mit dieser mikrocontrollerspielewiese und ihrem 'make' auf 
sich hat, weiß ich auch nicht.

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also in dem Makefile wird dieser Befehl ausgeführt:
./prg_fusebit_uc -w 0

kennt denn einer? von der spielewiese hab ich bis jetzt keine antwort

mfg flo

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also ich hab das file pr_fusebit_uc im netz gefunden aber des wird auf 
der spielwiese nicht verwendet, da in dem Makefile mit dem dort die 
fusebits gesetzt werden direkt der Befehl für den avrdude steht. ich hab 
aber kein avrdude :-)
#!/bin/sh 
prg="adude"
#
help()
{
  echo "prg_fusebit_uc -- read and write fuse bits of the atmega8"
  echo ""
  echo "Usage: prg_fusebit_uc [-hu] -r|-w Freq"
  echo ""
  echo "OPTIONS: -h this help"
  echo "         -r read fuse bytes"
  echo "         -u use uisp instead of avrdude"
  echo "            avrdude can automatically detect dapa or avrusb500."
  echo "            uisp can only be used with the parallel port dapa."
  echo "         -w write fuse bytes such that a given Freq is used"
  echo "            a frequency of 0 means external crystal. Possible"
  echo "            values are 0,1,2,4,8"
  echo ""
  echo "EXAMPLE: program the fuses to 4MHz internal"
  echo "         prg_fusebit_uc -w 4"
  echo ""
  echo "Warning: you can not undo the setting \"external crystal\" unless"
  echo "         you have a crystal that works."
  echo "This script can be easily adapted to different programmer types"
  exit 0
}
while [ -n "$1" ]; do
case $1 in
    -h) help;shift 1;;
    -u) prg="uisp";shift 1;;
    -r) opt_r="1";shift 1;;
    -w) opt_w="1";freq="$2";shift 2;;
    -*) echo "error: no such option $1. -h for help";exit 1;;
    *)  break;;
esac
done

if [ -z "$opt_r" -a  -z "$opt_w" ];then
  # one of those options is mandatory
  help
fi

hf=0xd9
if [ "$opt_w" = "1" ]; then
  case $freq in
      0) lf=0xee;echo "Make sure you have a crystal otherwise you can not change this!";sleep 2;;
      1) lf=0xe1;;
      2) lf=0xe2;;
      4) lf=0xe3;;
      8) lf=0xe4;;
      *) echo "error: no such frequency, -h for help";exit 1;;
  esac
fi


if [ "$prg" = "uisp" ]; then
  if [ "$opt_r" = "1" ];then
    set -x
    uisp -dlpt=/dev/parport0 -dprog=dapa --rd_fuses
    set +x
    echo "Explanation: Fuse Low Byte: 0xe1 (1MHz intern), 0xe3 (4MHz intern), "
    echo "             0xe4 (8MHz intern)"
    echo "             Fuse High Byte should be 0xd9"
    exit 0
  fi
  if [ "$opt_w" = "1" ]; then
    set -x
    uisp -dlpt=/dev/parport0 -dprog=dapa --wr_fuse_l=$lf
    uisp -dlpt=/dev/parport0 -dprog=dapa --wr_fuse_h=$hf
    set +x
    exit 0
  fi

fi
if [ "$prg" = "adude" ]; then
  if grep "Vendor=0403 ProdID=6001" /proc/bus/usb/devices > /dev/null ; then
    prg="avrusb500"
  else
    prg="dapa"
  fi
  if [ "$opt_r" = "1" ];then
    set -x
    avrdude -p m162 -c $prg -v -q
    set +x
    echo "Explanation: Fuse Low Byte: 0xe1 (1MHz intern), 0xe3 (4MHz intern), "
    echo "             0xe4 (8MHz intern)"
    echo "             Fuse High Byte should be 0xd9"
    exit 0
  fi
  if [ "$opt_w" = "1" ]; then
    set -x
    avrdude -p m162 -c $prg -u -v -U lfuse:w:$lf:m
    avrdude -p m162 -c $prg -u -v -U hfuse:w:$hf:m
    set +x
    exit 0
  fi
fi

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Florian schrieb:
> Also in dem Makefile wird dieser Befehl ausgeführt:
> ./prg_fusebit_uc -w 0

Und

Florian schrieb:
> also ich hab das file pr_fusebit_uc im netz gefunden aber des wird auf
> der spielwiese nicht verwendet, da in dem Makefile [..] direkt der Befehl
> für den avrdude steht.

Ja wattenu - heißt es prg_fusebit_uc oder pr_fusebit_uc und wird es im 
Makefile verwendet oder nicht?

Florian schrieb:
> ich hab
> aber kein avrdude :-)

Das lässt sich ändern.  Google existiert.

Welches Betriebssystem verwendest Du?  Das Skript, das Du als 
pr_fusebit_uc  hereinkopiert hast, ist für Linux und dürfte selbst dort 
mit einigen aktuellen Distributionen, z.B. Ubuntu, nicht ohne 
Verrenkungen laufen (da es /proc/bus/usb verwendet).

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Florian schrieb:

> fusebits gesetzt werden direkt der Befehl für den avrdude steht. ich hab
> aber kein avrdude :-)
>


Womit brennst du dann?

Ich würde dieses prg_fusebit_uc ganz schnell vergessen.

Wenn du dir die Mühe machst, die ganze Fusebit Einstellerei einmal zu 
verstehen, mit deinem Brennprogramm die bestehenden Fusebits ausliest 
und mit dem Datenblatt vergleichst (oder mit dem Fusebit-Calculator 
auseinandernehmen), vorsichtig bist und lieber 3 mal überlegst ob das 
was du tust überhaupt Sinn macht, dann ist das alles keine Hexerei.

Du darfst nur nicht mit der Einstellung rann gehen: Ich hab da im Web 
irgendwo irgendwann diese Fuseeinstellung gesehen, ich weiß zwar nicht 
was die bedeutet, aber ich brenn die mal in den Chip.

An dieser Stelle willst du dich genau informieren. An dieser Stelle 
willst du die relevante Stelle im Datenblatt lieber 3 mal lesen, bis du 
alles verstanden hast. An dieser Stelle willst du die im µC vorhandenen 
Fuses auslesen und mit dem Datenblatt vergleichen und das 
Erfolgserlebnis haben, dass deine Fuse-Dekodierung tatsächlich 100% mit 
dem Datenblatt übereinstimmt. An dieser Stelle willst du dich selber so 
weit bringen, dass du dir sicher bist, dass du genau weißt was du tust, 
wenn du 1 Fuse umstellst.

Das klingt jetzt alles aufwändig. Aber nach einer halben Stunde bist du 
soweit, dass du sagen kannst: Yo, ich bin mir 100% sicher, dass die 
CKSEL Fuses so und so stehen müssen; in meinem Brennprogramm bedeutet 
das, dass ich hier und hier ein Häkchen machen muss bzw. ein Häkchen 
rausnehmen muss bzw. dass im FuseByte dieses und jenes Bit gesetzt sein 
muss.

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Avrdude unterstüzt laut dem Artikel auf der seite 
http://www.mikrocontroller.net/articles/AVRDUDE Parallelport Programmer. 
Ich habe mir für mein Makefile folgende Befehle überlegt, kann mir 
jemand sagen ob das so funktioniert? oder wird das nichts?
#der Programmieradapter ist ein Parallel Programmer wie #Mikrocontrollerspielewiese:
PROGRAMMER = -c dapa




# use external crystal
wrfusecrystal:
  clear
  @echo "Warnung: Das Setzen des Quarz-Fusebits kann nur mit Quarz rueckgaengig gemacht werden!"
  @echo "         Du hast 15 Sekunden, um mit crtl-c abzubrechen."
  @echo
  @echo "Warning: The external crystal setting can not be changed back without a working crystal"
  @echo "         You have 15 seconds to abort this with crtl-c"
  @sleep 15
  
    avrdude -p m8 $(PROGRAMMER) -u -v -U lfuse:w:0xef:m
    avrdude -p m8 $(PROGRAMMER) -u -v -U hfuse:w:0xd9:m


Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.