Forum: Mikrocontroller und Digitale Elektronik [AVR] Atmega8 lässt sich nicht beschreiben


von Gefrierbrand (Gast)


Lesenswert?

Hallo Zusammen!

Ich habe mir folgendes Set zugelegt:
http://shop.embedded-projects.net/index.php?module=artikel&action=artikel&id=108

Ich möchte nun den Mikrocontroller mit einem der Beispielprogramme 
bespielen. Dazu habe ich mir Atmelstudio 6.1 und Winavr besorgt, wobei 
ich mich zunächst nur mit dem Atmelstudio beschöftigt habe.

Das Atmelstudio erkennt meinen Programmer und bei entsprechend niedriger 
ISP Frequenz kann ich auch die Daten des Atmega auslesen:
1
Detected Device
2
Device names  ATmega8, ATmega8A
3
Device signature  0x1E9307
4
5
Datasheet Information
6
ATmega8
7
CPU  8-bit AVR
8
Flash size  8 Kbytes
9
EEPROM size  512 bytes
10
SRAM size  1 Kbytes
11
VCC range  2,7 - 5,5 V
12
Maximum speed  N/A

Die Fuses lassen sich ebenfalls auslesen und liegen auf den 
Standardwerten:
High: 0xD9
Low: 0xE1

Daraus entnehme ich, dass der ATmega intern (mit 1 MHz) getaktet ist und 
den Quarz für 8 MHz zunächst gekonnt ignoriert, aber das sollte 
eigentlich das Programmieren an sich nicht verhindern.

Das Beispielprogramm lässt sich problemlos kompilieren.
1
#define  __AVR_ATmega8__  1
2
3
#include "avr/io.h"
4
5
void Initialize(void)
6
{
7
  PORTB = 0x0;
8
  PORTC = 1<<5;  /* turn the LED off */
9
  PORTD = 0x0;
10
11
  DDRB = 0x0;
12
  DDRC = 1<<5;  /* PC5 as output - the LED is there */
13
  DDRD = 0x0;
14
15
}
16
17
/*  state = 0 -> Led Off
18
 *  state = 1 -> Led On
19
 *  state !=[0,1] -> Led Toggle 
20
 */
21
void LedSet(unsigned char state)
22
{
23
  switch (state)
24
  {
25
    case 0:
26
      PORTC &= ~(1<<5);
27
      break;
28
    case 1:
29
      PORTC |= 1<<5;
30
      break;
31
    default:
32
      if (PORTC & 1<<5) 
33
        PORTC &= ~(1<<5);
34
      else
35
        PORTC |= 1<<5;
36
  }
37
  
38
}
39
40
41
int main(void)
42
{
43
  int i;
44
45
  Initialize();
46
47
  while (1)
48
  {
49
    LedSet(0);
50
    for (i=60000;i;i--);
51
    LedSet(1);
52
    for (i=60000;i;i--);
53
  }
54
  return 0;
55
}

Wenn ich das kompilierte Programm dann jedoch übertragen will, erhalte 
ich folgenden Fehler:
1
Verifying Flash...Failed! address=0x0000 expected=0x12 actual=0x00
2
3
Timestamp:  2013-03-08 17:13:17.643
4
Severity:    ERROR
5
ComponentId:  20000
6
StatusCode:  0
7
8
Verifying Flash...Failed! address=0x0000 expected=0x12 actual=0x00

Den µC löschen klappt jedoch, zumindest meckert das Programm dabei 
nicht.

Ich bin für jede Hilfe dankbar!

von Spess53 (Gast)


Lesenswert?

Hi

>Den µC löschen klappt jedoch, zumindest meckert das Programm dabei
>nicht.

Heißt aber nicht, das es wirklich geklappt hat. Lies mal den Controller 
nach den Löschen aus. Der Flash darf nur 0xFF enthalten.

MfG Spess

von Gefrierbrand (Gast)


Lesenswert?

Spess53 schrieb:
> Heißt aber nicht, das es wirklich geklappt hat. Lies mal den Controller
> nach den Löschen aus. Der Flash darf nur 0xFF enthalten.

Wie mache ich das am sinnvollsten?

von Gefrierbrand (Gast)


Lesenswert?

Ich hab das Ganze jetzt von Linux aus mit dem AVRdude gemacht, da klappt 
alles bestens!

von Wayne M. (vibra)


Lesenswert?

moin

Dasselbe Problem habe ich mit Studio 4.18 (benutze ich meistens immer 
noch)
wenn ich im Programmierfenster :
"Use Current simulator/emulator Flash Memory " auswähle
wenn ich hingegen " Input hex file" anwähle und das erzeugte "hex-file " 
lade,damit dann den chip brenne geht das alles problemlos.
Betriebssystem ist Win7 32bit

mfg

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.