Atmega8 lässt sich programmieren-jedoch tut sich nichts!

Gast #112590
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
Gast #112594
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
Gast #112596
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.
Gast #112598
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
Gast #112600
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?
Gast #112603
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.
Gast #112604
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
Gast #112609
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
Gast #112613
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
Gast #112614
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...
Gast #112615
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
Gast #112619
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.
Gast #112620
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...
Gast #112621
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
Gast #112624
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
Gast #112627
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
Angehängte Dateien:
Gast #112628
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
Gast #112629
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren