Forum: Mikrocontroller und Digitale Elektronik LEDs leuchten nicht so wie sie sollen


von Hannes H. (hannesf)


Angehängte Dateien:

Lesenswert?

Hi,

ich sitze an einem Skurilen Problem:
Ich habe eine sehr einfache Schaltung gebaut: einfach jeweils eine 
LED+Wiederstand an den Contorller (PortC). Die sollen einfach nur 
Leuchten. Das Programm dazu sieht folgendermaßen aus:
1
#include <avr/io.h> 
2
3
int main (void) { 
4
  DDRC  = 0xff;
5
  while(1) {
6
  }
7
  return 0;
8
9
}

Das Makefile ist im Anhang.
Das Problem ist jetzt, dass die LEDs an PC2, PC3 und PC5 NICHT 
leuchten!?! Der Rest des PortC funktioniert. WARUM? Ich habe das ganze 
mit 2 Controllern Getestet (mega16, mega32). Beide Male das gleiche 
Problem. Das Problem habe ich auch bei einer Anderen Schaltung 
(http://tinyurl.com/3az79t4 - ich hoffe das ist hier erlaubt).

Woran kann das bitte liegen?

ich programmiere im Texteditor, habe
ich schreibe das Programm mit einem "mysmartUSB MK2" auf den Controller. 
mysmartUSB hängt an einem Mac- und hat vorher auch nie Probleme 
gemacht.... Für den Transfer nutze
ich avrdude mit folgendem befehl: "avrdude -c avr911 -e -p m32 -P
/dev/tty.SLAB_USBtoUART -b 19200 -U flash:w:main.hex"

Die Ausgabe beim Programmieren ist hier zu finden: 
http://paste.ubuntuusers.de/398240/

hat jemand irgendeine Idee, warum sich diese Schaltung so komisch 
verhält!?

Liebe Grüße,

Hannes

von Harry L. (mysth)


Lesenswert?

JTAG bei den Fuses abgeschaltet?
(AtMega32 Datasheet S. 60)

Harry

von C. S. (chrisdask8)


Lesenswert?

Hi,

bin mir nicht ganz sicher, aber beim mega32 muss man das JTAG-Fuse erst 
deaktivieren um PORT C normal zu benutzen soweit ich weiß.

probier das mal.

MfG
Christian

von Hannes H. (hannesf)


Lesenswert?

Hi,
ich bin etwas überfordert mit den ganzen Möglichkeiten.
Ich habe das hier gefunden, was die fuses berechnet: 
http://www.engbedded.com/fusecalc
Was muss ich da aktivieren bzw. deaktivieren? Also JTAG deaktivieren ist 
klar, aber der rest? Ich hab keine Lust, den Controller unprogramierbar 
zu machen
Müsste das dann beim avrdude so aussehen - -U lfuse:w:0xe1:m -U 
hfuse:w:0xd9:m ?

also der Komplette befehl sollte dann so aussehen oder -
1
avrdude -c avr911 -e -p m32 -P /dev/tty.SLAB_USBtoUART -b 19200 -U flash:w:main.hex  -U lfuse:w:0xe1:m -U hfuse:w:0xd9:m

Lg.

Hannes

PS.: trifft das problem auch bei einem MEGA16 zu?

von C. S. (chrisdask8)


Lesenswert?

Hi,

Harald L. schrieb:
> ich schreibe das Programm mit einem "mysmartUSB MK2"

das Teil habe ich auch.
Wurde bei dir die CD mit einigen Tools mitgeliefert?

Wenn ja benutze einfach myAVR_ProgTool.exe, stell unter "Hardware" den 
Atmega16 ein, dann geh auf "Brennen" und dann bei "Fuses" klick auf 
"Bearbeiten".

Dann auf Hardware auslesen -> wird darunter angezeit.
dann gehst du auf "high fuse" und machst den Haken bei Jtag Interface 
enabled weg.

dann auf "jetzt schreiben" und gut is ;-)

MfG

von Hannes H. (hannesf)


Lesenswert?

Hi,
mit exe dateien ist das so eine Sache auf dem Mac ;)
Als alternative hätte ich auch noch ne Linux Kiste hier rumstehen, aber 
leider kein Windows.

Grüße,

Hannes

PS.: eine CD habe ich dazu auch nicht...

von Hannes H. (hannesf)


Lesenswert?

Hi,

ich habe das jetzt einfach mal ausprobiert:

"avrdude -c avr911 -e -p m32 -P /dev/tty.SLAB_USBtoUART -b 19200 -U 
flash:w:main.hex  -U lfuse:w:0xe1:m -U hfuse:w:0xd9:m"

Als ausgabe bekomme ich soetwas an den Kopf geschmissen:
1
avrdude: verifying ...
2
avrdude: verification error, first mismatch at byte 0x0000
3
         0xd9 != 0x99
4
avrdude: verification error; content mismatch
5
6
avrdude: safemode: hfuse changed! Was d9, and is now 99
7
Would you like this fuse to be changed back? [y/n] n
8
avrdude: safemode: Fuses OK
9
10
avrdude done.  Thank you.

Das hat dann nichts geändert. Wenn ich mit Y bestätige, passiert einfach 
garnichts. Also das Programm bleibt scheinbar stehen (ich hab es dann 
einfach mal mit ctrl-c nach 5 min gekillt...)

Hab ich da was falsch gemacht?! Also beim setzen der Fuses?

Grüße,

Hannes

von Hannes H. (hannesf)


Lesenswert?

Sooo, ich bin jetzt extra zu einem Freund gefahren, der einen 
Windowsrechner hat. Und siehe da!!!!! TATATATATAAAA, es lag an den Fuses 
;)


Vielen Lieben Dank für die Hilfe!


Grüße,

Hannes

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.