- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 18 von 18

Thema: Zwei Word Variablen in einer anderen verpacken Schieberegist

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    25.01.2007
    Beiträge
    20
    Anzeige

    E-Bike
    Hi, danke erstmal für den Code,

    Leider ist mir noch etwas nicht ganz klar,

    Du schriebst:

    Code:
     For I = 0 To 7                                        'Bits 0-7 ausgeben
                xx = Controls And 1            ' daten pin setzen            Dat = Xx.0
                Clb = 1                                         ' Clock 1
                Shift Controls , right , 1
                Clb = 0                                         ' Clock 0
          Next
       Next I
    sind da auchschon die restlichen 17 bits enthalten, oder muss ich die noch extra dazu rausschieben?

    Außerdem muss ich jetzt noch die Frequenz dazufügen oder?

    Bis jetzt ist nur das Controlword drinnen oder?

    Sorry bin wie du siehst noch relativ frisch...

    Danke schonmal für deine Antwort

    so siehts im Moment aus.
    Aber mir ist noch nicht ganz klar wie das mit dem Overlay klappt.

    So wie ich das sehe, hab ich das Controlword in dem Code unten noch garnicht mit der Frequenz in einer neuen Variable zusammengeführt oder?

    Code:
    dim Frequenz As Word                                        'Frequenzvariable für PLL 
    Dim Sendebytes(4) As Byte At Frequenz Overlay
    
    Dim Controlw As Word                                        'Controlword für PLL
    Dim Controls As Word                                        'Var für Controlword
    Dim Controls1 As Long                                  'Variable Control+Frequenz
    
    Dim Index As Byte
    
    Dim Speicher As Eram Integer                                'Senderspeicher 
    
    Dim I As Byte
    
    Tunerstart:
    
    Frequenz = 4060                                             'Teilerwert von 90,8 MHz 
    laden
    
    Gosub Initialisieren                                        ' In den LM7001 transfer
    
    Cls
    
    Locate 1 , 2
    
    Lcd "Tuner"                                                 'Lcd Tuner anzeigen
    
    Muting = 1                                                  'Audiomuting aus
    
    Return
    
    
    '..........................Steuerinfos und Frequenz übertragen            ......
    
    Initialisieren:                                             'Control und Frequenzword 
    
    Squelch = 1                                                 'Squelch einschalten
    
    Gosub Frequenzanzeige
    
    Controlw = &B00000101
    
    Gosub Senden
    
    Return
    
    
    Senden:
    
    Dat = 0                                                     'Dat
    Dlen = 0                                                    'CE
    Clb = 0                                                     'Cl
    
    'Übertragung beginnt............................................
    
    Dlen = 1                                                    'CE ein
    
    For Index = 1 To 3
    
    Controls = Sendebytes(index)                                'Bits 0-24 ausgeben
    
    For I = 0 To 24
    
       Controls1 = Controls And 1                               'Datenpin setzen
    
       Dat = Controls1.0
    
       Clb = 1                                                  'Clock 1
    
       Shift Controls , Right , 1                               ' Bits nach rechts 
    
       Clb = 0                                                  'Clock 2
    
       Next
    
    Next I
    
    'übertragung beenden.......................................................
    
    Dlen = 0                                                    'Übertragung beenden
    
    Return

  2. #12
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Overlay:
    Code:
    Dim Frequenz As Word        addresse &H0060     länge 2 Byte 
    Dim Controlw As Word        addresse &H0062     länge 2 Byte 
    Dim Controls As Byte          addresse &H0064     länge 1 Byte     
    Dim Controls1 As Long        addresse &H0065     länge 4 Byte     
    
    Dim Sendebytes(4) As Byte AT FREQUENZ OVERLAY -->
                       ' d.h. das ist auch auf   addresse &H0060    länge 4 x 1 Byte
    Vor dem Senden muss man in Controlw die Bits
    B0, B1, B2 , TB , R0, R1, R2, S
    enthalten sein bzw. zusammengemischt werden

    *grübel*

    Eigentlich ist das ein unnötiges Gefummel. Vorschlag: Einfacher

    Code:
    DIM Frequenz as Word
    DIM Control1 As Byte         ' mit B0, B1, B2 , TB
    DIM Control2 As Byte         ' mit R0, R1, R2, S 
    
    ' das schreibst du nach Herzenslust was rein 
    
    SENDEN:
    
    DIM Sendewort AS Word 
    
    Clb  = 0
    Dlen = 1
    
      Sendewort = Frequenz
    for i = 1 to 16 
           XX =  Sendewort AND &H01
           Dat = XX.0      
           CLB = 1 
           shift Sendewort, right, 1
           CLB = 0
       NEXT  
    
      Sendewort = Control1
    for i = 1 to 4
           XX =  Sendewort AND &H01
           Dat = XX.0      
           CLB = 1 
           shift Sendewort, right, 1
           CLB = 0
       NEXT  
    
      Sendewort = Control2
    for i = 1 to 4
           XX =  Sendewort AND &H01
           Dat = XX.0      
           CLB = 1 
           shift Sendewort, right, 1
           CLB = 0
       NEXT  
    
    Dlen = 0
    Das sieht zwar im ersten moment nach Spaghetti aus, auf es ist effektiv, wenn man das Gewurstel betrachtet, das man sonst machen muss, um die Daten zusammenzuschippern.

    Könnte man noch mit subroutinen eleganter machen, aber was soll's
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    25.01.2007
    Beiträge
    20
    Hi habs gerade noch getestet,

    tut leider immernochnicht.

    Vielleicht braucht er ja die Pausen?

    Oder es ist nen Hardwareproblem, ich häng mal mein gesamtes Programm an, ist aber recht umfangreich
    Angehängte Dateien Angehängte Dateien

  4. #14
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    ändert er denn die Ausgabevariable zumindest richtig?

  5. #15
    Neuer Benutzer Öfters hier
    Registriert seit
    25.01.2007
    Beiträge
    20
    Wo finde ich denn die Ausgabevariable im Simulator?

  6. #16
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Eintragen
    Den Simulator aufmachen und dann zeigt er dir ne leere Liste wo du vorne den Namen reinschreibst.
    Wunderlicherweise macht er das für lokale Variablen (also in Subs) automatisch (2. Liste hinter der 1.), aber für die globalen nicht.
    Da kannst du dann den Binär- / Hex- / Dezimalwert sehen

  7. #17
    Neuer Benutzer Öfters hier
    Registriert seit
    25.01.2007
    Beiträge
    20
    Hi,

    also im Simulator ändern sich die Variablen, aber sowohl Control 1 als auch 2 haben mehr ja beide 8 bit wegen Byte, das müsste doch eigentlich zu lang sein. oder ist das egal?

    Irgendwo in der Hilfe hab ich gelesen, das man auch eigene Datentypen definieren kann, war mir aber noch nicht ganz klar, wie das jetzt genau geht. Vielleicht ginge es ja damit.

  8. #18
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    also Bytes können keine 16 Bit oder so fassen, klar, aber ein Word schon. Da sollen die ja rein...

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

12V Akku bauen