www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega8 lässt sich programmieren-jedoch tut sich nichts!


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Wie man schon dem Betreff entnehmen kann, habe ich Probleme, den
Atmega8 zum Laufen zu bringen! Um die Hex-Files zum Mikronconroller zu
übertragen, benutze ich yaap und soweit funktioniert das ja auch! Wenn
ich ein Port hernehme und einen gewissen Wert zuweise, dann wird am
jeweiligen Port jedoch nichts ausgegeben! Es liegt an jedem Pin nur 0V
an!? Muss ich dem Mikroncontroller nicht sagen das er das Programm bei
einer bestimmten Adresse starten soll wie beim 8051 oda bearbeitet der
Atmega8 das gleich nach dem Übertragen des Programmes zyklisch!? Oder
muss ich noch andere hardwaremäßige Vorraussetzungen herstellen, dass
der Mikrocontroller das Programm abarbeitet?

Ich bedanke mich schon im Vorhinein für jede Hilfe!

MFG
Markus

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
falsches forum.
data direction gesetzt (DDRx)?

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.mikrocontroller.net/forum/read-1-105065.html

Vielleicht hilft das ...
Gruß,
Micha

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Link!

Leider hat er mir bis jetzt noch nicht weitergeholfen! Wie schon gesagt
programmieren und auslesen lässt er sich ja einwandfrei. Danach stecke
ich mein ISP-Interface ab, d.h. nur mehr die Versorgungsspannung, XTAL,
AGND und AREF sind angeschlossen und am RESET habe ich die 5V! Das gibts
ja nicht, dass das nicht funktioniert? Das Programm selber ist ja nur
eine Wertzuweisung auf ein Port. Momentan bin ich ratlos, da der
Mikrocontroller ja nach dem Programmieren praktisch nur an den minimal
benötigten Pins (ok XTAL könnte man weglassen und den internen Takt
verwenden) beschalten ist.

MFG
Markus

Autor: Christof Krüger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Poste doch mal dein Programm hier als Anhang.

Hast du auch an eine Endlosschleife gedacht? Sonst gerät der AVR evtl.
in einen nicht programmierten Bereich des Flash-Speichers und resettet.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab auch schon das aller erste Programm im Tutorial ausprobiert, da
ich gedacht habe ich mach was grundsätzliches falsch, aber das
funktioniert ja auch nicht! Das Programm werdet ihr ja sicher alle
kennen! Als include-Datei hab ich die m8def.inc genommen, da ich ja
auch den ATMEGA8 habe!
----------------------
.include "m8def.inc"

ldi r16, 0xFF
out DDRD, r16
ldi r16, 0b11111100
out PORTD, r16

ende:    rjmp ende
---------------------
Da müsste ja alles passen! Das ist das Programm aus dem Tutorial! Ich
glaub ich hab nur PORTB auf PORTD umgeändert aber sonst nix. Und die
Endlosschleife ist ja auch drinnen! Wie ist das eigentlich bei den
AVR's, fangen die gleich bei der Adresse null an den Programmcode
hineinzuschreiben? Sind da nicht sonst die ganzen Interrupts?
Ich mach sicher was ganz einfaches falsch! Ich habe zwar viel mit dem
8051er gemacht aber in der AVR-Welt bin ich neu.

Autor: Jim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm, so viel kannst Du gar nicht mit dem 8051 gemacht haben, der
startet nämlich auch bei einer festen Adresse...

Besorg Dir mal das Datenblatt, da steht alles drin, was Du wissen
musst.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Naja ich möchte mich hier jetzt nicht unbedingt darüber unterhalten
wieviel ich mit dem 8051 gemacht habe, aber wenn man das Programm ab
einer gewissen Adresse hineinschreibt kann man beispielsweise im
Monitorprogramm "mon51.exe" sagen er soll zu dieser Adresse gehen.
Das hab ich gemeint!

Da ich ja den ATMEGA8 kennenlernen will, nützt mir deine Aussage über
einen anderen Mikrocontroller eigentlich sehr wenig. Es ist mir auch
egal ob du denkst ich habe keine Ahnung vom 8051er aber die diversen
Projekte, die ich gemacht habe, funktionierten auch immer und das ist
wichtig!;-)

Ich will nur Hilfe haben im Bezug auf den ATMEGA8!

Am Takt kanns ja nicht liegen, sonst würde es ja auch nicht möglich
sein den µC zu programmieren!?

MFG
Markus

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
muss ja mal ein bissl werbung machen :). schau mal die sachen zur
hardware durch, vielleicht findet sich ja was und wenn nicht können wir
uns zumindest diese fragen schonmal sparen ;)

http://www.mikrocontroller.net/wiki/AVR_Checkliste

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok mal danke für den Link!

Ist die Spannungsversorgung richtig angeschlossen?
Ja das passt! Hab ich nachgemessen! Auch AVCC!

Anschluss des Reset-Pins
Passt auch! Hat einen Pull-Up Widerstand und ist auf 5V

Ist ein 100nF-Blockkondensator am AVR installiert?
Ist installiert, gleich in der Nähe der Pins.

