mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik leds leuchten nicht


Autor: grant (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi all,
ich hab heute mit atmega8 versuchen, zu programmieren. als erstes will 
ich ja nur den ausgang probieren und hier kommt mein problem schon.

//code//
#include <avr/io.h>

int main (void) {

   DDRB  = 0xff;
   PORTB = 0x00;

   while(1) {
   }
   return 0;
}

wenn ich mich nicht irre, müssen alle leds leuchten. die sw7 und 6 
leutchten aber nicht. kann jemand mir irgendwie weiter helfen oder 
sagen, was ich falsch machen könnte?
vg
grant

Autor: roboterheld (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
led kapuuuuut????
datenblatt vom atmega8 gelesen?

solche schleifen werden mit winavr-c wegoptimiert :
while(1) {
   }

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

Bewertung
0 lesenswert
nicht lesenswert
Lass mal raten: Du arbeitest mit nem STK500 und benutzt die auf dem 
Board befindlichen LEDs?

Die Pins 6 und 7 von Port B des ATMega8 sind nicht auf dem 
PortB-Pinheader, sondern auf dem PortE/Aux-Header (XTAL1 und XTAL2). 
Nimm für die Ausgabe einen anderen Port oder versuche irgendwie, die 
beiden LEDs mit den entsprechenden Pins des PortB-Steckers zu verbinden.

Autor: grant (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
leds sind nicht kaputt, da ich hab versucht, die pinb(0-5), die 
leuchten, auf diese led6 und 7 zu überbrücken. sie leuchten dann. aber 
wenn ich die pin6 und 7 auf andere ledx überbrücke, leutchten die ledx 
nicht.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PB6+7 werden als clock pins verwendet, nicht auf internen oszillator 
umgeschalten?

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

Bewertung
0 lesenswert
nicht lesenswert
roboterheld wrote:
> solche schleifen werden mit winavr-c wegoptimiert :
> while(1) {
>    }
Das ist ne leere Endlosschleife, die wird bestimmt nicht wegoptimiert.

Autor: Manos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich gehe mal davon aus, dass Du am PortB.6 und B.7 keine Quarz anliegen 
hast...

Vielleicht LEDs falsch rum eingebaut?

Manchmal gibt es alternative Portfunktionen die erst abgeschaltet werden 
müssen um diese Ports nutzen zu können  (z.B. Reset).

Autor: grant (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen danke johannes
da hast du recht. ich hab mit dem stk500 gearbeitet und hab mit dem port 
c und d programmiert. bei c habe ich dasselbes problem aber bei d hat es 
geklappt.

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

Bewertung
0 lesenswert
nicht lesenswert
grant wrote:
> vielen danke johannes
> da hast du recht. ich hab mit dem stk500 gearbeitet...
Beim nächsten Mal bitte direkt erzählen, mit was für einer Hardware Du 
arbeitest. Dann muss man nicht so viel nachfragen und raten!

> und hab mit dem port c und d programmiert. bei c habe ich dasselbes problem > 
aber bei d hat es geklappt.
PortC.6 ist ja auch normalerweise der Reset-Pin, den man extra freigeben 
muss, um ihn als I/O nutzen zu können. Und PortC.7 existiert beim Mega8 
gar nicht.

Autor: Michael Welker (herr_welker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich hab des selbe Problem, dass bei meinem STK 500 keine LED's leuchten.
Die Leuchten funktionieren.

Ich benutze einen Atmega16 (habe schon zwei verschiedene probiert).
Zur Übertragung benutze ich AVR Studio 4.

Die Übertragung funkioniert tadellos.

Hier mal des Programm:
include "m16def.inc"

loop:   ldi r18,0b10101010

  out DDRB, r18

  rjmp loop

Autor: Herr Bst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sie haben bis jetzt nur via <out DDRB, r18> die I/O definiert.
Jetzt müssen Sie noch die Ausgänge ansteuern.
z.B so

ldi r18,0x00
out PORTB,r18

Autor: Michael Welker (herr_welker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also so etwa.

Leider gehts immer noch nicht. Ich komm einfach nicht drauf warum.

Fuses (mit Häckchen aktiviert):

-On-Chip Debug Enabled
-Boot Flash section size=1024 words Boot start 
adress=$1C00;[BOOTSZ=00];default value
-Brown-out detection level at VCC4,0V
-Brown-out detecion enabled
-Int. RC OSC 4MHz; Start-up time: 6CK+0ms

LockBits (mit Häcken aktiviert):

-Mode 1: No memory lock features enabled
-Application Protection Mode 1: No lock on SPM and LPM in Application 
Section
-Boot Loader Protection Mode 1: No lock on SPM and LPM in Boot Loader
#include "m16def.inc"

loop:   ldi r18,0b10101010
    out DDRB,r18
    out PortB,r18
      rjmp loop

Autor: Herr Bst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja, der DDRB ist noch falsch gesetzt.
"1" bedeutet Ausgang, "0" Eingang.
Somit lautet der Programmabschnitt so:

.include "m16def.inc"

loop:
    ldi r18,0xFF
    out DDRB,r18     ;setzt kompletten PortB als Ausgang
    ldi r18,0x00
    out PORTB,r18    ;aktiviert LEDs
rjmp loop

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.