- Akku Tests und Balkonkraftwerk Speicher         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Anmerkungen zur Digitalanzeige RN-Digi

  1. #1
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.116
    Blog-Einträge
    1
    Anzeige

    Praxistest und DIY Projekte
    Hallo,
    da Platinen erst morgen nachbestellt werden (hatte bislang nur Prototypen hier), hab ich jetzt auch Alternativ noch kleinere 20mm Segmentanzeigen vorgesehen.
    Jetzt kann also jeder der die Platine haben will, wahlweise die großen 7-Segmentanzeigen oder die kleinen günstigen einsetzen. Diese kosten nur etwa 1/3 so viel. Somit ist das Board noch etwas flexibler geworden.

    Als Bausatz wird unverändert der mit dem großen Conrad-Segmenten angeboten. Aber wer nur Platine bestellt kann es wahlweise auch mit dem kleinen günstigen Segment SC08-11 RT bestücken.

    Gruß Frank

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    ähm warum steht auf seite 6 der dokumentation
    "Inbetriebnahme des MOTOR Boards

  3. #3
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.116
    Blog-Einträge
    1
    Oh, noch kleiner Tippfehler rein gerutscht. Werde das in Anleitung noch ändern. Liegt daran, das ich bei den Anleitungen imme reinen ähnlichen Aufbau wähle und das Grundmuster der letzten Schaltung kopiere. Da hab ich dann das editieren vergessen.

    Gruß Frank

    So, Fehler ist schon korrigiert - Download wieder aktuell!

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    04.10.2004
    Alter
    50
    Beiträge
    21

    Problem mit rncontrol_digitest.BAS

    Hallo zusammen,

    ich habe gerade mein RN-Control(mega32) + RN-Digi bekommen.
    Das Testprogramm vom Control hat auch funktioniert. Wobei ich nach einmal übertragen mit Bascom mein Arbeitsverzeichnis löschen muß, da ich sonst immer eine Fehlermeldung "Difference at blablabla" bekomme.
    Wenn ich die Daten frisch von der CD in mein Arbeitsverzeichnis kopiere (und den ganzen Schrott, den das Prg. anlegt, rausnehme) funktioniert es wieder _ein_ mal. Was sollen die ganzen Dateien eigentlich? Eine bas bzw. hex Datei sollte dem Ding doch langen, oder?

    Das Programm rncontrol_digitest.BAS bzw. die hex-Datei dazu läßt sich aber garnicht übertragen. Da erscheint immer die Fehlermeldung "Difference at 0003" - hmm!?
    Ich habe die Zeile $regfile = "m16def.dat" dann mal intuitiv (kann ja noch nicht programmieren) auf $regfile = "m32def.dat" geändert. Die Fehlermeldung ändert sich dann auf "Difference at 0050". Was soll mir das sagen?

    Ich denke mal das es warscheinlich daran liegt das das Prg. für einen anderen mC geschreiben ist. Gibt es hier (oder hat irgendjemand) ein auf dem mega32 angepasstes Digitest Programm, welches bei mir auf der CD scheinbar fehlt?

    Auf der Unterseite der Digi-Platine ist mir noch was aufgefallen. Am I2C-Connector ist eine komische Brücke gelötet worden (von Kondensator 2 nach Pin 9. Außerdem ist die Leiterbahn die zu Pin 3 führt "weg gebohrt" - ist das normal?

    Edit: Entwarnung - ich war zu blöd!
    Wenn ich den mC vorher lösche funktioniert alles wunderbar. Ich dachte das Flashrom wird automatisch überschrieben wo wie ne Datei wenn man was neues reinschreibt^^
    Gruß,
    Max666

  5. #5
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.116
    Blog-Einträge
    1
    Fein das es nu geht Aber irgendwas scheinst du noch falsch gemacht zu haben. Wenn alles richtig eingestellt ist, dann wird beim übertragen auch der Controller gelöscht. Vielleicht war es nur ein Übertragungsfehler, sowas kann schon mal vorkommen.
    Das Beispiel war in der Tat für Mega16. Also beim Mega32 muß $regfile = "m16def.dat" in $regfile = "m32def.dat" geändert werden, wie du es schon geschrieben hast.

    Die Dateien gibts übrigens auch hier:
    https://www.roboternetz.de/phpBB2/dl...le&file_id=171

    Aber wie gesagt, das Hex-File ist nur für Mega16. Es muß also beim Mega32 nochmal compiliert werden.

    Gruß Frank

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    04.10.2004
    Alter
    50
    Beiträge
    21
    Huhu Frank,

    ich hab gestern Abend noch etwas an den Einstellungen von Bascom rumgespielt. Aber immer wenn ich im Programmer dem mC vor dem übertragen nicht gelöscht hatte sind die "Difference at ????" Fehler gekommen - dank Counter kann ich sagen das ich es ~ 70x probiert habe^^

    Das Hex-File von der CD funktioniert bei mir (mega32) wunderbar. Logischerweise sollte es das wegen $regfile = "m16def.dat" nich, es geht aber!?

    @weitere Bascom Besonderheiten reden wir lieber hier weiter ---> https://www.roboternetz.de/phpBB2/vi...?p=35658#35658
    Nich das hier noch alles OT zugemüllt wird
    Gruß,
    Max666

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    04.10.2004
    Alter
    50
    Beiträge
    21
    Hallo Frank,

    ich habe mein Problem eingekreist. Einen Fehler beim Übertragen des Programms schließe ich nun aus.

    Ich habe das Digi-Demo genommen und einfach mal alles, was mir dem Display zugehörig erscheint, rausgekürzt. Nach 3 Versuchen ging es auch wieder zu Compilieren Ich hatte dann so eine Art "RN-Control-Orgel" Die Tasten 1-5 lassen den Summer unterschiedlich hohe Töne ausgeben.

    Ok - also wieder das Digi-Demo geladen. Nun hab ich zwischen jede Zeile einen Sound eingebaut. Das RN-Controll tönt nun also vor sich hin bis zu der Zeile:
    Code:
    Led_display_init
    Dort verstummt es, um nach langer Wartezeit (~1-2 min), den Originalsound, der nach der Zeile
    Code:
    I = 0
    kommt, auszugeben.

    Das RN-Digi bleibt dabei dunkel und macht nichts. Scheinbar will es sich nicht initialisieren lassen(so interpretiere ich zumindest Led_display_init.

    Hier nochmal mein ganzer Code:
    Code:
    '###################################################
    'rncontrol_digitest.BAS   Demo zu RN-Digi
    'für
    'RoboterNetz Board RN-Control ab Version 1.1 und
    'Zusatzboard RN-DIGI (vierstellig großes LED-Display per I2C)
    
    '
    'Aufgabe:
    ' Dieses Testprogramm demonstriert die Ansteuerung von RN-Digi
    
    ' Den verschiedenen Tasten sind bestimmte Funktionen zugeordnet
    ' Taste 1: Alle Ziffern auf 0 stellen (genau wie bei Reset)
    ' Taste 2: Nacheinander alle Ziffern von 0 bis 9 zählen
    
    
    'Autor: Frank
    'Weitere Beispiele und Beschreibung der Hardware
    'unter http://www.Roboternetz.de oder robotikhardware.de
    'Eigene Programmbeispiele sind im Roboternetz gerne willkommen!
    '##############################################################
    
    
    Declare Function Tastenabfrage() As Byte
    Declare Sub Led_display_init()
    Declare Sub Led_display(byval Ziffer As Byte , Byval Zahl As Byte)
    
    
    $regfile = "m32def.dat"
    $crystal = 16000000                                         'Quarzfrequenz
    $baud = 9600
    
    Const Rn_digi_slave_write = &H70
    Const Rn_digi_slave_read = &H71
    Const Dezimalpunktziffer = 3                                'Segment wo Dezimalpunkt leuchten soll (0=keinen)
    
    Dim Segmente As Byte
    Dim Z As Byte
    Dim I As Byte
    Dim N As Integer
    Dim Ton As Integer
    
    Config Adc = Single , Prescaler = Auto                      'Für Tastenabfrage und Spannungsmessung
    Config Pina.7 = Input                                       'Für Tastenabfrage
    Porta.7 = 1                                                 'Pullup Widerstand ein
    Dim Taste As Byte
    
    
    I2cinit
    
    Sound Portd.7 , 400 , 400                                   'BEEP
    Sound Portd.7 , 400 , 300                                   'BEEP
    
    Led_display_init
    
    I = 0
    Sound Portd.7 , 400 , 450                                   'BEEP
    Sound Portd.7 , 400 , 250                                   'BEEP
    Sound Portd.7 , 400 , 450                                   'BEEP
    Do
    
       Taste = Tastenabfrage()
       If Taste <> 0 Then
    
          Select Case Taste
             Case 1
                For Z = 1 To 4
                  Led_display Z , 0
                Next Z
    
             Case 2
                For Z = 1 To 4
                   For I = 0 To 9
                       Led_display Z , I
                       Waitms 300
                   Next I
                Next Z
    
    
             Case 3
    
             Case 4
    
             Case 5
    
    
    
          End Select
          Sound Portd.7 , 400 , 500                             'BEEP
       End If
    
       Waitms 100
    Loop
    
    End
    
    
    
    'Diese Unterfunktion fragt die Tastatur am analogen Port ab
    Function Tastenabfrage() As Byte
    Local Ws As Word
    
    
       Tastenabfrage = 0
       Ton = 600
       Start Adc
       Ws = Getadc(7)
       If Ws < 1010 Then
          Select Case Ws
             Case 410 To 450
                Tastenabfrage = 1
                Ton = 550
             Case 340 To 380
                Tastenabfrage = 2
                Ton = 500
             Case 265 To 305
                Tastenabfrage = 3
                Ton = 450
             Case 180 To 220
                Tastenabfrage = 4
                Ton = 400
             Case 100 To 130
                Tastenabfrage = 5
                Ton = 350
          End Select
          Sound Portd.7 , 400 , Ton                             'BEEP
       End If
    
    End Function
    
    
    
    Sub Led_display_init()
    
      I2cstart
      I2cwbyte Rn_digi_slave_write
    
    Sound Portd.7 , 400 , 400                                   'BEEP
    Sound Portd.7 , 400 , 300                                   'BEEP
    
      I2cwbyte 0                                                'Control Byte
    
    Sound Portd.7 , 400 , 400                                   'BEEP
    Sound Portd.7 , 400 , 300                                   'BEEP
    
      'Dynamic Alternative Mode und Helligkeit
      'Die oberen 3 Bits bestimmen die Helligkeit
      'Wenn es dunkler sein soll dann z.b. &B0110111
      I2cwbyte &B1110111
    
      I2cstop
    
    Sound Portd.7 , 400 , 400                                   'BEEP
    Sound Portd.7 , 400 , 300                                   'BEEP
    
      'Alle Ziffern auf 0
      For Z = 1 To 4
           Led_display Z , 0
      Next Z
    
    Sound Portd.7 , 400 , 400                                   'BEEP
    Sound Portd.7 , 400 , 300                                   'BEEP
    
    End Sub
    
    
    Sub Led_display(ziffer An Byte , Zahl As Byte)
         I2cstart
         I2cwbyte Rn_digi_slave_write
         I2cwbyte Ziffer
    
    
         Select Case Zahl
             Case 0:
                   Segmente = &H3F
             Case 1:
                    Segmente = &H06
             Case 2:
                    Segmente = &H5B
             Case 3:
                    Segmente = &H4F
             Case 4:
                    Segmente = &H66
             Case 5:
                    Segmente = &H6D
             Case 6:
                    Segmente = &H7D
             Case 7:
                    Segmente = &H07
             Case 8:
                    Segmente = &H7F
             Case 9:
                    Segmente = &H67
             Case Else :
                    Segmente = &H80                             'Ansonsten Dezimalpunkt
    
         End Select
    
         If Dezimalpunktziffer = Ziffer Then Segmente = Segmente Or &H80
         I2cwbyte Segmente
         I2cstop
    End Sub
    Woran kann es liegen das sich das RN-Digi bei mir nicht initialisieren läßt?

    Edit: Ich sehe gerade das Led_display_init nach unten ins Programm springt. Dort habe ich nochmal mehr Sounds eingebaut. Diese kommen mit einer Verzögerung von ~ 3-5 sek.
    Der letzte aber (vor dem Original Init-Sound oben im Programm) läßt nochmal ca. 1 min auf sich warten.
    Den Code oben habe ich auf meinen aktuellen angepasst.

    Der Jumper ADR1 steht übrigens auf &H70 - sollte also passen bzw. funktioniert ja auch beim Hex-File von der CD.

    Oder kann es sein das der I2cinit nicht funktioniert (der kommt ja immer vor dem Display-Zeug)
    Gruß,
    Max666

  8. #8
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.116
    Blog-Einträge
    1
    Hi Max666,
    also irgendwie verstehe ich dein Problem noch nicht richtig. Du hast doch gesagt das die Digitalanzeige schon mit dem Demo gelaufen ist.

    Ich hab es nochmal ausprobiert und einfach die Include-Zeile wie oben schon genannt ausgewechselt und dann das ganze mit dem Demo für den Mega32 compiliert. Hatte dabei überhaupt keinerlei Probleme. Du mußt eigentlich garnix am Code ändern.
    So wie er hier ist, läuft er auf dem Mega32

    Code:
    '###################################################
    'rncontrol_digitest.BAS   Demo zu RN-Digi
    'für
    'RoboterNetz Board RN-Control ab Version 1.1 und
    'Zusatzboard RN-DIGI (vierstellig großes LED-Display per I2C)
    
    '
    'Aufgabe:
    ' Dieses Testprogramm demonstriert die Ansteuerung von RN-Digi
    
    ' Den verschiedenen Tasten sind bestimmte Funktionen zugeordnet
    ' Taste 1: Alle Ziffern auf 0 stellen (genau wie bei Reset)
    ' Taste 2: Nacheinander alle Ziffern von 0 bis 9 zählen
    
    
    'Autor: Frank
    'Weitere Beispiele und Beschreibung der Hardware
    'unter http://www.Roboternetz.de oder robotikhardware.de
    'Eigene Programmbeispiele sind im Roboternetz gerne willkommen!
    '##############################################################
    
    
    Declare Function Tastenabfrage() As Byte
    Declare Sub Led_display_init()
    Declare Sub Led_display(byval Ziffer As Byte , Byval Zahl As Byte)
    
    
    $regfile = "m32def.dat"
    
    Const Rn_digi_slave_write = &H70
    Const Rn_digi_slave_read = &H71
    Const Dezimalpunktziffer = 2                                'Segment wo Dezimalpunkt leuchten soll (0=keinen)
    
    Dim Segmente As Byte
    Dim Z As Byte
    Dim I As Byte
    Dim N As Integer
    Dim Ton As Integer
    
    
    
    $crystal = 16000000                                         'Quarzfrequenz
    $baud = 9600
    
    Config Scl = Portc.0                                        'Ports fuer IIC-Bus
    Config Sda = Portc.1
    
    Config Adc = Single , Prescaler = Auto                      'Für Tastenabfrage und Spannungsmessung
    Config Pina.7 = Input                                       'Für Tastenabfrage
    Porta.7 = 1                                                 'Pullup Widerstand ein
    Dim Taste As Byte
    
    
    
    
    
    I2cinit
    Led_display_init
    
    I = 0
    Sound Portd.7 , 400 , 450                                   'BEEP
    Sound Portd.7 , 400 , 250                                   'BEEP
    Sound Portd.7 , 400 , 450                                   'BEEP
    Print
    Print "**** RN-Control  V1.4 *****"
    Print "Das neue Experimentier- und Roboterboard"
    Print
    Do
    
    
    
    
       Taste = Tastenabfrage()
       If Taste <> 0 Then
    
          Select Case Taste
             Case 1
                For Z = 1 To 4
                  Led_display Z , 0
                Next Z
    
             Case 2
                For Z = 1 To 4
                   For I = 0 To 9
                       Led_display Z , I
                       Waitms 300
                   Next I
                Next Z
    
    
             Case 3
    
             Case 4
    
             Case 5
    
    
    
          End Select
          Sound Portd.7 , 400 , 500                             'BEEP
       End If
    
       Waitms 100
    Loop
    
    End
    
    
    
    
    'Diese Unterfunktion fragt die Tastatur am analogen Port ab
    Function Tastenabfrage() As Byte
    Local Ws As Word
    
    
       Tastenabfrage = 0
       Ton = 600
       Start Adc
       Ws = Getadc(7)
       If Ws < 1010 Then
          Select Case Ws
             Case 410 To 450
                Tastenabfrage = 1
                Ton = 550
             Case 340 To 380
                Tastenabfrage = 2
                Ton = 500
             Case 265 To 305
                Tastenabfrage = 3
                Ton = 450
             Case 180 To 220
                Tastenabfrage = 4
                Ton = 400
             Case 100 To 130
                Tastenabfrage = 5
                Ton = 350
          End Select
          Sound Portd.7 , 400 , Ton                             'BEEP
       End If
    
    End Function
    
    
    
    
    Sub Led_display_init()
      I2cstart
      I2cwbyte Rn_digi_slave_write
      I2cwbyte 0                                                'Control Byte
    
      'Dynamic Alternative Mode und Helligkeit
      'Die oberen 3 Bits bestimmen die Helligkeit
      'Wenn es dunkler sein soll dann z.b. &B0110111
      I2cwbyte &B1110111
    
      I2cstop
    
      'Alle Ziffern auf 0
      For Z = 1 To 4
           Led_display Z , 0
      Next Z
    
    End Sub
    
    
    Sub Led_display(ziffer An Byte , Zahl As Byte)
         I2cstart
         I2cwbyte Rn_digi_slave_write
         I2cwbyte Ziffer
    
    
         Select Case Zahl
             Case 0:
                   Segmente = &H3F
             Case 1:
                    Segmente = &H06
             Case 2:
                    Segmente = &H5B
             Case 3:
                    Segmente = &H4F
             Case 4:
                    Segmente = &H66
             Case 5:
                    Segmente = &H6D
             Case 6:
                    Segmente = &H7D
             Case 7:
                    Segmente = &H07
             Case 8:
                    Segmente = &H7F
             Case 9:
                    Segmente = &H67
             Case Else :
                    Segmente = &H80                             'Ansonsten Dezimalpunkt
    
         End Select
    
         If Dezimalpunktziffer = Ziffer Then Segmente = Segmente Or &H80
         I2cwbyte Segmente
         I2cstop
    End Sub
    Oder verstehe ich dich irgendwie falsch?
    Vielleicht sind bei dir die I2C-Ports falsch definiert, ich hab diese sicherheitshalber mal oben im Code definiert
    Das sind die Zeilen:

    Code:
    Config Scl = Portc.0                                        'Ports fuer IIC-Bus
    Config Sda = Portc.1

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    04.10.2004
    Alter
    50
    Beiträge
    21
    Jaaa! Das war es *freu*
    Wie gesagt - ich kenne mich mit Programmierung und mCs noch nicht aus. Aber durch das Schildern meiner Symptome bist du drauf gekommen

    Hätte ich das irgendwo anders noch einstellen können?

    Jetzt wo das Schreiben Softwaremäßig richtig funktioniert und das Programm auch läuft kann ich ja mal anfangen was eigenes zu schreiben - zumindest versuche ich es
    Gruß,
    Max666

  10. #10
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.116
    Blog-Einträge
    1
    Aha, gut zu wissen das offenbar nicht überall diese i2C-Ports in der Entwicklungsumgebung definiert sind. Ich werde das auf CD ergänzen, dann stolpert keiner mehr drüber.
    Dann mal viel Spaß

    So, ich hab die Demos im Download Bereich auch aktuallisiert und gleich für Mega 16 und 32 getrennte Demos rein gepackt. Nu kann nichts mehr schief gehen.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

12V Akku bauen