Quarz angeschlossen?
Quarz ist angeschlossen und Fuse Bits sind entprechend eingestellt
(nach Tutorial)

Sind alle Ground - Anschlüsse beschaltet?
Ich hab GND und AGND! Beide sind beschalten und haben richtig Kontakt!
- Nachgemessen.

Sind alle Lötstellen in Ordnung?
Hab das ganze auf einem Breadboard, und über die Pins des µC kann ich
ja messen ob ein Kontakt vorhanden ist!

Eingänge
Hab ich derzeit keine!

Ausgänge
Ist nichts dran! Nur mein Voltmeter, wenn ich miss!

Tja und das Programm hab ich ja schon gepostet!

Weis jemand noch einen guten Rat?

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Eingänge und "Hab ich derzeit keine" meinte ich natürlich das ich
keine verwende!! Um das nur klarzustellen!

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat sonst noch niemand das Problem gehabt? Sobald der RESET-PIN auf 5V
liegt arbeitet der µC das Programm ja ab oder?

Ich weis nicht mehr an was es liegen könnte.. Bitte um Hilfe!

MFG
Markus

Autor: Christof Krüger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja,

hast du eine Digicam? Dann mach doch mal ein Bild deines Aufbaus,
vielleicht hast du ja doch was falsch beschaltet.
Bei den AVRs kommen zuerst die Interrupt-Vektoren, da der RESET-INT
ganz am Anfang ist, kann man bei kleinen Programmen, die sonst keine
INTs benutzen den Code einfach von 0x00 an hinknallen.

PS: Man muss nicht jeden Satz mit einem Ausrufezeichen abschliessen,
das wirkt so, als würdest du dauernd brüllen.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok. Sorry wegen der Ausrufezeichen - ist eine blöde Angewohnheit von
mir. Ich mach das fast schon automatisch. Ist aber auf keinen Fall bös
gemeint.

Das mit dem falsch beschalten kann ich mir fast nicht vorstellen, denn
ich habe ja nach dem Programmieren nur die nötigsten Pins beschalten.
Also RESET ist auf 4,97V - bei den Ports überall 0V - bei VCC 4,99V bei
GND die 0V, dann bei AVCC auch 4,99V und bei AGND die 0V. Diese Werte
messe ich an den Pins direkt am µC

MFG
Markus

Autor: Christof Krüger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht klappt das Programmieren ja doch nicht? Kannst du das
Programm auch wieder korrekt auslesen?

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja kann ich... Ich erhalte wieder genau das, was ich heineingeschrieben
habe

Autor: Gunter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
hast Du mal einen manuellen Reset (bei angelegter Spannung)
probiert ?
Vielleicht steigt Deine Spannung beim Einschalten zu langsam
an.

Gruß
Gunter

Autor: Christof Krüger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steckst du den ISP denn auch mal ab?

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit dem manuellen RESET hab ich gerade probiert, hat aber nichts
gebracht. Danke trotzdem.

Den ISP steck ich ab, dann hab ich nur mehr die oben genannten Pins
beschalten. D.h. ich trenne die MISO, MOSI, SCK, und RESET - Leitung
vom µC.

MFG
Markus

Autor: Christof Krüger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiss jetzt auch nicht mehr weiter. Kann mir dann nur noch ein
Hardware-Problem vorstellen. Vielleicht traust du dich ja doch noch,
deine Beschaltung hochzuladen ;)

Autor: wolli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verwendest DU einen Quarz oder doch einen Quarzoszillator? Wenn es ein
Quarz ist, schwingt er richtig an?

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende einen Quarzoszillator und außerdem habe ich jetzt mal auf
den internen Takt umgeschalten um eben einen Fehler des externen Taktes
auszuschließen

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wegen dem Hochladen eines Fotos... ich hab zwar eine Digicam, die habe
ich aber derzeit jemanden ausgeborgt.

Aber wenn ich nur die nötigsten Pins angeschlossen habe und dort
entweder die geforderten 5V oder bei Masse die 0V miss, dann kann ja
bei der Verkabelung nichts daneben gegangen sein.

MFG
Markus

Autor: Christof Krüger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eigentlich nicht, aber eigentlch sollte alles ja auch funktionieren
:-/
Ich nehme auch mal an, dass du den richtigen Pin als /RESET beschaltest
und dich auch beim Breadboard auskennst? Entschuldige die Fragen, aber
man weiss ja nie...

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich nicht den richtigen Pin als RESET beschalten hätte, könnte ich
den µC ja garnicht programmieren oder auslesen. Beim Breadboard kenne
ich mich aus!

Zu mir: Ich bin Elektrotechniker, soll von mir aus nix heißen, aber a
bissl wos könntest ma scho glauben/zutrauen. Thx.

Na i versteh des eh, wenn i sowas im Forum lesen würd, tät i a gleich
denken, awa was soll ich machen wenns net funzt.

Najo was solls, vielleicht is da µC jo hin. Glaubs zwar net awa sonst
fällt ma nix ein, was es noch sein könnt.

Danke auf jeden Fall für Eure Bemühungen.

