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
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
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.
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.
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.
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
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
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?
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
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.
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
Hi,
hast Du mal einen manuellen Reset (bei angelegter Spannung)
probiert ?
Vielleicht steigt Deine Spannung beim Einschalten zu langsam
an.
Gruß
Gunter
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
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 ;)
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
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
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...
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
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.
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...
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
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.
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
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
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
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