- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 6 von 6

Thema: Timer => Fehlermeldungen beim compilieren

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.06.2006
    Beiträge
    478

    Timer => Fehlermeldungen beim compilieren

    Anzeige

    E-Bike
    Hello again,
    ich habe im myavr Workpad folgenden Code geschrieben, der durch den Wertevergleich des Timers mit einem Register einen Port an und aus schalten soll.
    Code:
     main:	ldi	r16,lo8(RAMEND)
    	out	SPL,r16
    	ldi	r16,hi8(RAMEND)
    	out	SPH,r16
    	ldi     r16,0b00000101
    	out     TCCR0,r16
    	ldi     r16,0b11111111
    	out DDRC,r16
    	ldi     r17,0b00000001
    	;Hier Init-Code eintragen.
    ;------------------------------------------------------------------------
    mainloop:	wdr
    an:            
                cpi  TCNT0,r16
    	BREQ weiter
    	rjmp an ;Hier den Quellcode eintragen.
    weiter: 	
    51            ldi  r16,0b0000000
                out  PORTC,r16
                ldi  r16,0b11111111
    aus:
    59            cpi  TCNT0,r17
                BREQ weiterr
                rjmp aus
    weiterr:            
    	rjmp	mainloop
    Dazu bekomme ich folgende Fehlermeldung:
    Code:
     Assembler Meldungen: 
    m8.asm:51  51: Fehler: number must be less than 32 
     51: Fehler: Zulässig sind nur Register oder Werte im Bereich: 0 to 31 
     51: Warnung: Der Ausdruck bzw. die Sprungmarke befindet sich möglicherweise außerhalb der 8-bit Zahlenbereiches. 
    m8.asm:59  59: Fehler: number must be less than 32 
     59: Fehler: Zulässig sind nur Register oder Werte im Bereich: 0 to 31 
     59: Warnung: Der Ausdruck bzw. die Sprungmarke befindet sich möglicherweise außerhalb der 8-bit Zahlenbereiches.
    Kann mir da jemand sagen, was nicht stimmt?

    Danke

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    36
    Beiträge
    470
    hast due das includefile dan definiert? das Wäre ne möglichkeit, und das Lo8 und Hi8 mach da mal Low und High draus

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Bist du sicher, daß der Assembler weiß, was du mit 0b... meinst? Das ist zumindest überaus unüblich. Nur einige gepatchte GCC verstehen das.
    Disclaimer: none. Sue me.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569

    Re: Timer => Fehlermeldungen beim compilieren

    1. Schlag mal nach, wofür der Befehl cpi gut ist.
    2. Schlag ausserdem nach welche Bereiche ein breq überspringen kann ....

    als Referenz empfehle ich das Instruction Set

    Zitat Zitat von Sprinters
    Bist du sicher, daß der Assembler weiß, was du mit 0b... meinst? Das ist zumindest überaus unüblich. Nur einige gepatchte GCC verstehen das.
    zumindest das AVR Studio erkennt es ohne Probleme (also der Assembler dort)
    Grundregeln des Forenpostings:
    1. Nutze niemals die Suchfunktion!
    2. Überprüfe niemals die Topics nach Ähnlichkeiten!
    3. Schreibe alles in hellgelb!

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.03.2005
    Beiträge
    141
    hallo,

    hab das ganze mal in mein Workpad kopiert und die übersetzungsfehler ausgebügelt... aber nicht kontrolliert ob der code logisch korrekt ist

    Code:
    ;+----------------------------------------------------------------------
    ;| Title		: myAVR Grundgerüst für ATmega8
    ;+----------------------------------------------------------------------
    ;| Funktion		: ...
    ;| Schaltung	: ...
    ;+----------------------------------------------------------------------
    ;| Prozessor	: ATmega8
    ;| Takt		: 3,6864 MHz
    ;| Sprache       	: Assembler
    ;| Datum         	: ...
    ;| Version       	: ...
    ;| Autor         	: ...
    ;+----------------------------------------------------------------------
    .include	"AVR.H"
    ;------------------------------------------------------------------------
    ;Reset and Interrupt vector             ;VNr.  Beschreibung
    	rjmp	main	;1   POWER ON RESET
    	reti		;2   Int0-Interrupt
    	reti		;3   Int1-Interrupt
    	reti		;4   TC2 Compare Match
    	reti		;5   TC2 Overflow
    	reti		;6   TC1 Capture
    	reti		;7   TC1 Compare Match A
    	reti		;8   TC1 Compare Match B
    	reti		;9   TC1 Overflow
    	reti		;10  TC0 Overflow
    	reti		;11  SPI, STC Serial Transfer Complete
    	reti		;12  UART Rx Complete
    	reti		;13  UART Data Register Empty
    	reti		;14  UART Tx Complete
    	reti		;15  ADC Conversion Complete
    	reti		;16  EEPROM Ready
    	reti		;17  Analog Comparator
    	reti		;18  TWI (I²C) Serial Interface
    	reti		;19  Store Program Memory Ready
    ;------------------------------------------------------------------------
    ;Start, Power ON, Reset
    main:	ldi	r16,lo8(RAMEND)
    	out	SPL,r16
    	ldi	r16,hi8(RAMEND)
    	out	SPH,r16
    	ldi	r16,0b00000101
    	out	TCCR0,r16
    	ldi	r16,0b11111111
    	out	DDRC,r16
    	ldi	r17,0b00000001
    ;Hier Init-Code eintragen.
    ;------------------------------------------------------------------------
    mainloop:	
    an:	;falsch cpi  TCNT0,r16 ... cpi -> vergleiche register mit konstante
    	in	r18,TCNT0
    	cp	r18,r16
    	breq	weiter
    	rjmp	an	;Hier den Quellcode eintragen.
    weiter:
    	ldi	r16,0b0000000
    	out	PORTC,r16
    	ldi	r16,0b11111111
    aus:
    	; falsch cpiTCNT0,r17
    	in	r18,TCNT0
    	cp	r18,r16
    	breq	weiterr
    	rjmp	aus
    weiterr:
    	rjmp	mainloop
    
    ;------------------------------------------------------------------------
    gruß jahn

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.06.2006
    Beiträge
    478
    Ähm...ja....
    hab wohl die goldene Regel mit dem IN vergessen...

    Und Danke für die Antworten.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress