- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

Thema: Zu doof zum Bits verschieben? [Gelöst!]

  1. #11
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.10.2007
    Ort
    41462 Neuss
    Alter
    56
    Beiträge
    375
    Anzeige

    Powerstation Test
    probier doch mal was bei
    shift -3, left, 1
    rauskommt.

    wenn das ergebnis negativ ist, hat er oben ne 1 und keine 0 reingeschoben.

  2. #12
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    naja die Syntax bei Shift ist SHIFT Variable, Richtung, Weite.
    Aufgefüllt wird hier dann immer mit 0.

    Das komische ist ja, dass lt. Simulator alles korrekt verschoben wird; die eigentliche Funktion SendData bekommt dann auch (angeblich!) die Daten korrekt... naja...
    Evtl doch ein Problem im Compiler...

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    Sodele... Fehler gefunden:

    Nach einiger Probiererei in Sachen Zeitoptimierung hab ich das mit der Übergabe der getrennten Werte nochmals versucht... und (ich weiss nicht wie) bin auf die Idee gekommen: Hey, was is eigentlich mit dem Soft Stack? Kann ja dann nur daran liegen, dass zwar am PC genug Platz da ist, aber im AVR dann einfach selbiger ausgeht...
    Nachgeschaut und Tatsache, der war "nur" auf 8 eingestellt; Nach dem Verdoppeln des Wertes auf 16 läuft diese Möglichkeit auch. Und da somit die ganze Umwandlung von String nach Byte etc. wegfällt, wurde Zeit eingespart und der Bildaufbau beschleunigt.

  4. #14
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Jau, bei so komischem Verhalten und vielen Daten in den Subs muss man die Stacks anpassen...

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.10.2007
    Ort
    41462 Neuss
    Alter
    56
    Beiträge
    375
    ah ja, dann ist das eigentlich ein schwachpunkt der simulation, die sollte eigentlich merken,das der stack des conrollers hier nicht reicht, oder?

  6. #16
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.04.2005
    Ort
    Aarau
    Alter
    42
    Beiträge
    982
    ich habe letztens auch die homepage von thomas pfeifer gefunden und dachte darüber nach den C quellcode in Bascom zu übersetzen... währe es möglich das du deinen code hier veröffentlichst? es würden sich sicher viele darüber freuen insbesondere ich

    gruss bluesmash

  7. #17
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    Also hier im Anhang ist mal der Code. Funktionen sind eigentlich nur das Setzen einzelner Pixel mit 16-Bit-Farbinformation. Aufruf erfolgt über den SetPixel-Befehl, gefolgt von den Werten für Rot, Grün, Blau; jeweils Bytes (0-255); werden dann automatisch in den 16-Bit-Code umgewandelt.

    Der Code an sich liegt jetzt jedoch im Archiv, da ich kurz nach der Problemlösung herausgefunden hab, dass ja Bascom selbst bereits alle Befehle für die Ansteuerung dieser Displays bereitstellt (u.a. mit der Lib lcd-pcf8833.lbx)... man glaubt garnicht, wie ver*** man sich danach vorkommt, wenn man 2 Tage lang an nem Problem arbeitet und sucht und dann feststellt, dass es das ja alles schon fertig gibt... und dass das alles auch vielfach schneller läuft.

    Naja, hat aber auch Vorteile; man lernt eben, wie man solche Displays zu Fuss ansteuert oder auch wie man die Bildausgabe um 90/180/270° drehen kann.

    Hier der Code:
    Code:
    '! Nur 16-Bit Ansteuerung funktionsfähig
    ' HW-Stack:  32
    ' Soft Stk:  16
    ' Framesize: 24
    ' µC: ATMega8 @ 8MHz
    
    '-------------------------------------------------------------------------------
    ' Declaration: Subs
    '-------------------------------------------------------------------------------
      Declare Sub SendCMD(byval CMD as Byte)
      Declare Sub SendDATA(byval CMD as Byte)
      Declare Sub SetPixel(byval xRed as Byte , byval xGreen as Byte , byval xBlue as Byte)
    
    
    '-------------------------------------------------------------------------------
    ' Declaration: Ports
    '-------------------------------------------------------------------------------
      config pinC.5 = output
      config pinC.4 = output
      config pinC.3 = output
      config pinC.2 = output
      Config PINC.1 = output
    
      CS ALIAS PortC.5
      CLK ALIAS PORTC.4
      SDA ALIAS PORTC.3
      RST ALIAS PORTC.2
      LED ALIAS PORTC.1
    
    
    '-------------------------------------------------------------------------------
    ' Declaration: Variables
    '-------------------------------------------------------------------------------
      DIM i as word
      dim j as word
      DIM ColorMode As Byte
      DIM ColorString As String * 7
      DIM R as Byte
      DIM G1 as Byte
      DIM G2 As Byte
      DIM B1 as Byte
      DIM ColorData1 As Byte
      DIM ColorData2 As Byte
      DIM ColorNibble As Byte
      Dim CMDTEMP AS BYTE
    
    
    '-------------------------------------------------------------------------------
    ' Declaration: Constants
    '-------------------------------------------------------------------------------
      Const Mode_8Bit = 8
      CONST Mode_12Bit = 12
      CONST Mode_16Bit = 16
    
    
    '-------------------------------------------------------------------------------
    ' Display Initialization
    '-------------------------------------------------------------------------------
      ColorMode = MODE_16Bit
      wait 1
      CS = 0
      SDA = 0
      CLK = 1
      RST = 1 : RST = 0 : RST = 1
      CLK = 1 : SDA = 1 : CLK = 1
    
      SendCMD &h01                'Software Reset
      sendCMD &h11                'Sleep Out
      SendCMD &h03                'Booster On
      waitms 20
      SendCMD &h29                'Display On
      SendCMD &h13                ' Normal Mode
      'sendCMD &H21                'Invert
      sendCMD &HBA                'Data Order
      sendCMD &h36                'MDAC
      SendData 32 + 64            ' (RAM Y DIRECTION + MIRROR X = Rotate 90° CCW)
      sendCMD &h3A                ' 16 od. 12 Bit p. Pixel
        If ColorMode = 8 Then SendData 2
        If ColorMode = 12 Then SendData 3
        IF ColorMode = 16 Then SendData 5
      sendCMD &H25                'Contrast
        sendData 63
      sendCMD &H2A                'ColAdress
        sendData 0
        sendData 131
      sendCMD &h2B                'PageAdress
        sendData 0
        sendData 131
      sendCMD &h2c
    
    
    '-------------------------------------------------------------------------------
    ' Test Screen: Color Bars
    '-------------------------------------------------------------------------------
    for j = 1 to 4
      for i = 1 to 2112
        Select Case j
          Case 1 : SetPixel 255 , 255 , 255
          Case 2 : SetPixel 000 , 255 , 255
          Case 3 : SetPixel 255 , 000 , 255
          Case 4 : SetPixel 255 , 255 , 000
        End Select
      next
    Next
    For j = 5 to 8
      For i = 1 to 2113
        Select Case j
          Case 5 : SetPixel 000 , 000 , 255
          Case 6 : SetPixel 255 , 000 , 000
          Case 7 : SetPixel 000 , 255 , 000
          Case 8 : SetPixel 000 , 000 , 000
        End Select
      Next
    next
    
    
    '-------------------------------------------------------------------------------
    ' MAIN LOOP
    '-------------------------------------------------------------------------------
    DO
    Loop
    End
    
    
    '-------------------------------------------------------------------------------
    ' SUBs:
    '-------------------------------------------------------------------------------
    Sub SETPIXEL(BYVAL XRED AS BYTE , byval XGREEN AS BYTE , byval XBLUE AS BYTE)
      '12-Bit Mode unvollständig!
        If ColorMode = Mode_12Bit Then
        R = xRed AND &B00001111
        G1 = xGreen AND &B00001111
        B1 = xBlue AND &B00001111
        CLK = 0 : SDA = 1 : CLK = 1
        ShiftOut SDA , CLK , R , 1 , 4 , 10
        CLK = 0 : SDA = 1 : CLK = 1
        ShiftOut SDA , CLK , G1 , 1 , 4 , 10
        CLK = 0 : SDA = 1 : CLK = 1
        ShiftOut SDA , CLK , B1 , 1 , 4 , 10
      EndIf
    
      If ColorMode = Mode_16Bit Then
        R = xRed AND &B11111000
        G1 = xGREEN AND &B11100000
        G2 = xGREEN AND &B00011100
        B1 = xBLue AND &B11111000
        SHIFT G1 , right , 5
        SHIFT G2 , left , 3
        SHIFT B1 , right , 3
        ColorData1 = R OR G1
        ColorData2 = B1 OR G2
        CLK = 0 : SDA = 1 : CLK = 1
        ShiftOut SDA , CLK , ColorData1 , 1 , 8 , 0
        CLK = 0 : SDA = 1 : CLK = 1
        ShiftOut SDA , CLK , ColorData2 , 1 , 8 , 0
      EndIf
    
    End Sub
    
    
    Sub SENDDATA(BYVAL CMD AS BYTE)
        CLK = 0
      waitus 10
        SDA = 1
      waitus 10
        CLK = 1
      waitus 10
      ShiftOut SDA , CLK , CMD , 1 , 8 , 20
    End Sub
    
    
    Sub SENDCMD(BYVAL CMD AS BYTE)
      CLK = 0
      waitus 20
      SDA = 0
      waitus 20
      CLK = 1
      waitus 20
      ShiftOut SDA , CLK , CMD , 1 , 8 , 30
    End Sub

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