Atmega8 16Mhz Quarz Fusebits setzen

Gast #1800289
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
Gast #1800440
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.
#1800453
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!
#1800467
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.
Gast #1800687
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 :-)
1
#!/bin/sh 
2
prg="adude"
3
#
4
help()
5
{
6
  echo "prg_fusebit_uc -- read and write fuse bits of the atmega8"
7
  echo ""
8
  echo "Usage: prg_fusebit_uc [-hu] -r|-w Freq"
9
  echo ""
10
  echo "OPTIONS: -h this help"
11
  echo "         -r read fuse bytes"
12
  echo "         -u use uisp instead of avrdude"
13
  echo "            avrdude can automatically detect dapa or avrusb500."
14
  echo "            uisp can only be used with the parallel port dapa."
15
  echo "         -w write fuse bytes such that a given Freq is used"
16
  echo "            a frequency of 0 means external crystal. Possible"
17
  echo "            values are 0,1,2,4,8"
18
  echo ""
19
  echo "EXAMPLE: program the fuses to 4MHz internal"
20
  echo "         prg_fusebit_uc -w 4"
21
  echo ""
22
  echo "Warning: you can not undo the setting \"external crystal\" unless"
23
  echo "         you have a crystal that works."
24
  echo "This script can be easily adapted to different programmer types"
25
  exit 0
26
}
27
while [ -n "$1" ]; do
28
case $1 in
29
    -h) help;shift 1;;
30
    -u) prg="uisp";shift 1;;
31
    -r) opt_r="1";shift 1;;
32
    -w) opt_w="1";freq="$2";shift 2;;
33
    -*) echo "error: no such option $1. -h for help";exit 1;;
34
    *)  break;;
35
esac
36
done
37

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

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

55

56
if [ "$prg" = "uisp" ]; then
57
  if [ "$opt_r" = "1" ];then
58
    set -x
59
    uisp -dlpt=/dev/parport0 -dprog=dapa --rd_fuses
60
    set +x
61
    echo "Explanation: Fuse Low Byte: 0xe1 (1MHz intern), 0xe3 (4MHz intern), "
62
    echo "             0xe4 (8MHz intern)"
63
    echo "             Fuse High Byte should be 0xd9"
64
    exit 0
65
  fi
66
  if [ "$opt_w" = "1" ]; then
67
    set -x
68
    uisp -dlpt=/dev/parport0 -dprog=dapa --wr_fuse_l=$lf
69
    uisp -dlpt=/dev/parport0 -dprog=dapa --wr_fuse_h=$hf
70
    set +x
71
    exit 0
72
  fi
73

74
fi
75
if [ "$prg" = "adude" ]; then
76
  if grep "Vendor=0403 ProdID=6001" /proc/bus/usb/devices > /dev/null ; then
77
    prg="avrusb500"
78
  else
79
    prg="dapa"
80
  fi
81
  if [ "$opt_r" = "1" ];then
82
    set -x
83
    avrdude -p m162 -c $prg -v -q
84
    set +x
85
    echo "Explanation: Fuse Low Byte: 0xe1 (1MHz intern), 0xe3 (4MHz intern), "
86
    echo "             0xe4 (8MHz intern)"
87
    echo "             Fuse High Byte should be 0xd9"
88
    exit 0
89
  fi
90
  if [ "$opt_w" = "1" ]; then
91
    set -x
92
    avrdude -p m162 -c $prg -u -v -U lfuse:w:$lf:m
93
    avrdude -p m162 -c $prg -u -v -U hfuse:w:$hf:m
94
    set +x
95
    exit 0
96
  fi
97
fi
#1800748
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).
#1800767
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.
Gast #1800768
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?
1
#der Programmieradapter ist ein Parallel Programmer wie #Mikrocontrollerspielewiese:
2
PROGRAMMER = -c dapa
3

4

5

6

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren