Ich kenne mich mit Simulavr nicht aus, mit was hast du assembliert?
Jedenfalls funktioniert dein Code mit AVR-Studio, das Z Flag wird in der CPI Zeile gesetzt und nach LED_on gesprungen.
Grüße
Hallo und frohe Weihnachten
ich sitze jetzt bestimmt schon 2 Stunden vor dem Problem einen Vergleich durchzuführen ohne Erfolg.
Und zwar habe ich auf dieser Seite http://www.dieelektronikerseite.de/u...lagsignale.htm diesen Beispielcode gefunden:
Dieser sollte ja rein theoretisch zu "LED_on" springen, da die zu vergleichenden Werte bei cdi ja gleich sind und im SREG das ZFLAG auf 0 sein müsste aber dem ist nicht so.Code:.include "m8def.inc" Start: ldi r16,0xFF out DDRD,r16 ldi r16,127 ; Lade r16 mit 127 cpi r16,127 ; Vergleiche r16 mit 127 breq LED_on ; Wenn Werte gleich, springe LED_off: ldi r16,0b00000000 out PORTD,r16 rjmp Start LED_on: ldi r16,0b00000001 out PORTD,r16 rjmp Start
Weder auf dem IC noch mit simulavr. Ich bin mit dem Debugger alles mal Schritt für Schritt durchgegangen und mir ist aufgefallem, dass (laut der oben genannten Seite) das 2 Bit von Rechts im SREG das ZFLAG ist. Dieses ist bei mir jedoch immer 1. Egal welche Vergleiche ich mit cdi durchführe..
Woran kann das liegen? Ich bin total verwirrt momentan vor allem da ich da gerade erst einsteige.
Gruß
Falsches HEX-File simuliert/gebrannt? Ich habe den Code gerade im AVR Studio getestet und er tut genau das was er soll.
mfG
Markus
Tiny ASURO Library: Thread und sf.net Seite
Also assembliert habe ich mit folgendem Script das ich in der ersten Zeile für Assembler angepasst habe
VAR1="main"
VAR2="Main"
rm $VAR2".*"
avr-as -o $VAR2".elf" -mmcu=atmega168 $VAR1".S"
avr-objdump -h -S $VAR2.elf >$VAR2".lss"
avr-objcopy -R .eeprom -O ihex $VAR2.elf $VAR2".hex"
avr-objcopy -j .eeprom --no-change-warnings --change-section-lma .eeprom=0 -O ihex $VAR2.elf $VAR2".eep"
avrdude -c avrispmkII -p m168 -P USB -e -v -Uflash:w:$VAR2.hex:a
Es funktioniert damit auch eigentlich alles bisher nur die bedingten Sprünge nicht das verwundert mich.
- - - Aktualisiert - - -
Der Simulavr braucht zum Debuggen die erzeugte .elf Datei und bei der Hex Datei bin ich mir sehr sicher das die gebrannt wurde da die alten bei jedem Scriptaufruf gelöscht werden.
- - - Aktualisiert - - -
Ich habe es gelöst bekommen!
Es war ein Fehler das Script zur C Kompilierung auf Assembler anzupassen.
Nachdem ich nur die Standardparameter für avr-as und avr-ld gesetzt habe gings.
Da sieht man mal das das Script oben alles mitmacht
Danke für eure Hilfe
Lesezeichen