- SolarFLow 4000 Mix Pro Video Tutorial    Werbung      
Ergebnis 1 bis 10 von 26

Thema: LED Matrix möglichst effizient ansteuern

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #19
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    63
    Beiträge
    5.799
    Hallo

    Obwohl die Arrays mit dem Index 1 starten, ein Byte besteht auch bei Bascom aus Bit0 bis Bit7:

    Temp = Bildspeicher(spalte)
    If Temp.1 = 1 Then Set Portd.2 Else Reset Portd.2
    Ich bin leider auch ziemlich ratlos. Scheinbar ist nur der Port C betroffen. Das einzige was mir dazu einfällt: JTAG ist nicht ausgeschaltet. Das würde allerdings nur PC2-5 betreffen. Wird an den "fehlerhaften" Pins etwas ausgegeben?

    http://www.google.de/search?q=JTAG+i...+ausgeschaltet

    Version 2:
    Code:
    $regfile = "m16def.dat"
    $crystal = 16000000
    $hwstack = 40
    $swstack = 16
    $framesize = 32
    
    Config Porta = &B11100000               ' PA7-PA5 sind Ausgang (Spalten 7-9)
    Config Portb = &B00111111               ' PB5-PB0 (Spalten 1-6)
    Config Portc = &B11111111               ' PC7-PC0 (Zeilen 0-7)
    Config Portd = &B00000111               ' PA2-PA0 (Zeilen 8-10)
    
    Declare Sub Set_pixel(byval X As Byte , Byval Y As Byte)       ' Nullpunkt ist oben links als 0,0?
    Declare Sub Reset_pixel(byval X As Byte , Byval Y As Byte)       ' x von 0 bis 8, y von 0 bis 10
    
    Dim Bildspeicher(11) As Word , Spalte As Byte , Temp As Word , Zaehler As Word
    Dim X As Byte , Y As Byte
    
    Zaehler = 0
    Spalte = 1                              ' Spalte ist Index im Array und startet deshalb mit 1!
    
    Do
    ' Anfang der späteren ISR
    
       ' alle Spalten aus
       Portb = Pinb And &B11000000          ' PB5-PB0 ausschalten
       Porta = Pina And &B00011111          ' PA7-PA5 ausschalten
    
       ' Zeilenpins der aktuellen Spalte setzen
       ' Zeile 0 bis 7 ist PC0 bis 7, Zeile 8 bis 10 ist PD0 bis 2
       Temp = Bildspeicher(spalte)
       Portc = Temp And 255                 ' Bits 0 bis 7 an PortC.0 bis .7 ausgeben
       Temp = Temp / 256                    ' Bits 8-10 werden Bits 2-0
       Portd = Temp And 7                   ' Bits 7-3 ausblenden und Bits 2-0 an Port D ausgeben
    
       ' aktuelle Spalte einschalten
       Select Case Spalte
          Case 1 : Set Portb.4
          Case 2 : Set Portb.3
          Case 3 : Set Portb.2
          Case 4 : Set Portb.1
          Case 5 : Set Portb.0
          Case 6 : Set Porta.7
          Case 7 : Set Porta.6
          Case 8 : Set Porta.5
          Case 9 : Set Portb.5
       End Select
    
       If Spalte < 9 Then Spalte = Spalte + 1 Else Spalte = 1
    
    ' Ende der späteren ISR
    
    
       Waitus 100
    
       Select Case Zaehler
           Case 1000 : For X = 0 To 8       ' diagonale
                         Set_pixel X , X
                       Next X
    
           Case 2000 : For X = 0 To 10      ' waagrecht
                          Set_pixel X , 0
                          Set_pixel X , 8
                        Next X
    
           Case 3000 : For Y = 0 To 8       ' senkrecht
                          Set_pixel 0 , Y
                          Set_pixel 10 , Y
                        Next X
    
           Case 4000 : For X = 1 To 11      ' alle an
                          Bildspeicher(x) = &B11111111111
                        Next X
    
           Case 5000 : For X = 1 To 9       ' Bitmuster
                          Bildspeicher(x) = &B11111111100
                        Next X
    
           Case 6000 : For X = 1 To 9       ' alle aus
                          Bildspeicher(x) = 0
                        Next X
    
                        Zaehler = 0
    
       End Select
    
       Zaehler = Zaehler + 1
    Loop
    
    End
    
    Sub Set_pixel(byval X As Byte , Byval Y As Byte)
       Bildspeicher(x + 1).y = 1            ' Bascom startet Arrays mit 1
    End Sub
    
    Sub Reset_pixel(byval X As Byte , Byval Y As Byte)
       Bildspeicher(x + 1).y = 0
    End Sub
    
    '(
    '  Wird nicht verwendet und soll nur die Zeilenbelegung zeigen.
       Durch die aufsteigenden Bits kann man die Bytes schneller ausgeben.
    
       Sub Zeilensetzen
       Temp = Bildspeicher(spalte)
       If Temp.0 = 1 Then Set Portc.0 Else Reset Portc.0
       If Temp.1 = 1 Then Set Portc.1 Else Reset Portc.1
       If Temp.2 = 1 Then Set Portc.2 Else Reset Portc.2
       If Temp.3 = 1 Then Set Portc.3 Else Reset Portc.3
       If Temp.4 = 1 Then Set Portc.4 Else Reset Portc.4
       If Temp.5 = 1 Then Set Portc.5 Else Reset Portc.5
       If Temp.6 = 1 Then Set Portc.6 Else Reset Portc.6
       If Temp.7 = 1 Then Set Portc.7 Else Reset Portc.7
    
       If Temp.8 = 1 Then Set Portd.0 Else Reset Portd.0
       If Temp.9 = 1 Then Set Portd.1 Else Reset Portd.1
       If Temp.10 = 1 Then Set Portd.2 Else Reset Portd.2
    End Sub
    ')
    (ungetestet)
    Geändert von radbruch (25.10.2011 um 09:26 Uhr) Grund: Version 2 angehängt
    Bild  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Ähnliche Themen

  1. Möglichst kleiner, möglichst schneller Linux-PC gesucht
    Von bjoerng im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 11
    Letzter Beitrag: 22.06.2010, 20:56
  2. Eine LED-Matrix 5x7 ansteuern
    Von Tryan im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 66
    Letzter Beitrag: 01.03.2009, 17:42
  3. 10V aus 3,3 - möglichst ohne IC?
    Von Zachso im Forum Elektronik
    Antworten: 17
    Letzter Beitrag: 16.02.2008, 11:28
  4. LED-Matrix, wie Ansteuern?
    Von tholan im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 27.04.2006, 18:24
  5. Geht das mit dem L298 auch effizient?
    Von zennehoy im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 03.03.2005, 11:11

Stichworte

Berechtigungen

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

    Werbung      LiFePO4 Speicher Test