- LiFePO4 Speicher Test         
Ergebnis 1 bis 9 von 9

Thema: Timer0-Int: TOV0 wird nicht gesetzt

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #8
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.707
    .. Woher weiß ich wieviel Speicher ein Befehl einnimmt? .. Datenblatt .. nur .. wieviele Clock cycles er benötigt ..
    Hallo NRicola,
    meine Assemblerprogramme bearbeite ich mit AVRStudio4. Das Studio7 hat ne fast deckungsgleiche Hilfe die aber nachinstalliert werden muss.

    Im Studio4 gibts in der Menuezeile die Hilfe: [Help] -> [Assembler Help] - - - und schon kommt ein Fenster mit ALLEN Befehlswörtern (z.B. [Index] -> Zu suchendes Schlüsselwort) in dem Du für jeden möglichen Befehl die komplette Beschreibung bekommst. Hier das Beispiel für SBI :
    Code:
     SBI - Set Bit in I/O  Register
    
    
      Description:
    
     Sets a specified bit in an I/O  register. This instruction operates on the lower 32 I/O registers - addresses  0-31.
      
     Operation:
     (i)I/O(A,b) ← 1
     
     Syntax:        Operands:               Program Counter:
     (i)SBI A,b     0 ≤ A ≤ 31, 0 ≤ b  ≤ 7  PC ← PC + 1
      
     16-bit Opcode:
     
    1001 1010 AAAA Abbb
    Status Register (SREG) and Boolean Formula:
    I T H S V N Z C
    - - - - - - - -
    Example: out $1E,r0 ; Write EEPROM address sbi $1C,0 ; Set read bit in EECR in r1,$1D ; Read EEPROM data Words: 1 (2 bytes) Cycles: 2 Cycles xmega/AVR8L: 1
    Natürlich steht da drin auch z.B. die Länge des Befehls, der Maschinencode für den Befehl selbst sowie die Ausführungsdauer in Maschinencyclen :
    Code:
    16-bit Opcode:
     
    1001 1010 AAAA Abbb
    ... Words: 1 (2 bytes) Cycles: 2
    Etwas anders ist das beim Programmieren von C im Studio, dort kannst Du das ohne Sonderfenster im *.lls-File lesen. Den File "deinCprogramm.lls" im Editor, z.B. notepad, öffnen:
    Code:
    ALCo.elf:     file format elf32-avr
    
    Sections:
    Idx Name          Size      VMA       LMA       File off  Algn
      0 .data         00000b08  00800100  000048fe  000049b2  2**0
                      CONTENTS, ALLOC, LOAD, DATA
      1 .text         000048fe  00000000  00000000  000000b4  2**1
                      CONTENTS, ALLOC, LOAD, READONLY, CODE
      2 .bss          0000037a  00800c08  00800c08  000054ba  2**0
                      ALLOC
      3 .eeprom       00000315  00810000  00810000  000054ba  2**0
                      CONTENTS, ALLOC, LOAD, DATA
      4 .debug_aranges 00000020  00000000  00000000  000057cf  2**0
                      CONTENTS, READONLY, DEBUGGING
      5 .debug_pubnames 000008ac  00000000  00000000  000057ef  2**0
                      CONTENTS, READONLY, DEBUGGING
      6 .debug_info   00002c39  00000000  00000000  0000609b  2**0
                      CONTENTS, READONLY, DEBUGGING
      7 .debug_abbrev 000003e9  00000000  00000000  00008cd4  2**0
                      CONTENTS, READONLY, DEBUGGING
      8 .debug_line   000039cd  00000000  00000000  000090bd  2**0
                      CONTENTS, READONLY, DEBUGGING
      9 .debug_frame  000005a0  00000000  00000000  0000ca8c  2**2
                      CONTENTS, READONLY, DEBUGGING
     10 .debug_str    000007bc  00000000  00000000  0000d02c  2**0
                      CONTENTS, READONLY, DEBUGGING
     11 .debug_loc    000013b9  00000000  00000000  0000d7e8  2**0
                      CONTENTS, READONLY, DEBUGGING
     12 .debug_ranges 000001b0  00000000  00000000  0000eba1  2**0
                      CONTENTS, READONLY, DEBUGGING
    
    Disassembly of section .text:
    
    00000000 <__vectors>:
           0:    0c 94 46 00     jmp    0x8c    ; 0x8c <__ctors_end>
           4:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
           8:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
           c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          10:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          14:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          18:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          1c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          20:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          24:    0c 94 45 0a     jmp    0x148a    ; 0x148a <__vector_9>
          28:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          2c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          30:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          34:    0c 94 e6 06     jmp    0xdcc    ; 0xdcc <__vector_13>
          38:    0c 94 cc 09     jmp    0x1398    ; 0x1398 <__vector_14>
          3c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          40:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          44:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          48:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          4c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          50:    0c 94 a4 00     jmp    0x148    ; 0x148 <__vector_20>
          54:    0c 94 d3 00     jmp    0x1a6    ; 0x1a6 <__vector_21>
          58:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          5c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          60:    0c 94 26 0b     jmp    0x164c    ; 0x164c <__vector_24>
          64:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          68:    0c 94 48 01     jmp    0x290    ; 0x290 <__vector_26>
          6c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          70:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          74:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          78:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          7c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          80:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          84:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
          88:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
    
    0000008c <__ctors_end>:
          8c:    11 24           eor    r1, r1
          8e:    1f be           out    0x3f, r1    ; 63
          90:    cf ef           ldi    r28, 0xFF    ; 255
          92:    d0 e4           ldi    r29, 0x40    ; 64
          94:    de bf           out    0x3e, r29    ; 62
          96:    cd bf           out    0x3d, r28    ; 61
    
    00000098 <__do_copy_data>:
          98:    1c e0           ldi    r17, 0x0C    ; 12
          9a:    a0 e0           ldi    r26, 0x00    ; 0
          9c:    b1 e0           ldi    r27, 0x01    ; 1
          9e:    ee ef           ldi    r30, 0xFE    ; 254
          a0:    f8 e4           ldi    r31, 0x48    ; 72
          a2:    00 e0           ldi    r16, 0x00    ; 0
          a4:    0b bf           out    0x3b, r16    ; 59
          a6:    02 c0           rjmp    .+4          ; 0xac <__do_copy_data+0x14>
          a8:    07 90           elpm    r0, Z+
          aa:    0d 92           st    X+, r0
          ac:    a8 30           cpi    r26, 0x08    ; 8
          ae:    b1 07           cpc    r27, r17
          b0:    d9 f7           brne    .-10         ; 0xa8 <__do_copy_data+0x10>
    
    000000b2 <__do_clear_bss>:
          b2:    1f e0           ldi    r17, 0x0F    ; 15
          b4:    a8 e0           ldi    r26, 0x08    ; 8
          b6:    bc e0           ldi    r27, 0x0C    ; 12
          b8:    01 c0           rjmp    .+2          ; 0xbc <.do_clear_bss_start>
    
    000000ba <.do_clear_bss_loop>:
          ba:    1d 92           st    X+, r1
    
    000000bc <.do_clear_bss_start>:
          bc:    a2 38           cpi    r26, 0x82    ; 130
          be:    b1 07           cpc    r27, r17
          c0:    e1 f7           brne    .-8          ; 0xba <.do_clear_bss_loop>
          c2:    0e 94 1a 22     call    0x4434    ; 0x4434 <main>
          c6:    0c 94 7d 24     jmp    0x48fa    ; 0x48fa <_exit>
    
    000000ca <__bad_interrupt>:
          ca:    0c 94 00 00     jmp    0    ; 0x0 <__vectors>
    
    000000ce <init_uart0>:
                        // count up and wrap around
    
    // ============================================================================== =
    void init_uart0( u16 bauddivider )
    {
      UBRR0H = bauddivider >> 8;
          ce:    90 93 c5 00     sts    0x00C5, r25
      UBRR0L = bauddivider;            // set baud rate
          d2:    80 93 c4 00     sts    0x00C4, r24
      UCSR0A = 0;                // no U2X, MPCM
          d6:    10 92 c0 00     sts    0x00C0, r1
      UCSR0C = 1<<UCSZ01^1<<UCSZ00        // 8 Bit
          da:    86 e0           ldi    r24, 0x06    ; 6
          dc:    80 93 c2 00     sts    0x00C2, r24
    #ifdef URSEL0
           ^1<<URSEL0            // if UCSR0C shared with UBRR0H
    #endif
           ;
      UCSR0B = 1<<RXEN0^1<<TXEN0^        // enable RX, TX
          e0:    88 e9           ldi    r24, 0x98    ; 152
          e2:    80 93 c1 00     sts    0x00C1, r24
           1<<RXCIE0;            // enable RX interrupt
      rx_in = rx_out;            // set buffer empty
          e6:    80 91 8b 0c     lds    r24, 0x0C8B
          ea:    80 93 8a 0c     sts    0x0C8A, r24
      tx_in = tx_out;
          ee:    80 91 0d 0d     lds    r24, 0x0D0D
          f2:    80 93 0c 0d     sts    0x0D0C, r24
    }
          f6:    08 95           ret
    
    000000f8 <ukbhit0>:
    // ============================================================================== =
    Da siehst Du am Fortschritt des Programmcounters (Beispiel rot markiert) - ob der um zwei oder vier Registerzellen weiterzählt (na ja, müsste ausführlicher beschrieben werden) - die Länge des Befehls.
    Geändert von oberallgeier (20.04.2016 um 08:58 Uhr)
    Ciao sagt der JoeamBerg

Ähnliche Themen

  1. Timer triggert DMA, aber Overflow Flag wird nicht zurück gesetzt
    Von erik_wolfram im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 22.08.2014, 12:33
  2. Ausgang wird nicht richtig gesetzt
    Von TobiasBlome im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 18.09.2006, 20:02
  3. PORTD,4 wird nicht auf HIGH gesetzt
    Von Pitt1986 im Forum PIC Controller
    Antworten: 15
    Letzter Beitrag: 25.02.2006, 19:23
  4. Antworten: 8
    Letzter Beitrag: 18.05.2005, 21:21
  5. welches bit wird bei... gesetzt
    Von pebisoft im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 19.02.2005, 17:07

Berechtigungen

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

Labornetzteil AliExpress