Forum: Mikrocontroller und Digitale Elektronik Fuses nicht richtig AVR Studio 6


von Lars (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Miteinander,

ich habe die SuFu benutzt und weiß auch, das die Fuses schon sehr oft 
durchgesprochen wurden, jedoch habe ich trotzdem noch ein Problem mit 
der AVR Studio Version 6:

Ich bin nach einiger Zeit mit einer kleinen Schaltung wieder angefangen 
um mich mit einem ATmega8 zu beschäftigen. Das Programm welches ich für 
das programmieren verwende ist AVR Studio 6. Ich hab sonst immer Version 
4 verwendet, aber nachdem mein Dragon ein Update bekommen hat ist das 
nicht mehr möglich.

Die Schaltung soll mit einem externen Quarz betrieben werden, aber ich 
mache anscheinend falsche Fuse einstellungen, weil mich schon der zweite 
µC ausgeschlossen hat. Das Programm an sich läuft, nur bisher mit dem 
internen Takt und daher blinkt meine LED in der falschen 
Geschwindigkeit.

Kann mir vielleicht jemand sagen, wo ich den Takt noch einstellen muss 
und welche Häckchen gesetzt sein müssen und welche nicht? Standardmässig 
war bei meinen ersten Versuchen SPIEN gesetzt und SUT_CKSEL habe ich auf 
"EXTHIFXTALRES_16KCK_64MS" gestellt. BOOTSZ war auf "1024_0C00" und 
BODLEVEL auf "2V7".

Dies ist das Testprogramm, welches ich zum laufen haben möchte:
1
#include <avr/io.h>
2
#include <util/delay.h>
3
#include <stdint.h>
4
5
/* define CPU frequency in Mhz here if not defined in Makefile */
6
#ifndef F_CPU
7
#define F_CPU 7372800UL
8
#endif
9
10
11
12
// LED Defines
13
// Hier müssen die richtigen Angaben hin
14
#define LED_DDR     DDRB        // DDRA, DDRB...
15
#define LED_PORT    PORTB       // PORTA, PORTB...
16
#define LED_PORTPIN PB1         // PA0, PA1..., PB0, PB1...
17
#define RELAIS_PORTPIN PB0         // PA0, PA1..., PB0, PB1...
18
19
int main(void)
20
{
21
  // Den Pin, an den die LED angeschlossen ist, als Ausgang setzen
22
  LED_DDR |= (1 << LED_PORTPIN);
23
  LED_DDR |= (1 << RELAIS_PORTPIN);
24
  
25
  // Die LED die ganze Zeit an- und ausschalten
26
  while(1)
27
  {
28
    // Den Portpin auf high setzen
29
    LED_PORT |= (1 << LED_PORTPIN);
30
    LED_PORT |= (1 << RELAIS_PORTPIN);
31
    // 1 Sekunde warten
32
    wait();
33
34
    // Den Portpin auf low setzen
35
    LED_PORT &= ~(1 << LED_PORTPIN);
36
    LED_PORT &= ~(1 << RELAIS_PORTPIN);
37
    // 1 Sekunde warten
38
    wait();
39
  }
40
}
41
42
// Diese Funktion lässt den Controller ms Millisekunden warten.
43
// Die while-Schleife wird so oft durchlaufen,
44
// wie der Funktion übergeben wurde.
45
// Bei jedem Duchlauf wir noch 1ms gewartet.
46
47
void wait ()
48
{
49
  int volatile i;
50
  
51
  for (i=0; i<50; i++)
52
  _delay_ms(20);
53
}

Ich würde mich sehr über Hinweise freuen, dankeschön

von troll (Gast)


Lesenswert?

Er schafft es nicht die Fuses zu lesen und schreibt dann natürlich 
Blödsinn  zurück.

von Lars (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe jetzt noch mal einen neuen Controller eingesteckt und eine 
aufnahme von dem gemacht, was AVR Studio aus den Einstellungen lesen 
kann, ich hoffe das hilft weiter,

Danke

von MWS (Gast)


Lesenswert?

Bevor Du die Fuses schreibst, kontrolliere die Werte für Fuse Register 
High und Low hiermit:
http://www.engbedded.com/fusecalc/

von Spess53 (Gast)


Lesenswert?

Hi

>Die Schaltung soll mit einem externen Quarz betrieben werden, aber ich
>mache anscheinend falsche Fuse einstellungen, weil mich schon der zweite
>µC ausgeschlossen hat.

Vielleicht ist einfach nur der Quarz nicht richtig angeschlossen. 
'EXTHIFXTALRES_16KCK_64MS' sollte eigentlich passen.

MfG Spess

von troll (Gast)


Lesenswert?

Kondensatoren am Quarz?
Foto vom Aufbau?

von Lars (Gast)


Lesenswert?

Ich hatte nur noch zwei SMD Kondansatoren, 22p habe ich verwendet, 
sollte doch richtig sein, oder?

von troll (Gast)


Lesenswert?

22p passt.
troll schrieb:
> Foto vom Aufbau?

von Lars (Gast)


Angehängte Dateien:

Lesenswert?

Leider kann ich nicht besser Fokusieren... Es ist nicht viel zu sehen, 
ich weiß, ich habe die beiden Kondensatoren direkt an die Beinchen vom 
Quarz gegen Masse geführt.

von troll (Gast)


Lesenswert?

Lars schrieb:
> Leider kann ich nicht besser Fokusieren...
Guckst du Makromodus=Blumensymbol.

> Es ist nicht viel zu sehen,
naja, es reicht. kurze Leitungen, sollte passen.

> ich weiß, ich habe die beiden Kondensatoren direkt an die Beinchen vom
> Quarz gegen Masse geführt.
passt.

von Lars (Gast)


Lesenswert?

Ich habe noch mal meinen geopfert bzw. müssen. Beim programmieren 
erhalte ich folgende Fehlermeldung:
Execution of command cancelled because of previous command failure

Unable to enter programming mode. Verify device selection, interface 
settings, target power and connections to the target device.

Und als Output unten:
20:01:56: [ERROR] Failed to enter programming mode. ispEnterProgMode: 
Error status received: Got 0xc0, expected 0x00, ModuleName: TCF (TCF 
command: Device:startSession failed.)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.