ATtiny13V-10PU mit AVR Studio 5 und AVRISP mk2 programmieren

OP #2341402
Lesenswert?

Hallo zusammen,

nachdem ich mich durch das Buch "AVR-Mikrocontroller in C programmieren" 
gearbeitet habe, wollte ich Taten walten lassen und hab mir o.g. 
genannte Hard- und Software zugelegt.

Leider scheitere ich bereits an einer blinkenden LED.

Folgendes Problem: Ich hab den AVRISP mk2 mit dem ATtiny verdrahtet und 
die LED über einen Widerstand an den Port PB4 angeschlossen. Mit einem 
Spannungswandler (7805) erzeuge ich 4,91 V.

Der Quelltext ist denkbar einfach:
1
#define F_CPU 1200000
2
#include <avr/io.h>
3
#include <util/delay.h>
4

5

6
int main(void)
7
{
8
  DDRB = 0b010000; 
9
    while(1)
10
    {
11
    PORTB = 0b010000;
12
    _delay_ms(500);
13
    PORTB = 0b000000;
14
    _delay_ms(500);
15
    }
16
  return 0;
17
}

Soweit so gut. Ich kann alles kompilieren, AVR Studio 5 erkennt den 
Programmer und ich hab auch ein Firmware Upgrade durchgeführt.

Nach dem Erstellen gehe ich über Extras/AVR Programming in den 
Programmiermodus. Auch da scheint mir noch alles in Ordnung zu sein. Bei 
"Memories" lade ich dann die .hex Datei und programmiere den Controller. 
Und jetzt kommt die Fehlermeldung:
"File contents outside device memory
Some sections of the file provided does not fit within the device 
memory.

Do you want to continue programming Flash using only the sections that 
fit within the device memory?"

Tja. Aber so riesig ist mein Quelltext ja gar nicht... So wies aussieht, 
liegt das an der delay Routine, weil wenn ich die weglasse 
funktionierts. Aber dann blinkts natürlich auch nicht ;).

Die FUSES hab ich meines Erachtens richtig gesetzt (9,6 MHZ, Start Up 
Time 14 CK + 64ms, mit dem CKDIV8 enabled = 1200000 Hz)...

Wäre echt super, wenn mir jemand meinen Sonntag retten könnte.

Gruß Philipp.

Ach und, Sufu und google kenn ich. Ich hoffe dieser Threat ist 
berechtigt...
OP #2341434
Lesenswert?

Das ändert nix, da hab ich das gleiche Problem...

Ich hab auch versucht, die Delay-Funktion selber zu schreiben (müsste 
doch so funktionieren, oder?):
1
#include <avr/io.h>
2

3
void delay(void);
4

5
int main(void)
6
{
7
  DDRB = 0b010000; 
8
    while(1)
9
    {
10
    PORTB = 0b010000;
11
    delay();
12
    PORTB = 0b000000;
13
    delay();
14
  }
15
  return 0;
16
}
17

18

19
void delay(void)
20
{
21
  int i = 0;
22
  while(i<600000) i++;
23
}

Dann bekomme ich zwar die Fehlermeldung über den Speicher nicht mehr, 
aber die LED blinkt nach wie vor nicht, sondern leuchtet nur.

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