Hallo.... Ich habs geschafft mein EBAY-ISP mit meinem mega128A-Board zum Laufen bekommen...JUHU Ein bisschen Bit-schupserei klappt aber ich habe Probleme mit meiner delay subroutine. Aufrufen mit CALL funzt, aber den Befehl "RET" führt er nicht aus, und bleibt einfach stehen. wenn ich statt RET einen RJMP xy eintrage funktioniert es... Mach ich was grundlegenes falsch? Gruss...... Andre
andre menzel schrieb: > Mach ich was grundlegenes falsch? Ja, Du zeigst Dein Programm vollständiges nicht :-(
andre menzel schrieb: > ... mega128A-Board ... > ... > Aufrufen mit CALL funzt, aber den Befehl "RET" führt er nicht aus, und > bleibt einfach stehen. M103C-Fuse deaktivieren.
Der M128 kommt im M103-Modus zur Welt, was zu exakt diesem Effekt führt. Entsprechende Fuse umswitchen.
Hi
>Mach ich was grundlegenes falsch?
Ich gehe mal von Assembler aus: Stack nicht initialisiert.
MfG Spess
Stefan Ernst schrieb: > M103C-Fuse deaktivieren Danke...schaue ich sofort.... Spess53 schrieb: > Ich gehe mal von Assembler aus: Stack nicht initialisiert Ja...Assember.. :-) mein Steckenpferd... hmmmm Stack initialisiere ich wie...? sorry...AVR-Dummy.. :-D André
Hi Oder Datenblatt S.61. Die vier Befehle, die nach 'RESET:' stehen. MfG Spess
.include "m128adef.inc" .org 0x00 rjmp main init: ldi r16,0xFF out DDRC,r16 nop ldi r16,0xFE out DDRB,r16 main: ldi r21,0x08 ldi r16,0xFE sec main5: out PORTC,r16 rol r16 call delay out PORTC,r21 call delay rjmp main5 delay: ldi r18,0x04 ldi r19,0xFF ldi r20,0xFF L1: dec r20 brne L1 dec r19 brne L1 dec r18 brne L1 ; rjmp main5 ret Exteted Fuse ist FD Watchdog 1 M103C 0 andere Kombinationen gehen gar nicht..... komisch....
andre menzel schrieb: > andere Kombinationen gehen gar nicht..... komisch.... Die muss auf FF, eine 0 bedeutet: diese Option ist eingeschaltet. http://www.engbedded.com/fusecalc
Hi >M103C 0 Damit ist der M103-Mode eingeschaltet. >.include "m128adef.inc" > .... Da wird kein Stack initialisiert. MfG spess
Spess53 schrieb: > Da wird kein Stack initialisiert. > > MfG spess Muss man das bei dem überhaupt? Bei vielen AVRs kann man sich das auch sparen.
Er wird schon initialisiert. Aber auf 0. Das bringts nicht wirklich. Der M128 ist einer der ältesten Megas und das A hat daran nichts geändert.
Eumel schrieb: > Muss man das bei dem überhaupt? Bei vielen AVRs kann man sich das auch > sparen. Steht im DB, wird beim ATM128 auf 0 initialisiert, bei neueren AVR's bereits auf RAMEND.
.include "m128adef.inc" .org 0x00 rjmp main RESET: ldi r16, high(RAMEND) ; Main program start out SPH,r16 ; Set stack pointer to top of RAM ldi r16, low(RAMEND) out SPL,r16 sei ; Enable interrupts init: ldi r16,0xFF out DDRC,r16 nop ldi r16,0xFE out DDRB,r16 main: ldi r21,0x08 ldi r16,0xFE sec main5: out PORTC,r16 rol r16 call delay out PORTC,r21 call delay rjmp main5 delay: ldi r18,0x04 ldi r19,0xFF ldi r20,0xFF L1: dec r20 brne L1 dec r19 brne L1 dec r18 brne L1 ret so sieht es jetzt aus....... und so bleibt er in der delay "hängen", und wenn ich die Fuses auf FF setzte, dann geht gar nichts mehr....
Probiere mal ldi r16,low (RAMEND) out SP,r16 So ging es dann bei mir mit einem ATtiny26
Ich bin auch net so sicher, ob der Tipp mit 0xFF der Weisheit letzter Schluss war. Denn das läuft auf einen externen Quarz raus - und wenn da keiner sein sollte...
andre menzel schrieb: > und wenn ich die Fuses auf FF setzte, dann geht gar nichts mehr.... Mal die anderen Fuses verglichen ? Du überspringst RESET: und rufst nur main auf...
Nope, dein Code war richtig. Der Tiny hat nur SP, der M128 hat beide.
Aber leider funktioniert das alles nicht... mit Fuse FD RET funzt nicht mit Fuse FF macht er GAR nichts........ :-(
andre menzel schrieb: > Aber leider funktioniert das alles nicht... Gelesen, dass Du den SP-Init zwar im Code hast, aber nicht aufrufst ?
Apropus Fuses: Da gibts 3 Bytes, nicht nur 1. Von welchem redest du? Die FF passen nur zum dritten (extended). Die anderen beiden solltest du erst einmal in Ruhe lassen, dort könnte es sein, dass du dich damit aussperrst.
@MWS Danke.....habe ich ganz übersehen.... jetzt geht auch fuse=FF und RET DANKE an alle........... :-D
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.