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!