Forum: Mikrocontroller und Digitale Elektronik Neuer STK500 und ATmega8


von Rufus (Gast)


Lesenswert?

Hallo,

sry, hatte den Tread mit falscher Betreff geschrieben, ist wohl nicht 
ganz rumgekommen.
Ich bin ganz frisch was AVR und habe nun endlich mein STK500 bekommen, 
die deutsche Hardwarebeschreibung hab ich auch hier aus dem Forum.
Zusätlich hab ich noch einen ATmega8L-8PU.
Hab den mitgelieferten ATmega8515 rausgenommen und den mega8
eingesteckt, weil ich halt den programieren möchte (wegen Platzgründen 
usw.).
Ich benutze AVRStudio 4 und habe versucht das kleine Testprogram 
"leds.asm" (aus dem Tutorial)zum laufen zu bringen, aber gescheitert.
Meine Vorgehensweise:
1. STK500 ISP6PIN mit SPROG2 verbunden (6 adrige Flachbandkabel)
2. STK500 PORTD mit Switches und PORTC mit LEDS verbunden.
3. AVRStudio 4 leds.asm assembliert "leds.hex"
4. AVRStudio 4 das Programmierfenster (STK500 in ISP Mode with ATmega8)
   geöffnet und übertragen
   (s. Screenshot)

Hab ich was falsch gemacht was fehlt noch, denn das Programm läuft nicht
(die Leds bleiben dunkel).
An den Fusebits und Lockbits hab ich nichts verstellt.

Ich bin für jede hilfe dankbar.

MfG Rufus

von Peter D. (peda)


Lesenswert?

Beitrag "Bootloader ein MUSS!"

Unten steht doch nur, daß er die Fuses gelesen hat.
Du müßtest mal "Programm" drücken.
Dann sollte zum Schluß der Meldungen "Verify: OK" stehen.


Peter

von Rufus (Gast)


Lesenswert?

Hallo,

Flash:
Getting isp parameter.. SD=0x0a .. OKOK
Reading FLASH input file.. OK
Entering programming mode.. OK!
Erasing device.. OK!
Programming FLASH ..      OK!
Reading FLASH ..      OK!
FLASH contents is equal to file.. OK
Leaving programming mode.. OK!

EEPROM:
Getting isp parameter.. SD=0x0a .. OKOK
Reading EEPROM input file.. OK
Entering programming mode.. OK!
Programming EEPROM ..      OK!
Reading EEPROM ..      OK!
EEPROM contents is equal to file.. OK
Leaving programming mode.. OK!

Die Fuse kann ich lesen, bei mir:
Entering programming mode.. OK!
Reading fuses address 0 to 1.. 0xE1, 0xD9 .. OK!
Leaving programming mode.. OK!

Alles scheint OK zu sein, aber LEDs immernoch dunkel.


@Peter Dannegger
Ich wollte deinen Bootloader draufspielen, beim assemblieren tritt ein 
Fehler auf.
C:\..\m8def.inc(345): error: Attempt to redefine keyword 'or'
woran liegt das?


MfG Rufus

von Chris W. (squid1356)


Lesenswert?

du musst die programmierfrequenz erstmal ganz runter stellen, dann die 
fuses auf die richtige frequenz (intern, 4mhz oder 8 oder was auch 
immer) danach sollte es gehn. du kannst dann auch die 
programmierfrequenz wieder hochstellen.

die avr's haben von haus aus ne sehr langsame frequenz eingestellt, und 
die programmierfrequenz muss immer 1/4 der taktfrequenz sein.

von Magnus Müller (Gast)


Lesenswert?

Christoph Weidenhaupt wrote:
> die avr's haben von haus aus ne sehr langsame frequenz eingestellt, und
> die programmierfrequenz muss immer 1/4 der taktfrequenz sein.

Wenn ich Deine Aussage mal eben korrigieren dürfte:

Die Programmierfrequenz darf 1/4 der Taktfrequenz nicht überschreiten.

von Rufus (Gast)


Lesenswert?

danke für die hilfe,

aber es geht immernoch nicht.
LOW=0xC4 HIGH=0x99
Bezugsquelle: Engbedded AVR® Fuse Calculator aus dem Netz.

