www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Grosse Probleme mit STK500 (betrifft Ansteuerung von LEDs)


Autor: Philipp Klein (phil)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vorweg sei gesagt: Bin absoluter Anfaenger. Habe zwar schonmal etwas
mit Assembler herumgespielt, allerdings versagen hier meine Kenntnisse.
Gleichzeitig vermute ich das Problem auch eher irgendwo im
elektronischen Bereich. Anyway, ich beschreib 'mal worum es geht:

Besitze ein STK500 mit einem AT90S8515. Eigentlich geht es mir nur
darum, alle (!) der 8 LEDs (LED0-LED7) anzusteuern. Nichts
schwieriges, sollte man meinen. Nungut, ich habe also mein
Nullmodemkabel angeschlossen, und eine Verbindung zwischen den
PBX-Registern (ist Register der korrekte Begriff) und den Anschluessen
fuer die LEDs auf dem Board hergestellt. (Sorry fuer die
moeglicherweise falsche Ausdrucksweise, ich hoffe ihr wisst, was ich
meine). Zum besseren Verstaendnis habe ich den Aufbau nochmal als Bild
hochgeladen: http://www.flickr.com/photos/66358509@N00/59076167/

Habe aus einem Gespraech mit mehreren Leuten im IRC gestern Nacht
folgenden, aus dem Tutorial abgewandelten, Source kreiert. Nach den
Angaben im IRC sollten hiermit alle acht LEDs leuchten:
--snip--
.include "8515def.inc"       ;Definitionsdatei einbinden, ggf. durch
                             ;2333def.inc ersetzen

         ldi r16,0xFF        ;0xFF ins Arbeitsregister r16 laden
         out DDRB, r16       ;Inhalt von r16 ins IO-Register DDRB
ausgeben

;         ldi r16, 0b11111100 ;0b11111100 in r16 laden
         ldi r16,0b01010101
         out PORTB, r16      ;r16 ins IO-Register PORTB ausgeben

ende:    rjmp ende           ;Sprung zur Marke "ende" ->
Endlosschleife
--snap--
Kommentare bitte ignorieren, ist einfach aus dem Tutorial uebernommen
und nicht abgeaendert.

Ebenfalls habe ich mir den Sourcecode aus dem AVR-ASM-Tutorial aus der
Linksammlung geschnappt:
http://www.avr-asm-tutorial.net/avr_de/quellen/test1.asm
Leider leuchten auch mit diesem Source nicht alle Lampen; ebenfalls
blinken sie nicht. Stattdessen ist, wie auf dem Foto zu sehen, konstant
LED1 an.

Ich versteh das nicht .. Ich hab derzeit absolut keinen Ansatzpunkt,
warum das nicht funktioniert. Als ich das Multimeter an die LED PBX
Ports angelegt habe, kamen auch einige interessante Werte raus.
Waehrend PB0 gute 5V (schaetze so etwa 5,4V) liefert, liefern alle
anderen PBs nur knapp unter 5V (etwa 4,5V) (sorry, habe nur ein
analoges Multimeter, wo man das net so ganz gescheit ablesen kann). Mag
sein, dass ich das falsch sehe, aber sollten die LEDs nicht trotzdem
zumindest ansatzweise (schwach) leuchten?

Irgendwelche Ansatzpunkte, wo ich nun fortsetzen koennte, wo ich nach
(Denk-)fehlern suchen koennte?

Vielen Dank im Voraus und Entschuldigung fuer die vermutlich daemliche
Frage,
phil

Autor: SiO2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ldi r16,0

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Phil,

  ldi r16,0xFF        ;0xFF ins Arbeitsregister r16 laden
  out DDRB, r16

stellt die Datenrichtung von Port B so ein, dass alle pins Ausgaenge
sind.

  ldi r16,0b01010101
  out PORTB, r16

schreibt nun auf Port B das Bitmuster 01010101. Damit werden jede
zweite LED eingeschaltet, die anderen bleiben ausgesschaltet.

Mit

  ende:    rjmp ende

schickst du den uC in die Endlosschleife, er macht also NIX mehr ausser
Strom zu verbrauchen.

