- 12V Akku mit 280 Ah bauen         
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-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von Che Guevara Beitrag anzeigen
    Also erstmal möchte ich dir frohe Weihnachten wünschen
    Danke, das wünsch' ich Dir auch
    Das finde ich sehr nett, dass du dir soviel Mühe gibst.
    Ist auch ein Thema, das mich interessiert.
    ...aber ich habs mal probeweise eingespielt und da hats nicht funktioniert... Ich werds aber morgen nochmal probieren.
    Da ist's dann interessant wie Du das machst, poste doch mal den entsprechenden Code. Würde dann das Byte Empf(x) vor weiterer Verarbeitung einer temporären Word-Variable zuweisen.
    Hm, das habe ich mir schon gedacht. Aber wenns morgen mit einem Byte doch funktionieren sollte, dann ist das ja nicht mehr soooo schlimm, oder?
    Ist nicht schlimm, da scheinbar kein schädlicher Nebeneffekt auftritt, wenn Highbyte des Words immer 0 ist, gibt's auch kein Problem durch Interruptunterbrechung.
    Du verschwendest halt ein paar Bytes SRam und ein paar Zyklen.
    Also Werte > 255 werden nie im Empf-Array drinstehen.
    Dann kann man die ISR ein wenig kürzer halten, siehe unten.
    Was genau meinst du mit temporären Variablen? So:
    So:
    Code:
    Empf_Tmp = Empf(throttlechannel)
    Sempf_Tmp = Sempf(throttlechannel)
    If Empf_Tmp > 61 And Empf_Tmp < 139 Then                      'don't process values that can't be correct
      Sempf_Tmp = Empf_Tmp - 61
      Sempf_Tmp = Sempf_Tmp * 3                                 '==> values ranging from 3 (stick at bottom) to 228 (full throttle)
        Empf(throttlechannel) = Empf_Tmp
        Sempf(throttlechannel) = Sempf_Tmp
    End If
    Und genauso mit nick, roll und yaw.

    Du hast bemerkt, dass mein vorher geposteter Code dafür gedacht ist, im Simulator zu laufen ?
    So kann ohne großartige Rumprobiererei am lebenden Objekt die ISR auf korrekte Funktion überprüft werden.

    Wenn Probleme beim Vergleich Byte mit Word existieren, dann solltest Du Michaels Ratschlag zum Update nachkommen.

    Hier der Bytearraycode:
    Code:
    Dim Empf(5) As Byte
    ' ...
    Isr_int0:                                                   ' 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
    Geändert von MagicWSmoke (24.12.2011 um 20:36 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
  •  

fchao-Sinus-Wechselrichter AliExpress