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
falsches forum. data direction gesetzt (DDRx)?
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?
Mit Eingänge und "Hab ich derzeit keine" meinte ich natürlich das ich keine verwende!! Um das nur klarzustellen!
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
Vielleicht klappt das Programmieren ja doch nicht? Kannst du das Programm auch wieder korrekt auslesen?
Ja kann ich... Ich erhalte wieder genau das, was ich heineingeschrieben habe
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 ;)
Verwendest DU einen Quarz oder doch einen Quarzoszillator? Wenn es ein Quarz ist, schwingt er richtig an?
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
nochwas: versuch mal ein RJMP direkt an den Anfang damit der Code immer wieder ausgeführt wird.
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.
Danke mal vorerst. Ich werde am Abend noch mal ein wenig herumprobieren und dann werden wir ja sehen. Danke nochmal Bis dann MFG Markus
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
Hier ein Sreenshot vom Inhalt des Flash-Speichers, wenn ich ihn auslese.
Hier auch gleich noch die Einstellung der Fuses und Lockbits
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.