Das heisst, nachdem der Prozessor einmal Port B initialisiert hat tut
er nix mehr. Damit die LEDs blinken muss er aber ein Schleife
abarbeiten und sie abwechselnd an- und ausschalten.

Nix für Ungut, ich empfehle dir, erstmal die Grundlagen des
Programmierens zu erlernen, dann dich mit dem AVR Assembler (Tutorial
gibts hier und bei Atmel) zu befassen und dann mit den Details der uC
hardware.

  Daz

Autor: HerrMueller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
Wenn Dein Link-Bild tatsächlich Dein Aufbau zeigt, ist klar, warum nur
eine Led leuchtet. Du hast das Kabel zu den Leds verdreht. Die rote
Markierung am Kabel sollte immer an Pin 1 sein ( an beiden Seiten).
Bitte überprüfen.
Das Programm ist so schon ok, ausser dass es nicht blinkt. Beim Blinken
auf jeden Fall an Zeitverzögerung denken, sonst sieht man nix.

Gruss Christian

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier ein einfaches Blinkprogramm mit einer Pause




.include "8515def.inc"


ldi r16,$ff
out ddrb,r16

main:
ldi r16,$00
out portb,r16



pause1:
inc r17
brne pause1
inc r18
brne pause1
inc r19
cpi r19,$70
brne pause1
clr r19


ldi r16,$ff
out portb,r16


pause2:
inc r17
brne pause2
inc r18
brne pause2
inc r19
cpi r19,$70
brne pause2
clr r19


rjmp main

Autor: Philipp Klein (phil)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie eben auch im IRC festgestellt, habe ich die Kabel nun vertauscht.
Anscheinend nun korrekt:
http://img120.imageshack.us/img120/2280/cimg36890pv.jpg

Jetzt leuchtet allerdings nichts mehr.

Autor: Philipp Klein (phil)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Florians Programm passiert leider das gleiche. Naemlich nichts. :(

Autor: HerrMueller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es kann natürlich sein, dass der 8515 nicht mehr funktioniert, da Du
wohl laengere Zeit die Ports mit Vcc und GND kurzgeschlossen hast.

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne das stk 500 leider nicht und daher weiß ich auch nicht, auf
welchem Port die Leds angeschlossen sind....

probiere mal anstatt portb -->porta und anstatt ddrb --> ddra

einfach im code umändern..

kann aber auch portc und ddrc oder portd und ddrd sein...

Keine Ahnung...

Gruß Florian

Autor: Philipp Klein (phil)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat leider auch keine Aenderung gebracht. :-(

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie spielst du denn das Programm rüber? Mit dem PonyProg? Oder hat da
Atmel etwas eigenes?

Autor: Philipp Klein (phil)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit dem AVRstudio ("Program FLASH").

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steht bei den Leds nichts aufgedruckt?  z.B.: PB0 PB1?

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ups... Port B...habs gerade gesehen

Autor: HerrMueller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Florian Beim STK500 sind alle Ports auf Pfostenstecker gelegt und
werden dann je nach Bedarf mit dem LED-Stecker verbunden. Da aber wohl
längere Zeit das Kabel verdreht war, lag in der Zeit an PB0 +5V und an
PB1 Masse (Led leuchtete). Wenn PB0 als Ausgang auf 0 lag, gab es wohl
einen längeren Kurzschluss. Es waere möglich, dass das der Prozessor
nicht mochte.

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, dann ab mit ihm in den µ-controller Himmel, :-)

Ein letztes Gebet noch...



und tschüss

Autor: Philipp Klein (phil)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Problem geloest.

Danke an alle hier und an alle Leute im IRC, im speziellen c-logic. :)

Lag einmal daran, dass das Kabel zum ISP nicht/falsch aufgesetzt war,
und dass ich die diesbezuegliche Einstellung im AVRstudio falsch
gesetzt hatte.

Autor: HerrMueller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann hast Du tatsächlich Glück gehabt, dass das Programm mit falsch
aufgestecktem Portkabel nicht geladen wurde und der Port nicht auf
Ausgang ging.

Viel Spass beim weiteren Testen
christian

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, Glück im Unglück....

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist zwar OT, aber vielleicht hilft es ja etwas:
http://www.mikrocontroller.net/forum/read-1-38592....

Bit- & Bytebruch...
...HanneS...

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.