>die avr's haben von haus aus ne sehr langsame frequenz eingestellt, und
>die programmierfrequenz muss immer 1/4 der taktfrequenz sein.

Meinst du damit die Baudrate am COM1 (9600Baud)?

Müssen anschließend die Jumper umgestellt werden? Wie Reset...usw.?

Wenn ich ehrlich sein soll, hab ich auch nicht verstanden wo das 
Programm (leds.hex) geschrieben werden soll. In Flash oder EEPROM oder 
beide?

MfG Rufus

von Rufus (Gast)


Angehängte Dateien:

Lesenswert?

Wie wird das (s.Anhang) eingestellt?

von Markus (Gast)


Lesenswert?

Also ich musste da gar nix umstellen. Hat standardmäßig sowohl von der 
Frequenz als auch von den Fuses her hingehauen. (ohne quarz)

von Marco V. (marcov)


Lesenswert?

Die Kalibrierung des internen Oszillators hat nichts mit der ISP 
Frequenz zu tun.

Im ersten Reiter (Main) klickst du auf "Settings" und kannst dann die 
Frequenz auwählen.
Lass den Bootloader für die ersten Versuche besser weg (Häkchen weg bei 
"BOOTRST" in den Fuses).

Dein Programmcode kommt in den Flashspeicher. EEPROM ist nur zum 
Speichern von Daten gedacht.

von Herr M. (herrmueller)


Lesenswert?

Schau noch mal im Quelltext nach, ob Port B oder C benutzt wird und 
stecke das Kabel entsprechend  ( out PortX, xx)

gruss  christian

von Sinusgeek (Gast)


Lesenswert?

Kann es sein, dass Du das EEPROM programmierst und nicht den Flash?

~

von Rufus (Gast)


Lesenswert?

hallo,

habe beide versucht, Flash und EEPROM.

Kann mir denn keiner einen Beispiel geben? Die Verbindungen sollten doch 
korrekt sein, oder? Siehe Anfang des Treads.

1. STK500 ISP6PIN mit SPROG2 verbunden (6 adrige Flachbandkabel)
2. STK500 PORTD mit Switches und PORTC mit LEDS verbunden.

Die Jumper sind alle unberührt.
-VTARGET (Spannungsversorgung) gesetzt
-AREF (Referenzspannung)       gesetzt
-RESET                         gesetzt
-XTAL1 (Board Quarz)           gesetzt
-OSCSEL               Pin 1&2  gesetzt
-BSEL2 (?)                     gesetzt
-PJUMP (HV-Programmirung)   n. gesetzt (beide)

Mega8 in Sockel SCKT3200A2 (grün) sonst kein anderer µC auf dem Board.

Kann mal bitte jemand bei sich gucken wo alles normal läuft und mit mir 
abgleichen? Bitte.
ISP Frequenz?
Clock generator?
Oscilator calibration byte?

Ich würde mich echt freuen, danke.

MfG Rufus

von Hubert G. (hubertg)


Lesenswert?

Habe mein STK neben mit stehen mit einem Mega8 und deinen Fuses 
eingestellt. Wenn ich auch noch dein *.hex File hätte, könnte ich es 
probieren.

von Rufus (Gast)


Lesenswert?

Hi,

das ist der Code aus dem Tutorial.
1
.include "m8def.inc"         ; Definitionsdatei für den Prozessortyp einbinden
2
 
3
         ldi r16, 0xFF       ; lade Arbeitsregister r16 mit der Konstanten 0xFF
4
         out DDRB, r16       ; Inhalt von r16 ins IO-Register DDRB ausgeben
5
 
6
         ldi r16, 0b11111100 ; 0b11111100 in r16 laden
7
         out PORTB, r16      ; r16 ins IO-Register PORTB ausgeben
8
 
9
ende:    rjmp ende           ; Sprung zur Marke "ende" -> Endlosschleife


Auf dem Simulator läuft es.

MfG Rufus

von Rufus (Gast)


Angehängte Dateien:

Lesenswert?

ohh sry wolltest ja die *.hex haben.

von Johannes M. (johnny-m)


Lesenswert?

Rufus wrote:
> Auf dem Simulator läuft es.
Läuft mit großer Wahrscheinlichkeit auch im µC. Man muss nur wissen, 
dass die LEDs beim STK500 invertiert angeschlossen sind. Dein Programm 
schaltet die LEDs also aus und nicht ein.

