-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: RN-Control macht komische Piepstöne. - Kaputt??

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.06.2010
    Ort
    Darmstadt
    Beiträge
    131

    RN-Control macht komische Piepstöne. - Kaputt??

    Anzeige

    Hilfe!!
    Ich habe eben endlich mein Programm für meinen Roboter soweit fertig gestellt. Und wollte jetzt noch über den INT0 Port nen Interrupt laufen lassen um bei Kollesion ihn anzuhalten. Aber seit dem funktioniert mein RN Board nicht mehr

    Seit dem kommen immer zwei lange piepstöne (unterschiedlich hoch) und dann ist Ruhe. Also wenn ich reset drücke kommen diese Töne.
    Jetzt hab ich spasseshalber mal das Testprogramm von der CD draufgespielt und da kommt dann ebenfalls nur diese Töne. Sonst reagiert er gar nicht mehr

    Hab ich ihn jetzt geschrottet? Wenn ja wieso?^^
    Kann mir da jemand helfen?
    Es gibt keine Probleme, es gibt nur Lösungen

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    28
    Beiträge
    3.517
    Blog-Einträge
    9
    Poste doch mal den Code den du verwendest. Das piepen kann ja nur von dem Pieper auf dem Board kommen. Diesen steuert man leicht an wenn man PortD verwendet
    Ist mir auch schon ein paar mal passiert

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.06.2010
    Ort
    Darmstadt
    Beiträge
    131
    den Code kann ich erst heut abend Posten wenn ich wieder zu hause bin.
    Aber ich fand es halt komisch, dass das ebenfalls bei dem RN-Control Einführungs und Testcode von dem Handbuch bzw von der CD piepst. Die hatten ja funktioniert. Und nun geht gar nichts mehr
    Es gibt keine Probleme, es gibt nur Lösungen

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.06.2010
    Ort
    Darmstadt
    Beiträge
    131
    hier jetzt der Code:

    Code:
    '**** Über RS232 Schnittstelle Dateien an RN-Control senden :*******************
    'Funktion:
    '
    
    '*******************************************************************************
    
    'Microcontroller Einstellungen Definieren.
     $regfile = "m32def.dat"
     $framesize = 32
     $swstack = 32
     $hwstack = 32
     $crystal = 16000000
     $baud = 9600
    
    'Funktionen Declarieren
    Declare Function Tastaturabfrage() As Byte                  'Funktion für die Tastenabfrage am Board deklarieren
    Declare Sub Batteriespannung()
    Declare Sub Irentfernung1()
    Declare Sub Motorschalten()
    Declare Sub Motorschalten1()
    Declare Sub Fuluftdruck()
    Declare Sub Serial0charmatch()
    Declare Sub Temperatur()
    
    '*******************************************************************************
     'Variablen deklarieren:
    Dim Ton As Integer
    Dim Motordrehzahl As Integer
    Dim Spannung As Word
    Dim Taste As Byte
    'Const Ref = 5 / 1023       'Umrechnungsfaktor von 8Bit Zahlenwert = 1023 bei 5 Volt Spannung in Gleitkommazahlenwert
    Dim Luftdruck As Word
    'Dim Hoehe As Integer
    
    'Variablen für das Einlesen der Empfangenen Daten
    Dim Inputstring As String * 30
    Dim Inputarray(7) As String * 5
    Dim Status As Bit
    Dim Tmp As Byte
    Dim Data_available As Byte
    Dim Dempfangen As Byte
    Dim Dempfangstring As String * 5
    Dim Empfangstatus As Boolean
    Dim Motorr As Integer
    Dim Motorl As Integer
    Dim Schildv As Integer
    Dim Schildh As Integer
    Dim Kamera As Integer
    
    'Variablen zum für Daten die versendet werden sollen
    Dim Fehlermeldung As String * 30
    Dim Irabstand1 As Integer
    Dim Irabstand2 As Integer
    Dim Uabstand1 As Integer
    Dim Uabstand2 As Integer
    Dim Batteriestatus As Word
    Dim Temperatura As Integer
    Dim Temperaturi As Integer
    
    '*******************************************************************************
    'Ports definieren (Als was welcher Port sein soll)
    
    Config Adc = Single , Prescaler = Auto                      'Für Tastenabfrage und Spannungsmessung benötigt
    Config Pina.7 = Input                                       'Für Tastenabfrage wird PortA7 als eingang definiert
    Porta.7 = 1                                                 'Pullup Widerstand am PortA7 ein
    Config Portd.2 = Output                                     'Für Enfernungsmessung Ultraschall diesen Port als eingang definieren
    Config Pina.2 = Input                                       'Für Luftdruckmessung diesen Port als eingang definieren
    Config Pina.1 = Input                                       'Port für Temperaturinnen:
    
    'Buffer Einstellen
    Config Serialin = Buffered , Size = 40 , Bytematch = 13     'Empfang-Buffer erstellen und wenn Zeichen 13 (Enter) gesendet wurde in Prozedur Serial0charmatch springen
    'Enable Interrupts
    
    'Ports für linken Motor
    Config Pinc.6 = Output                                      'Linker Motor Kanal 1
    Config Pinc.7 = Output                                      'Linker Motor Kanal 2
    Config Pind.4 = Output                                      'Linker Motor PWM
    'Ports für rechten Motor
    Config Pinb.0 = Output                                      'Rechter Motor Kanal 1
    Config Pinb.1 = Output                                      'Rechter Motor Kanal 2
    Config Pind.5 = Output                                      'Rechter Motor PWM
    
    
    '*******************************************************************************
    'Interrupt
    Config Int0 = Rising                                        'Configuriere Int0  auf Low Level
    On Int0 Isr_von_int0                                        'springe Zu Isr_von _int0
    Enable Interrupts                                           'einschalten der Interrupts
    Enable Int0                                                 'einschalten Von Interrupt Int0
    
    
    
    Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
    Tccr1b = Tccr1b Or &H02                                     'Prescale = 8 (Quarzfrequenz duch 8)
    Pwm1a = 0                                                   'Linker Motor  (Drehzahl)
    Pwm1b = 0                                                   'Linker Motor  (Drehzahl)
    
    
    '*******************************************************************************
    'Hauptprogramm
    
    'Hochfahren der RN-Control Signal
    Sound Portd.7 , 400 , 450                                   'BEEP (Pin, Länge in ms des Pipsesn, Anzahl Pulse
    Sound Portd.7 , 600 , 150                                   'BEEP
    Sound Portd.7 , 400 , 500                                   'BEEP
    
    Motorr = 0
    Motorl = 0
    Empfangstatus = 1
    Schildv = 0
    Schildh = 0
    Kamera = 0
    
    Do
       Taste = Tastaturabfrage()
       If Taste <> 0 Then
          Select Case Taste
             Case 1
                Empfangstatus = 0
             Case 2
                Empfangstatus = 1
             Case 3
    
             Case 4
    
             Case 5
                Print "Programm wurde abgebrochen"
                Sound Portd.7 , 800 , 400
                Exit Do
          End Select
       End If
    
       Temperatur                                               'Funktion Temperatur aufrufen
       Fehlermeldung = "Dies ist Ein Test"
       Irabstand1 = Schildv                                     '20
       Irabstand2 = Schildh                                     '10
       Uabstand1 = Motorr                                       '500
       Uabstand2 = Motorl                                       '100
       Batteriespannung
       Batteriestatus = Spannung
       Temperatura = Kamera
       Fuluftdruck                                              'Funktion Luftdruck auslesen starten
    
    
       If Empfangstatus = 1 Then
          Print 1 ; ";" ; Fehlermeldung ; ";" ; Irabstand1 ; ";" ; Irabstand2 ; ";" ; Uabstand1 ; ";" ; Uabstand2 ; ";" ; Batteriestatus ; ";" ; Temperatura ; ";" ; Temperaturi ; ";" ; Luftdruck ; ";" ; 23 ; ";"
          Empfangstatus = 1
       End If
    
    
       Motorschalten1                                           'Funktion Motor ausführen
    
       'Motorr = 0
       'Motorl = 0
    
       'Wenn Kamera gedreht werden soll dann Sound ausgeben
       If Kamera = 1 Then
          Sound Portd.7 , 10 , 800
          Waitms 20
          Kamera = 0
       End If
    
       If Kamera = -1 Then
          Sound Portd.7 , 10 , 400
          Waitms 20
          Kamera = 0
       End If
    
    
       Wait 1
    Loop
    End
    
    
    '*******************************************************************************
    
    'Funktionen Deklarieren (Unterprogramme)
    '*******************************************************************************
    'Diese Funktion fragt die Tastatur am analogen Port ab
    Function Tastaturabfrage() As Byte
    Local Ws As Word
    
       Tastaturabfrage = 0                                      'Variablen werte zuweisen
       Ton = 600                                                'Pipstonhöhe festlegen
          Start Adc
       Ws = Getadc(7)
       If Ws < 500 Then
          Select Case Ws
             Case 400 To 450                                    'Da nur ein port für die Taster verwendet wird
                Tastaturabfrage = 1                             'müssen verschiedene Spannungen abgefragt werden
                Ton = 550
             Case 330 To 380
                Tastaturabfrage = 2
                Ton = 500
             Case 260 To 305
                Tastaturabfrage = 3
                Ton = 450
             Case 180 To 220
                Tastaturabfrage = 4
                Ton = 400
             Case 90 To 130
                Tastaturabfrage = 5
                Ton = 350
             Case Else
                Print "Tastenabfrage anpassen! ADC Wert ws=" ; Ws
          End Select
          Sound Portd.7 , 400 , Ton                             'Sound ausgeben
          End If
    
    End Function
    
    Sub Serial0charmatch()                                      'Wenn Buffer voll ist bzw Zeichen 13 Gesendet wurde dann Diese Funktion ausführen
    
        Input Inputstring Noecho
        If Inputstring <> "" Then
    
          'Anweisung Aufteilen
           Tmp = Split(inputstring , Inputarray(1) , ";")
    
           '---- X Motorr---
           Dempfangen = Instr(inputarray(1) , "X")              'Gibt den Motorwert des Substrings "Motorr" aus oder NULL wenn nicht gefunden
           'Motorl_empfangen = Instr(inputarray(2) , "Y")        'Gibt den Motorwert des Substrings "Motorl" aus oder NULL wenn nicht gefunden
    
           If Dempfangen = 1 Then
              Dempfangstring = Mid(inputarray(1) , 2)           'Die erste stelle des Strings (Das Motorr) abschneiden
              Motorr = Val(dempfangstring)                      'String in Integer konvertieren
           End If
           Dempfangen = 0
           Dempfangstring = ""
    
           '---- Y Motorl ----
           Dempfangen = Instr(inputarray(2) , "Y")              'Gibt den Motorwert des Substrings "Motorr" aus oder NULL wenn nicht gefunden
    
           If Dempfangen = 1 Then
              Dempfangstring = Mid(inputarray(2) , 2)           'Die erste stelle des Strings (Das Motorr) abschneiden
              Motorl = Val(dempfangstring)                      'String in Integer konvertieren
           End If
           Dempfangen = 0
           Dempfangstring = ""
    
           '--- SH SchildH -----
           Dempfangen = Instr(inputarray(3) , "SH")             'Gibt den Motorwert des Substrings "Motorr" aus oder NULL wenn nicht gefunden
    
           If Dempfangen = 1 Then
              Dempfangstring = Mid(inputarray(3) , 3)           'Die erste stelle des Strings (Das Motorr) abschneiden
              Schildh = Val(dempfangstring)                     'String in Integer konvertieren
           End If
           Dempfangen = 0
           Dempfangstring = ""
    
           '--- SV SchildV -----
           Dempfangen = Instr(inputarray(4) , "SV")             'Gibt den Motorwert des Substrings "Motorr" aus oder NULL wenn nicht gefunden
    
           If Dempfangen = 1 Then
              Dempfangstring = Mid(inputarray(4) , 3)           'Die erste stelle des Strings (Das Motorr) abschneiden
              Schildv = Val(dempfangstring)                     'String in Integer konvertieren
           End If
           Dempfangen = 0
           Dempfangstring = ""
    
           '--- K Kamera-----
           Dempfangen = Instr(inputarray(5) , "K")              'Gibt den Motorwert des Substrings "Motorr" aus oder NULL wenn nicht gefunden
    
           If Dempfangen = 1 Then
              Dempfangstring = Mid(inputarray(5) , 2)           'Die erste stelle des Strings (Das Motorr) abschneiden
              Kamera = Val(dempfangstring)                      'String in Integer konvertieren
           End If
           Dempfangen = 0
           Dempfangstring = ""
    
        End If
    
    End Sub
    
    
    'Diese Funktion zeigt die Batteriespannung an
    Sub Batteriespannung()
    Local W As Word
       Start Adc
       W = Getadc(6)
       Spannung = W                                             '* Ref
       Spannung = Spannung                                      '* 5.2941
       'Print "Die aktuelle Spannung beträgt: " ; Spannung ; "Volt"
    End Sub
    
    'Diese Funktion schaltet den Motor an
    Sub Motorschalten1()
       Dim Richtung1motorr As Bit
       Dim Richtung2motorr As Bit
       Dim Richtung1motorl As Bit
       Dim Richtung2motorl As Bit
    
       Motorr = Motorr * 10
       Motorl = Motorl * 10
    
       If Motorr < 0 Then
          Richtung1motorr = 0
          Richtung2motorr = 1
          Motorr = Motorr * -1
       Else
          Richtung1motorr = 1
          Richtung2motorr = 0
       End If
    
       If Motorl < 0 Then
          Richtung1motorl = 0
          Richtung2motorl = 1
          Motorl = Motorl * -1
       Else
          Richtung1motorl = 1
          Richtung2motorl = 0
       End If
    
       If Motorr > 1000 Then
          Motorr = 1000
       End If
    
       If Motorl > 1000 Then
          Motorl = 1000
       End If
    
    
       'Linker Motor ein
       Portc.6 = Richtung1motorl                                'Bestimmt Richtung 1 = Spannung      +
       Portc.7 = Richtung2motorl                                'Bestimmt Richtung 0 = Keine Spannung -
       Portd.4 = 1                                              'Linker Motor Ein
    
       'Rechter Motor ein
       Portb.0 = Richtung1motorr                                'Bestimmt Richtung 1 = Spannung      +
       Portb.1 = Richtung2motorr                                'Bestimmt Richtung 0 = Keine Spannung -
       Portd.5 = 1                                              'Rechter Motor ein
    
       Pwm1a = Motorl                                           'Linker Motor  (Drehzahl)
       Pwm1b = Motorr                                           'Rechter Motor (Drehzahl)
    
    End Sub
    
    'Diese Funktion schaltet den Motor an
    Sub Motorschalten()
       If Motorr > 1000 Then
          Motorr = 1000
       End If
    
       'Linker Motor ein
       Portc.6 = 1                                              'Bestimmt Richtung 1 = Spannung      +
       Portc.7 = 0                                              'Bestimmt Richtung 0 = Keine Spannung -
       Portd.4 = 1                                              'Linker Motor Ein
    
       'Rechter Motor ein
        Portb.0 = 1                                             'Bestimmt Richtung 1 = Spannung      +
       Portb.1 = 0                                              'Bestimmt Richtung 0 = Keine Spannung -
       Portd.5 = 1                                              'Rechter Motor ein
    
       Dim I As Integer
       I = 0
       Do                                                       'Motor beschleunigen
          Pwm1a = I                                             'Linker Motor  (Drehzahl)
          Pwm1b = I                                             'Rechter Motor (Drehzahl)
          I = I + 5
          Waitms 1
       Loop Until I > Motorr                                    'maximalwert 1024
    
          Pwm1a = Motorl                                        'Linker Motor  (Drehzahl)
          Pwm1b = Motorr                                        'Rechter Motor (Drehzahl)
    
       Do                                                       'Motor abbremsen
          Pwm1a = I                                             'Linker Motor (Drehzahl)
          Pwm1b = I                                             'Rechter Motor (Drehzahl)
          I = I - 5
          Waitms 40
       Loop Until I < 1
         Pwm1a = 0                                              'Linker Motor aus
         Pwm1b = 0                                              'Rechter Motor aus
    End Sub
    
    'Diese Funktion zeigt den Luftdruck an
    Sub Fuluftdruck()
    Local Ws As Word
    
       Start Adc
       Ws = Getadc(2)
       Luftdruck = Ws
    End Sub
    
    'Diese Funktion zeigt die Temperatur an
    Sub Temperatur()
       Start Adc
       Temperaturi = Getadc(1)
    End Sub
    
    'Interrupt Int0 Unterprogramm. Dieses wird gestartet wenn Signal an INT0 anliegt
    Isr_von_int0:                                               'ISR von int0
    Motorr = 0
    Motorl = 0
    Motorschalten1
    Return
    Es gibt keine Probleme, es gibt nur Lösungen

  5. #5
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    28
    Beiträge
    3.517
    Blog-Einträge
    9
    Diese 3 Zeilen:

    Sound Portd.7 , 400 , 450
    Sound Portd.7 , 600 , 150
    Sound Portd.7 , 400 , 500 '

    sorgen für das Piepen. Da diese 3 Zeilen noch vor der eigentlichen Do-Loop Schleife stehen werden diese Befehle nach jedem Reset einmal ausgeführt d.h. nach jedem Reset solltest du die hören. Wenn du die hörst funktioniert dein Controller noch

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.06.2010
    Ort
    Darmstadt
    Beiträge
    131
    danke für die Antwort Kampi
    aber leider ist das nicht so. Die Töne sind anderst als vorher. und hab eben mal die Zeilen weg gemacht und dann kommt das immer noch. Ich glaub echt dass ich ausversehen irgendwie was falsch an den Int0 Port angeschlossen hab und irgendwas kaputt gemacht hab.
    Es gibt keine Probleme, es gibt nur Lösungen

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.06.2010
    Ort
    Darmstadt
    Beiträge
    131
    also ich habe eben nochmal genauer geguckt. der controler scheint wirklich kaputt zu sein. ich komm nichtmal mehr beim programmieren drauf um FuseBits einzustellen oder so. und ab und an erkennt er den Controler auch nicht richtig. Und joa spinnt alles rum. werd mir jetzt ersatz bestellen. hoffe dass nicht noch mehr kaputt gegangen ist. Kann den noch mehr kaputt gehen?
    Es gibt keine Probleme, es gibt nur Lösungen

  8. #8
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    28
    Beiträge
    3.517
    Blog-Einträge
    9
    Naja auf dem RN-Control ist nicht soviel drauf, was tragisch wäre wenn es kaputt ist, aber ich denke der Rest sollte überlebt haben. Der Pieper funktioniert ja anscheinend noch
    Und bevor du den neuen Controller einsetzt versuch erst den Fehler zu finden bevor du noch den 2. kaputt machst.

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.06.2010
    Ort
    Darmstadt
    Beiträge
    131
    jap ich werde es sehen obs nur der controler war^^
    Aber ich denk auch ich weis wieso ich ihn geschrottet hab. Hab das eine Kabel vom Taster an Int0 eingang gelegt und glaube bin mitm anderen außversehen an + gekommen anstatt an GRD
    oder macht sowas nichts aus?
    Es gibt keine Probleme, es gibt nur Lösungen

  10. #10
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.989
    Blog-Einträge
    1
    Zitat Zitat von robonooby Beitrag anzeigen
    jap ich werde es sehen obs nur der controler war^^
    Aber ich denk auch ich weis wieso ich ihn geschrottet hab. Hab das eine Kabel vom Taster an Int0 eingang gelegt und glaube bin mitm anderen außversehen an + gekommen anstatt an GRD
    oder macht sowas nichts aus?
    Wenn der Port auf Eingang geschaltet war macht es nix aus, aber wenn er auf Ausgang programmiert war dann ist Controller vermutlich hin. Irgendwas scheinst du falsch gemacht zu haben, klingt schon so als wenn du neuen Mega32 brauchst. Mehr dürfte nicht kaputt sein, mehr geht selten kaputt. Das gute ist das man RN-Control immer selbst schnell und günstig reparieren kann (Vorteil da keine SMD Technik).
    Mit bestem Gruß
    Frank

    Admin Roboternetz.de - RN-Wissen.de - Elektronik-Blog

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. ADC am RN-Control: komische Werte
    Von Pille456 im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 3
    Letzter Beitrag: 30.04.2011, 12:45
  2. RN-Control kaputt? Bitte um Hilfe...
    Von Jay-Be im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 26.04.2010, 13:29
  3. Pony Prog macht komische Sachen
    Von cesupa im Forum AVR Hardwarethemen
    Antworten: 12
    Letzter Beitrag: 18.04.2008, 17:45
  4. Hilfe! RN-Control kaputt??
    Von JoSch1337 im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 12
    Letzter Beitrag: 14.01.2008, 15:24
  5. c-control I kaputt?
    Von uwente im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 1
    Letzter Beitrag: 17.10.2005, 17:57

Stichworte

Berechtigungen

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