www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Neuer STK500 und ATmega8


Autor: Rufus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Chris W. (squid1356)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Wie wird das (s.Anhang) eingestellt?

Autor: Markus (Gast)
Datum:

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

Autor: Marco -. (marcov)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Herr Mueller (herrmueller)
Datum:

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

gruss  christian

Autor: Sinusgeek (Gast)
Datum:

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

~

Autor: Rufus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hubert G. (hubertg)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

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


Auf dem Simulator läuft es.

MfG Rufus

Autor: Rufus (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ohh sry wolltest ja die *.hex haben.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Johannes M. (johnny-m)
Datum:

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

Autor: Hubert G. (hubertg)
Datum:

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

Autor: Rufus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mi Gö (ducky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok .. warst schneller ..

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

Gruß Ducky

Autor: Rufus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

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

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.