MFG
Markus

Autor: Gunter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
poste doch mal die paar Byte Hex-Code

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

Bewertung
0 lesenswert
nicht lesenswert
Hier das hex-file

Autor: Gunter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nochwas:
versuch mal ein RJMP direkt an den Anfang damit der
Code immer wieder ausgeführt wird.

Autor: Christof Krüger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
War ja net bös gemeint, aber man weiss ja erstmal nicht, mit wem man es
zu tun hat. Kann ein E-Techniker sein, aber auch ein 14-jähriger
Schüler, der net weiss, was er tut, es aber nicht zugeben möchte.
;)

Guter Tip von gunter, evtl. auch andere Ports ausprobieren, wenn du es
noch nicht gemacht hast.

Autor: Ingo Henze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Testprogramm ist ok.
Im Studio sieht das dann etwa so aus:
+00000000:   EF0F        SER     R16              Load immediate
+00000001:   BB01        OUT     0x11,R16         Out to I/O location
+00000002:   EF0C        LDI     R16,0xFC         Load immediate
+00000003:   BB02        OUT     0x12,R16         Out to I/O location
+00000004:   CFFF        RJMP    -0x0001          Relative jump

Ich kann da nix falsches erkennen.
Kann also nur die Hardware sein...

Autor: Mattias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also ich bin der Meinung, dass das file (test.hex) nicht gehen kann. Die
Startadresse ist :000000
Das kann bei einem Mega8 nicht gehen, weil dort die IR Vektoren stehen.
Meine Files fangen immer bei :100000... an.
Ist aber nur eine Vermutung.
Benutze doch einfach mal den winavr. Dann brauchst Du Dich damit nicht
zu befassen. Wenn es damit auch nicht geht, dann kann es nur noch
Hardware sein.

Mattias

Autor: Gunter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nö.
Mega8 Manual S.44:
If the program never enables an interrupt source, the
Interrupt Vectors are not used, and regular program code can be placed
at these locations.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke mal vorerst. Ich werde am Abend noch mal ein wenig herumprobieren
und dann werden wir ja sehen.

Danke nochmal
Bis dann

MFG
Markus

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schon langsam glaub ich wirklich es liegt am ATMEGA8. Ich hab jez
schnell umgeändert, dass es wieder von vorne anfängt-hatt aber nix
geholfen. Andere Ports hab ich auch schon am Anfang ausprobiert doch
auch kein Erfolg.

Also nochmal Zusammenfassung:
Das Programm scheint ja richtig zu sein und da ich das was ich in den
Flash geschrieben habe wieder auslesen kann, muss wohl auch das
Übertragen der Hex-Datei funktioniert haben.

Zur Hardware: Der Microcontroller steckt im Breadboard und es sind VCC,
GND, RESET, AGND, AVCC beschalten (nach dem Programmieren). VCC und AVCC
direkt mit +5V ; GND und AGND mit Masse. Der RESET-Pin wird über einen
10kOhm Pull-Up Widerstand auf nahezu 5V gehalten. Den externen
Oszillator habe ich weggelassen und die Fuse-Bits auf die Default-Werte
gestellt.

MFG
Markus

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

Bewertung
0 lesenswert
nicht lesenswert
Hier ein Sreenshot vom Inhalt des Flash-Speichers, wenn ich ihn auslese.

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

Bewertung
0 lesenswert
nicht lesenswert
Hier auch gleich noch die Einstellung der Fuses und Lockbits

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

Bewertung
0 lesenswert
nicht lesenswert
Also folgendes,
wenn ich Dein test.hex bei mir programmiere, dann sind einige PINs auf
5V. Der Flash Inhalt sieht aber nicht so aus wie bei Dir. Wenn ich
genau das, was Du in Deinem Bild zeigst, bei mir reinhacke, dann
passiert auch bei mir nichts. Das was bei Dir im Flash steht, stimmt
nicht !!!!
Im Anhang ist ein Bild, wo man sehen kann, was wirklich im Flash steht,
wenn man test.hex programmiert.

Mattias

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Also wenn das wirklich das Hex aus dem Flash ist gehen die Ausgaben
alle nach PinD.
Statt:   BB01        OUT     0x11,R16         Out to I/O location
steht:   BB00 = 0x10 = PinD
und      BB02        OUT     0x12,R16         Out to I/O location
hat      BB00 = 0x10 = PinD
Entweder es wird falsch gebrannt oder das Flash hat eine Meise.
Haste mal einen anderen uC (AT90...)
Kann es sein der Rechner ist zu schnell?
Zeige mal deine Yapp.ini
Andere SW testen.

Mehr fällt mir momentan nicht ein.

Viel Erfolg, Uwe

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für Eure Hilfe. Es funktioniert endlich.

Bei der Hardware hat auf jeden Fall alles gepasst. Nachdem ich "Erase
Chip" in yaap aufgerufen habe, und dann das Programm nochmal
rübergespielt hab, hat alles funktioniert. Bin ich froh! UART haut auch
schon hin. Habe ich doch noch Freude am AVR.

Danke nochmal!

MFG
Markus

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.