ähm warum steht auf seite 6 der dokumentation
"Inbetriebnahme des MOTOR Boards
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
ähm warum steht auf seite 6 der dokumentation
"Inbetriebnahme des MOTOR Boards
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!
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
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
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
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:
Dort verstummt es, um nach langer Wartezeit (~1-2 min), den Originalsound, der nach der ZeileCode:Led_display_init
kommt, auszugeben.Code:I = 0
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:
Woran kann es liegen das sich das RN-Digi bei mir nicht initialisieren läßt?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
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
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
Oder verstehe ich dich irgendwie falsch?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
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
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
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.
Lesezeichen