- LiFePO4 Speicher Test         
Ergebnis 41 bis 50 von 65

Thema: Bascom Inline-Assembler

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #34
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    Also, ich habs gerade nochmal probiert:
    Code:
    Config Pind.2 = Input
    Portd.2 = 0
    Config Int0 = Rising
    On Int0 Getreceiver Nosave
    Config Timer0 = Timer , Prescale = 256
    On Timer0 Detectrxpause Nosave                              'timer overflow = pause in receiver's signal
    
    Dim Empf(5) As Byte
    
    ...
    
    Getreceiver:                                                'byte-array, cycles in range: 43, out of range: 28
    !PUSH    R16
    !IN      R16,       SREG
    !PUSH    R16
    !LDS     R16,       {channel}
    !INC     R16
    !STS     {channel}, R16
    !SUBI    R16,       2
    !CPI     R16,       5
    !BRCC    NotInRange
    !PUSH    XL
    !PUSH    XH
    LoadAdr Empf(1) , X
    !ADD     XL,        R16
    !CLR     R16
    !ADC     XH,        R16
    !IN      R16,       TCNT0
    !ST      X,         R16
    !POP     XH
    !POP     XL
    !NotInRange:
    !LDI     R16,       6
    !OUT     TCNT0,     R16
    !POP     R16
    !OUT     SREG,      R16
    !POP     R16
    Return                                                   'that means that there are problems with the receiver
    
    
    Detectrxpause:
    !PUSH    R16
    !IN      R16,       SREG
    !PUSH    R16
    !ldi     R16,       0
    !sts     {channel}, R16
    !POP     R16
    !OUT     SREG,      R16
    !POP     R16
    Return
    Es funktioniert doch, anscheinend hatte ich damals irgendwo einen Fehler...
    Habe jetzt auch den Timer0 Interrupt umgeschrieben, wäre nett, wenn du kurz drüberschauen könntest, obs so passt!? Fliegen tut das ganze
    Meinst du, ich solle jetzt noch die Arrays mit den temporären Variablen verändern? Habs gerade mal probiert, mithilfe der Overlay Funktion würde kein zusätzlicher Speicher verbraucht.
    Code:
    Dim Tmp1 As Byte At Empf(1) Overlay
    Dim Tmp2 As Byte At Empf(2) Overlay
    Dim Tmp3 As Byte At Empf(3) Overlay
    Dim Tmp4 As Byte At Empf(4) Overlay
    Dim Tmp5 As Byte At Empf(5) Overlay
    Außerdem würde ich mir dann die Zuweisung tmpx <--> empf(x) sparen?!
    Hältst du das für sinnvoll?

    Gruß
    Chris

    EDIT:
    Hab gerade folgendes eingefügt:
    Code:
    Dim Tmp1 As Byte At Empf(1) Overlay
    Dim Tmp2 As Byte At Empf(2) Overlay
    Dim Tmp3 As Byte At Empf(3) Overlay
    Dim Tmp4 As Byte At Empf(4) Overlay
    Dim Tmp5 As Byte At Empf(5) Overlay
    Dim Stmp1 As Integer At Sempf(1) Overlay
    Dim Stmp2 As Integer At Sempf(2) Overlay
    Dim Stmp3 As Integer At Sempf(3) Overlay
    Dim Stmp4 As Integer At Sempf(4) Overlay
    Dim Stmp5 As Integer At Sempf(5) Overlay
    Der Code funktioniert. Ich werde jetzt mal im Simulator testen, ob der Code dadurch schneller läuft. Melde mich dann wieder

    EDIT2:
    Hab gerade im Simulator folgendes probiert:
    Code:
    If Sempf(1) > -37 And Sempf(1) < 37 Then
       !nop
    End If
    
    If Stmp1 > -37 And Stmp1 < 37 Then
       !nop
    End If
    Beide IF-Abfragen brauchen incl. dem !Nop genau 34 Takte. Habe ich etwas anderes gemacht, als du gemeint hast oder bringts doch keine Besserung?
    Geändert von Che Guevara (24.12.2011 um 22:09 Uhr)

Ähnliche Themen

  1. Inline Assembler
    Von Che Guevara im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 16
    Letzter Beitrag: 01.02.2010, 19:25
  2. AVR GCC inline Assembler
    Von chientech im Forum Assembler-Programmierung
    Antworten: 1
    Letzter Beitrag: 26.09.2009, 16:39
  3. Inline Assembler für Anfänger
    Von 1udo1 im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 25.10.2007, 19:53
  4. Inline Assembler - Register
    Von s.o. im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 02.08.2007, 20:26
  5. Parameterübergabe bei Inline-Assembler
    Von ogni42 im Forum C - Programmierung (GCC u.a.)
    Antworten: 21
    Letzter Beitrag: 30.03.2006, 13:32

Berechtigungen

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

12V Akku bauen