Forum: Mikrocontroller und Digitale Elektronik Keine Verbindung zum STK500 unter Linux mit avrdude


von Dennis S. (eltio)


Lesenswert?

Hallo zusammen,

ich weiß es gibt schon einige Beiträge, doch leider finde ich die Lösung 
nicht für mein Problem. Also hier meine aktuelle Konfiguration:

- Xubuntu 14.04
- binutils-avr 2.23
- avr-libc 1.8
- simulavr 0.1.2
- gdb-avr 7.6
- gcc-avr 4.8
- usip 20050207-4.2
- avrdude 6.01
- Eclipse Kepler SR2
- AVR Eclipse 2.4.1

Das STK500 ist mit einem Atmega8-16PU bestückt und über einen Digitus 
USB-RS232-Wandler an den Laptop angeschlossen. Das Kompilieren ist 
fehlerfrei und es wird eine Test_AVR.elf erstelt. Anschließend erscheint 
im Meldefenster:
1
Invoking: AVRDude
2
/usr/bin/avrdude -pm16 -cstk500v1 -P/dev/ttyUSB0 -b19200 -Uflash:w:Test_AVR.hex:a
3
avrdude: stk500_recv(): programmer is not responding

Ich nehme an der Fehler liegt irgendwo an meinen Einstellungen. Hat 
jemand einen Hinweis? Desweiteren scheint der Schalter "Generate HEX 
file for Flash ROM" keine Auswirkung zu haben!?

Gruß
Dennis

von Peter K. (peterka2000)


Lesenswert?

Ging es mal unter Windows mit AVR-Studio? Ich glaube nicht, dass STK500 
und RS232-USB sich vertragen.

von Dennis S. (eltio)


Lesenswert?

Tja, dummerweise ist es schon länger her, dass ich das Ding mal in 
Betrieb genommen habe. Bin mir aber "relativ" sicher, dass es mal ging! 
Ich muss das heute Abend nochmal checken.. Aber wenn noch jemand eine 
Idee hat, immer her damit!

Gruß
Dennis

von Horst (Gast)


Lesenswert?

Peter K. schrieb:
> Ich glaube nicht, dass STK500
> und RS232-USB sich vertragen.
Doch geht. Hatte ich erst vor kurzem am Laufen.

Dennis S. schrieb:
> Hat
> jemand einen Hinweis?
Du hast auch den richtigen UART-Anschluß am STK500 verwendet?

Horst

von Dennis S. (eltio)


Lesenswert?

Horst schrieb:
> Du hast auch den richtigen UART-Anschluß am STK500 verwendet?
>
> Horst

Jepp... sollte laut Handbuch stimmen: "RS232 CTRL"!

Gruß
Dennis

von Martin (Gast)


Lesenswert?

Mit folgende Parameter hab vor paar Tage ein STK500 erfolgreich 
getestet:
1
avrdude -p atmega32 -P /dev/ttyUSB0  -c stk500v2   -U flash:w:laufleds.hex

von Dennis S. (eltio)


Lesenswert?

Okay, ich bin ein Stück weiter! Mein Aufruf ist jetzt:
1
/usr/bin/avrdude -pm16 -cstk500 -P/dev/ttyUSB0 -Uflash:w:Test_AVR.hex:a

Das führt dazu, dass die LED kurz aufblitzen und dann wieder ausgehen. 
Die Ausgabe der Konsole ist folgende:
1
Launching /usr/bin/avrdude -pm16 -cstk500 -P/dev/ttyUSB0 -Uflash:w:Test_AVR.hex:a 
2
Output:
3
4
avrdude: AVR device initialized and ready to accept instructions
5
6
Reading | ################################################## | 100% 0.01s
7
8
avrdude: Device signature = 0x1e9307
9
avrdude: Expected signature for ATmega16 is 1E 94 03
10
         Double check chip, or use -F to override this check.
11
12
avrdude done.  Thank you.

Mein Testprogramm sieht wie folgt aus:
1
#include <avr/io.h>
2
3
int main()
4
{
5
    DDRB = 0xFF;
6
    PORTB = 0xAA;
7
8
    while (1);
9
}

Offensichtlich stimmen die Signaturen nicht überein, aber was kann ich 
dagegen tun?

: Bearbeitet durch User
von Dennis S. (eltio)


Lesenswert?

Ha...! Und auch das hat sich erledigt!

Ich habe in den Projekteigenschaften unter AVR / Target Hardware auf 
"Load from CPU" geklickt. Die Frage ist: wo kann ich das denn manuell 
einstellen?

Danke nochmal,
Dennis

von Martin (Gast)


Lesenswert?

Hier hast du ein Atmega8 oder??

Dennis S. schrieb:
> Das STK500 ist mit einem Atmega8-16PU bestückt und über einen Digitus
> USB-RS232-Wandler an den Laptop angeschlossen.

Hier willst du aber ein Atmega 16 flashen

Dennis S. schrieb:
> Okay, ich bin ein Stück weiter! Mein Aufruf ist jetzt:/usr/bin/avrdude
> -pm16 -cstk500 -P/dev/ttyUSB0 -Uflash:w:Test_AVR.hex:a

Nicht um sonst sagt dir AVRDUDE:

Dennis S. schrieb:
>
> avrdude: Device signature = 0x1e9307
> avrdude: Expected signature for ATmega16 is 1E 94 03
>          Double check chip, or use -F to override this check.

von Dennis S. (eltio)


Lesenswert?

Ja, du hast Recht. Das Problem habe ich ja schon gelöst.

Eigentlich jetzt ein bisschen offtopic, aber da es noch im weitesten 
Sinne zur "Einrichtung" gehört:
Ich habe das Beispielprojekt geflasht:
1
#include <avr/io.h>
2
#ifndef F_CPU
3
#warning "F_CPU war noch nicht definiert, wird nun mit 3686400 definiert"
4
#define F_CPU 3686400UL     /* Quarz mit 3.6864 Mhz */
5
#endif
6
#include <util/delay.h>
7
8
int main( void )
9
{
10
    DDRB = ( 1 << PB0 );
11
    while( 1 ) {
12
        PORTB ^= ( 1 << PB0 );
13
        _delay_ms(1000);
14
    }
15
    return 0;
16
}

Das Blinken ist jedoch viel zu langsam. An welcher Stelle kann ich den 
µC-Takt einstellen?

Gruß
Dennis

P.S.: Das define mit der CPU ist in Eclipse ausgegraut, wird also 
anscheinend nicht genutzt!

: Bearbeitet durch User
von fuses (Gast)


Lesenswert?

Die CPU-Frequenz wird über die Fuses konfiguriert,
siehe Datenblatt. Kannst du auch mit avrdude machen.

von Dennis S. (eltio)


Lesenswert?

Dankeschön, jetzt komme ich erstmal weiter!

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.