Sehe allerdings grad, dass eigentlich die beiden LEDs an PB0 und PB1 
leuchten sollten, wenn alle Stecker richtig angeschlossen sind.

von Rufus (Gast)


Lesenswert?

Ne ne das ist nicht richtig, die LED's  0 & 1 leuchten.

Es funktioniert jetzt auch, dämlich, dämlich omg......
Blutiger Anfänger halt...

Danke für eure hilfe :)

MfG Rufus

von Johannes M. (johnny-m)


Lesenswert?

Rufus wrote:
> Ne ne das ist nicht richtig, die LED's  0 & 1 leuchten.
Was ist nicht richtig?

von Hubert G. (hubertg)


Lesenswert?

Und wenn du die Taster an PortC ansteckst, dann tut sich mit den Tasten 
0 und 1 auch was.

von Rufus (Gast)


Lesenswert?

>Dein Programm
>schaltet die LEDs also aus und nicht ein.

War darauf bezogen.
Jetzt leuchten die ersten beiden nämlich.

Trotzdem danke für jede hilfe.

MfG Rufus

von Mi G. (ducky)


Lesenswert?

ok .. warst schneller ..

den Fehler hatte ich zum Anfang auch gemacht ... aber so lernt mans :)

Gruß Ducky

von Rufus (Gast)


Lesenswert?

Hi,

ich habe jetzt ein anderes Problem, wo ich nicht durchsteige.
Alles was ich mache bezieht sich auf den Tutorial 
http://www.mikrocontroller.net/articles/AVR-Tutorial

Nun, es soll bei 
http://www.mikrocontroller.net/sourcecode/tutorial/leds+buttons.asm

Button 0..5 (PD0-PD5) bezogen auf LED 0..5 (PB0-PB5) funktioniert.
PB6 & PB7 wollen nicht leuchten. PD7 & PD7 (buttons) werden aber 
eingelesen. PB6 und PB7 sind ja optional XTAL1 & XTAL2 um PB6&7 als 
I/O's nutzen zu können habe ich die Fuses so gesetzt, dass der Mega8 
seinen internen Takt nutzt.
Woran liegt das nun, das die LED's an PB6 & PB7 nicht leuchten?

MfG Rufus

von Michael U. (amiga)


Lesenswert?

Hallo,

schau mal in den Schaltplan des STK500. Mir ist so, als ob PB6 und PB7 
beim Mega8-Sockel nicht an den STK-Pins von PortB ankommen sondern 
irgendwo bei XTAL oder so.

Es gibt bei solchen Experimentiernoards immer irgendwelche 
Besonderheiten, weil man eben nicht für alle AVR gleichzeitig alle Pins 
sinnvoll überall hinverbinden kann...

Gruß aus Berlin
Michael

von Rufus (Gast)


Lesenswert?

Hallo Michael,

was PB6 und XTAL1 (Jumper) betrifft hast du Recht (von XTAL1 eine Brücke 
nach LED6 -> leuchtet), PB7 scheint nirgenswo rausgeführt zu sein.

Ich werde mal EPAND0 probieren.

MfG Rufus

von Rufus (Gast)


Lesenswert?

hi,

habe gerade in die STK500 Beschreibung geguckt.
Laut Beschreibung sind PB6 (Pin24) & PB7 (Pin23) auf EXPAND1 
(Erweiterungsanschluß 1) geführt. Ich habe also Pin 23 & 24 auf die LED 
6 & 7 (mit Draht) geführt -> keine Funktion.
Als ich die Drahtbrücken direkt zwischen LED 6&7 und an die Pins 9 & 10 
des Mega8's geführt hatte funktionierte es. Sprich LED's leuchten bei 
den jeweiligen betätigten Tastern.

D.h. PB6 & 7 können nicht wirklich mit dem STK als I/O's genutzt werden.

MfG Rufus

von Rufus (Gast)


Lesenswert?

>D.h. PB6 & 7 können nicht wirklich mit dem STK als I/O's genutzt werden.

Kleine korrektur: XT1/XT2 auf PORTE/AUX entsprechen PB6 $ PB7.
Was allerdings nicht in der Beschreibung den Mega8 einschließt.

MfG Rufus

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.