Forum: Mikrocontroller und Digitale Elektronik Atmega8l


von Tom (Gast)


Lesenswert?

hallo zusammen:
ich habe ein problem, ich begann mit atmelcontroller zu programmieren,
genauer einem atmega8l, ich kann den controller programmieren, löschen
und das programm auslesen. jedoch führt er es nicht aus. die hardware
habe ich überprüft an der kann es nicht liegen. hier noch mein
programmcode:
#include<avr/io.h>
int main(void){
DDRD=0xFF;
  while(1==1){
  PORTD=0xFF;

  }
return 0;
}
mfg tom

von Christian Zietz (Gast)


Lesenswert?

Resetvektor versehentlich über BOOTRST-Fuse verbogen?
Mal ein Assemblerprogramm getestet, um Schwierigkeiten mit dem
C-Compiler auszuschließen?

von Tom (Gast)


Lesenswert?

hallo,
muss das Häcken beim BOOTRST-Fuse gesetzt sein oder nicht. Kann leider
noch nicht assembler programmieren.
mfg

von Christian Zietz (Gast)


Lesenswert?

Die BOOTRST-Fuse muss unprogrammiert sein (also 1, denn 0 ist
programmiert). Ob das Dein Flashtool als Häkchen oder als fehlendes
Häkchen anzeigt, kann ich natürlich nicht wissen.

Den Assembler seines uCs sollte man schon kennen, imho. Naja, folgendes
Programm tut das selbe wie Dein C-Programm:

.include "m8def.inc"
ldi r16, 0xff
out DDRD, r16
out PORTD, r16
hang:
rjmp hang

von Tom (Gast)


Lesenswert?

ich hab dieses bit als unprogrammed gesetzt, jetzt kann ich nicht einmal
mehr das programm herunterladen. was löst es überhaubt aus?
mfg

von Tom (Gast)


Lesenswert?

wie müssen eigentlich die anderen bits gesetzt werden.

von Christian Zietz (Gast)


Lesenswert?

Die BOOTRST-Fuse bestimmt, an welcher Stelle der uC nach einem Reset mit
der Programmausführung beginnt. Entweder bei 0x0000, wenn unprogrammiert
oder am Beginn der Bootloader-Section, wenn programmiert.
Das und alles weitere zu den Fuses steht im Datenblatt. Lies es doch
mal.
Zusammengefasst: Du musst die Werkseinstellung nicht ändern, damit
obige Programme laufen.

von dave (Gast)


Lesenswert?

- Wie schaust du, obs läuft?
 - Haste den richtigen Controller in der make-File angegeben?
 - Schau nochmal im Datenblatt, ob du auch die richtigen Pins misst.

Mach mal "while(1).."

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.