- LiFePO4 Speicher Test         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Problem mit Erweitrung am Robby

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    06.01.2005
    Alter
    32
    Beiträge
    6

    Problem mit Erweitrung am Robby

    Anzeige

    LiFePo4 Akku selber bauen - Video
    bei mir geben die Sensoren wenn ich den Treiber für die Erweiterung droben hab nicht mehr. Geben als Wert 255 aus (auser Touch-Sensor der geht super) ohne Erweiterung gehen alle gut woran kann das liegen?
    habt ihr so ein Problem auch schon mal gehabt?
    Danke im voraus Julius

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Neuer Treiber

    Hallo Julius,

    wenn Du den Treiber p5driv12.s19 nimmst, muss die Erweiterungsplatine auf dem Robby sein. Bei mir klappt damit alles gut.
    Denk dran, dass du von alten Progs einige Einsprungadressen für den neuen Treiber ändern musst. Vergleiche mal diese Zeilen bei Progs mit dem alten Treiber mit Progs, die den neuen benutzen. Du must jede Adresse so wie hier ändern:
    Code:
    '--- SYSTEMROUTINEN -----------
    define PLM_SLOW      &H01C2
    define SYSTEM        &H01C7
    define LED_DRIVE     &H01CA
    define COMNAV        &H0144
    '- ERWEITERTE SYSTEM ROUTINEN -
    define REVR          &H0101   'ANTRIEB RECHTS RÜCKWÄRTS
    define REVL          &H0106   'ANTRIEB LINKS RÜCKWÄRTS
    define FWDR          &H010B   'ANTRIEG RECHTS VORWÄRTS
    define FWDL          &H0110   'ANTRIEB LINKS VORWÄRTS
    define ROTR          &H0115   'RECHTS DREHEN
    define ROTL          &H0119   'LINKS DREHEN
    define REV           &H011D   'RÜCKWÄRTS
    define FWD           &H0121   'VORWÄRTS
    define COMNAV_STATUS &H0125   'UPDATED ALLE FLAGS IM STATUS-REGISTER
    define ACS_LO        &H01E0   'ACS POWER LO
    define ACS_HI        &H01E8   '
    define ACS_MAX       &H01F0   '
    define SEND_TLM      &H013A   'SENDET TELEMETRIE (CH=HBYTE,DATEN=LBYTE)
    define SEND_SYSSTAT  &H0134   'SENDET TLM KANAL 0,SYSTEM STATUS
                                  '(FLAGS für ACS, FWD/REV, ACS_LO/HI/MAX)
    Gruß Dirk

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    06.01.2005
    Alter
    32
    Beiträge
    6
    Es geht trotz deiner Hilfe nicht,
    vieleicht lieg´s am programm...
    Code:
    '--------------------------
    '------ I/O PORTS ---------
    '--------------------------
    '- INTERFACE LCD/EXTPORT --
    define sdio         port[1]
    define sclio        port[3]
    define strobe       port[4]
    define LSTROBE      port[7]
    '-- INTERFACE COM/NAV -----
    define DATALINE     port[1]
    define CLOCKLINE    port[2]
    '-- CC2 INTERFACE   -------
    define CC2POWER     port[8]
    '------ LCD INTERFACE ------
    define lcd_port byteport[2]
    define lcd_rs port[14]
    define lcd_rw port[13]
    define lcd_e port[15]
    '--------------------------
    '------ SENSORS ---------
    '--------------------------
    define LIGHT_L      ad[7]
    define LIGHT_R      ad[6]
    define SYS_VOLTS    ad[3]
    define CHRG_CURRENT ad[2]
    define SYS_CURRENT  ad[1]
    define MIC          ad[4]
    define TOUCH        ad[5]
    '---------------------------
    '------  DRIVE -------------
    '---------------------------
    define SPEED_L        da[1]
    define SPEED_R        da[2]
    define REV_L        port[6]
    define REV_R        port[5]
    '--------------------------
    '---- SYSTEM MEMORY -------
    '--------------------------
    '--- INTERFACE BUFFER ----
    define LBYTE         byte[1]
    define HBYTE         byte[2]
    define SUBCMD        byte[3]
    '---- OPERATION DATA ------
    define EXTPORT       byte[4]
    define LED1_F        bit[29]
    define LED2_F        bit[30]
    define LED3_F        bit[31]
    define LED4_F        bit[32]
    define SYSTEM_STATUS byte[5]
    define LEDPORT       byte[6]
    define L1_F          bit[41]
    define L2_F          bit[42]
    define L3_F          bit[43]
    define L4_F          bit[44]
    define L5_F          bit[45]
    define L6_F          bit[46]
    define L7_F          bit[47]
    define L8_F          bit[48]
    define HSAMPLE       byte[14]
    define GP            byte[15]
    define SAMPLE        byte[16]
    
    
    '---- LCD DRIVER -------------
    define lcd_buf   byte[7]
    define lcd_param byte[8]
    '--------------------------
    '----  USER MEMORY  -------
    '--------------------------
    '--- BIN-DEZIMAL-CONVERTER ---
    define hunderter byte [10]
    define zehner    byte[11]
    define einer     byte[12]
    define value     byte[13]
    define value16   word [12]
    '--- SYSTEMROUTINEN -----------
    define PLM_SLOW      &H01C2
    define SYSTEM        &H01C7
    define LED_DRIVE     &H01CA
    define COMNAV        &H0144
    '- ERWEITERTE SYSTEM ROUTINEN -
    define REVR          &H0101   'ANTRIEB RECHTS RÜCKWÄRTS
    define REVL          &H0106   'ANTRIEB LINKS RÜCKWÄRTS
    define FWDR          &H010B   'ANTRIEG RECHTS VORWÄRTS
    define FWDL          &H0110   'ANTRIEB LINKS VORWÄRTS
    define ROTR          &H0115   'RECHTS DREHEN
    define ROTL          &H0119   'LINKS DREHEN
    define REV           &H011D   'RÜCKWÄRTS
    define FWD           &H0121   'VORWÄRTS
    define COMNAV_STATUS &H0125   'UPDATED ALLE FLAGS IM STATUS-REGISTER
    define ACS_LO        &H01E0   'ACS POWER LO
    define ACS_HI        &H01E8   '
    define ACS_MAX       &H01F0   '
    define SEND_TLM      &H013A   'SENDET TELEMETRIE (CH=HBYTE,DATEN=LBYTE)
    define SEND_SYSSTAT  &H0134   'SENDET TLM KANAL 0,SYSTEM STATUS
                                  '(FLAGS für ACS,FWD/REV, ACS_LO/HI/MAX)
    '---------- INIT---------------
    LSTROBE=off:CC2POWER=on
    gosub SUBSYS_PWR_ON:REV_L=off:REV_R=off
    gosub lcd_init:gosub message1
    beep 368,10,0:pause 50
    
    
    #Save
    HSAMPLE=0
    for GP=1 to 100
    SAMPLE=MIC
    if SAMPLE > HSAMPLE then HSAMPLE=SAMPLE
    next
    'IIIIIIIIIIIIII Ergebnisse IIIIIIIIIIIIIIIII
    
    gosub lcd_cls
     lcd_param = 1 : gosub lcd_gotoline
     lcd_param = &H44 : gosub lcd_writechar    'D
     lcd_param = &H41 : gosub lcd_writechar    'A
     lcd_param = &H54 : gosub lcd_writechar    'T
     lcd_param = &H41 : gosub lcd_writechar    'A
     lcd_param = &H20 : gosub lcd_writechar    '
     value=hsample
     gosub convert
     pause 20
      goto save
    '-------------------------------------------
    'IIIIIII MESSAGE 1 IIIIIIIIIII
     #message1
     gosub lcd_cls
     lcd_param = 1 : gosub lcd_gotoline
     lcd_param = &H20 : gosub lcd_writechar    '
     lcd_param = &H20 : gosub lcd_writechar    '
     lcd_param = &H20 : gosub lcd_writechar    '
     lcd_param = &H20 : gosub lcd_writechar    '
     lcd_param = &H43 : gosub lcd_writechar    'C
     lcd_param = &H2D : gosub lcd_writechar    '-
     lcd_param = &H43 : gosub lcd_writechar    'C
     lcd_param = &H4F : gosub lcd_writechar    'O
     lcd_param = &H4E : gosub lcd_writechar    'N
     lcd_param = &H54 : gosub lcd_writechar    'T
     lcd_param = &H52 : gosub lcd_writechar    'R
     lcd_param = &H4F : gosub lcd_writechar    'O
     lcd_param = &H4C : gosub lcd_writechar    'L
     lcd_param = 2 : gosub lcd_gotoline
     lcd_param = &H20 : gosub lcd_writechar    '
     lcd_param = &H20 : gosub lcd_writechar    '
     lcd_param = &H20 : gosub lcd_writechar    '
     lcd_param = &H20 : gosub lcd_writechar    '
     lcd_param = &H20 : gosub lcd_writechar    '
     lcd_param = &H20 : gosub lcd_writechar    '
     lcd_param = &H52 : gosub lcd_writechar    'R
     lcd_param = &H4F : gosub lcd_writechar    'O
     lcd_param = &H42 : gosub lcd_writechar    'B
     lcd_param = &H4F : gosub lcd_writechar    'O
     lcd_param = &H54 : gosub lcd_writechar    'T
     lcd_param = &H20 : gosub lcd_writechar    '
     lcd_param = &H20 : gosub lcd_writechar    '
    goto Save
    '++++++++++++ CONVERT BINARY TO DECIMAL +++++++++++++++
    #convert
     hunderter=value/100
     if hunderter>0 then lcd_param=hunderter+&H30 else lcd_param=&H20
     gosub lcd_writechar
     'zehner abfragen
     zehner=(value-(hunderter*100))/10
     lcd_param=zehner+&H30
     gosub lcd_writechar
     'einer abfragen
     einer=value-(hunderter*100)-(zehner*10)
     lcd_param=einer+&H30
     gosub lcd_writechar
     return
    'IIIIIIIIIII LED DRIVER IIIIIIIIIIIIIIIII
    #LED1ON
    LED1_F=on:goto EXTPORT_WRITE
    #LED1OFF
    LED1_F=off :goto EXTPORT_WRITE
    #LED2ON
    LED2_F=on:goto EXTPORT_WRITE
    #LED2OFF
    LED2_F=off:goto EXTPORT_WRITE
    #LED3ON
    LED3_F=on:goto EXTPORT_WRITE
    #LED3OFF
    LED3_F=off:goto EXTPORT_WRITE
    #LED4ON
    LED4_F=on:goto EXTPORT_WRITE
    #LED4OFF
    LED4_F=off:goto EXTPORT_WRITE
    #LEDSOFF
    EXTPORT=EXTPORT and &H0F
    #EXTPORT_WRITE
    SYS SYSTEM:pulse STROBE:RETURN
    '--- LEDS AUF DER BASIS ERWEITERUNG  ------
    #L1ON
    L1_F=on:goto LEDPORT_WRITE
    #L1OFF
    L1_F=off :goto LEDPORT_WRITE
    #L2ON
    L2_F=on:goto LEDPORT_WRITE
    #L2OFF
    L2_F=off :goto LEDPORT_WRITE
    #L3ON
    L3_F=on:goto LEDPORT_WRITE
    #L3OFF
    L3_F=off :goto LEDPORT_WRITE
    #L4ON
    L4_F=on:goto LEDPORT_WRITE
    #L4OFF
    L4_F=off :goto LEDPORT_WRITE
    #L5ON
    L5_F=on:goto LEDPORT_WRITE
    #L5OFF
    L5_F=off :goto LEDPORT_WRITE
    #L6ON
    L6_F=on:goto LEDPORT_WRITE
    #L6OFF
    L6_F=off :goto LEDPORT_WRITE
    #L7ON
    L7_F=on:goto LEDPORT_WRITE
    #L7OFF
    L7_F=off :goto LEDPORT_WRITE
    #L8ON
    L8_F=on:goto LEDPORT_WRITE
    #L8OFF
    L8_F=off :goto LEDPORT_WRITE
    #LOFF
    LEDPORT=0
    #LEDPORT_WRITE
    SYS LED_DRIVE:pulse LSTROBE:RETURN
    '---------------------------------------
    '------------- LCD ROUTINES -------------
    '----------------------------------------
    #LCD_INIT
    ' alle ports 0
      lcd_port = OFF
    
    ' 8-Bit-Modus aktivieren
      lcd_param=&H38 : gosub LCD_WRITECMD
    
    ' mit 8-Bit-Command in 4-Bit-Modus umschalten
      lcd_port=&B00000010
      tog lcd_e
      tog lcd_e
    
    ' ab jetzt 4-Bit-Modus
      lcd_param = &H28 : gosub LCD_WRITECMD
      lcd_param = &H0C : gosub LCD_WRITECMD
    
    ' Display loeschen
    #LCD_CLS
      lcd_param = &H02 : gosub LCD_WRITECMD
      lcd_param = &H01 : gosub LCD_WRITECMD
    return
    ' Zeilenwechsel
    #LCD_GOTOLINE
      if lcd_param = 1 then lcd_param = &H80
      if lcd_param = 2 then lcd_param = &HC0
      goto LCD_WRITECMD
    
    ' LCD-Kommando
    #LCD_WRITECMD
      lcd_buf = OFF
      goto LCD_WRITE
    
    ' Zeichenausgabe
    #LCD_WRITECHAR
      lcd_buf = &B00100000
    
    ' Kommando oder Zeichen an Display senden
    #LCD_WRITE
      lcd_port = lcd_buf or (lcd_param shr 4) ' Hi-Nibble
      tog lcd_e
      tog lcd_e
      lcd_port = lcd_buf or (lcd_param and &H0F)  ' Lo-Nibble
      tog lcd_e
      tog lcd_e
    return
    'IIIIII SYSTEMROUTINEN COMM/NAV SYSTEM  IIIII
    #GET_IRDATA
    SUBCMD=1:sys COMNAV:return
    #SEND_IRDATA
    SUBCMD=0:sys COMNAV:return
    #RC5
    SUBCMD=4:sys COMNAV:LBYTE= HBYTE and &HFC
    HBYTE=00:SUBCMD=2:sys COMNAV:return
    #RC5_INT
    SUBCMD=4:sys COMNAV:LBYTE= (HBYTE and &HFE)or 2
    HBYTE=00:SUBCMD=2:sys COMNAV:return
    #REC80
    SUBCMD=4:sys COMNAV:LBYTE= (HBYTE or &H01)and&HFD
    HBYTE=00:SUBCMD=2:sys COMNAV:return
    #REC80_INT
    SUBCMD=4:sys COMNAV:LBYTE= (HBYTE or &H03)
    HBYTE=00:SUBCMD=2:sys COMNAV:return
    'IIIIII   SYSTEMROUTINEN SYSTEM  IIIIIIIIIIII
    #NO_ACS_INT
    SUBCMD=4:sys COMNAV:LBYTE= HBYTE and &HFB
    HBYTE=00:SUBCMD=2:sys COMNAV:return
    #ACS_INT_200
    SUBCMD=4:sys COMNAV:LBYTE= HBYTE or &H04
    HBYTE=50:SUBCMD=2:sys COMNAV:return
    #SUBSYS_PWR_ON
    sdio=on:sclio=on:strobe=off:EXTPORT=(EXTPORT and &HFE)or 8
    sys SYSTEM:return
    #SUBSYS_PWR_OFF
    EXTPORT=(EXTPORT and &HF7)or 1:sys SYSTEM
    deact sdio:deact sclio:return
    
    
    #CLR_DISTANCE
    SUBCMD=3:sys COMNAV:return
    #L_DISTANCE
    SUBCMD=6:sys COMNAV:return
    #R_DISTANCE
    SUBCMD=7:sys COMNAV:return
    '---------COM/NAV GERÄTEREIBER -------------
    syscode "p5driv12.s19"
    Zusammengewürfelt aus: 2_ERWEITERUNG_LCD & 2_EINFÜHRUNG_SCHALLSENSOR
    Ich wollte ja eigentlich nur Sensorwerte am LCD ausgeben
    doch das ist scheinbar schwerer als es klingt

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Sensorwerte falsch?

    Hallo Julius,

    das Prog zur Abfrage von MIC hat 'nen Fehler, der den Programmablauf stört:
    Das Unterprogramm #message1 endet nicht mit return, sondern mit goto Save! Dadurch kommt es im weiteren Programm zu Schleifen, die nicht beabsichtigt sind.
    Also: return statt goto Save !

    Gruß Dirk

  5. #5
    HI

    ich hatte dies Problem auch!
    Ich habe mir das programm auch einmal auf den robby geladen.
    Ich habe nur nicht ganz verstanden ob jetzt das goto save bei der message1 oder bei der daten ausgabe oder bei beiden geändert werden sollte!
    einmal ging es aber da musste man mehr reiben und drücken.

    Sebi

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Reiben oder brüllen

    Hallo Sebi,

    einmal ging es aber da musste man mehr reiben und drücken.
    Bei dem Prog da oben von Julius muss man eher brüllen als reiben!

    Gruss Dirk

    P.S.: Aber auch reiben kann schön sein!

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    06.01.2005
    Alter
    32
    Beiträge
    6
    Moin moin
    'tschuldigung aber ich war im Urlaub
    habs heute noch mal ausprobiert und es ging nich
    Ich wollte ja eigentlich nur die werte der Sensoren am LCD ausgeben
    Ich kann aber irgendwie nur den Touchsensor auslesen
    Alle Sensoren gehen aber :
    Ich hab das ganze über die beispielprogramme ausprobiert (sensorwerte wurden mit den leds ausgegeben
    Ich glaub es liegt am treiber mit dem standart Treiber kann ich die Sensoren auslesen mit dem neuem für die erweiterung kann ich eben nur den Touchsensor benutzen
    Julius

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Lesen von Werten

    Hallo Julius,

    Ich glaub es liegt am treiber mit dem standart Treiber kann ich die Sensoren auslesen mit dem neuem für die erweiterung kann ich eben nur den Touchsensor benutzen
    ... kann nicht sein! Bei mir funktioniert die Abfrage der anderen Sensoren auch mit dem Treiber P5DRIV12!

    Gruß Dirk

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    17.08.2005
    Alter
    47
    Beiträge
    16
    Hallo Dirk und Julius

    Hmm Dirk hat doch "recht" oder ?


    von "'---------- INIT--------------- "
    auf gosub message1

    #message1 geht den wiederum via GOTO auf Save ... dabei würde das selbe mit RETURN geschehn ... nur gäbe es den BEEP noch .

    dan bei Save durchlauft es 100 mal die schlaufe , geht runter auf "IIIIIIIIIIIIII Ergebnisse IIIIIIIIIIIIIIIII"

    da kommt die ausgabe .. ab da ne dauerschlaufe via GOTO auf save ..

    Was soll den genau das Programm machen , so wie ich das "lese" wird die lautstärke eines klatschens z.B. gemessen ?

    Seltsam ich kann genau genommen beim Programm ablauf keine fehler entdecken ausser das mit gosub und goto aber im endeffekt wird dabei nur 1 BEEP ausgeschnitten und sollte sonst keine auswierkungen haben .
    Einzig wen das ganze zu schnell abläuft , vieleicht wird das ergebnis so schnell gelöscht das man es gar nicht war nimmt . Mach das programm doch so rum das es nur ein ergebnis ausgiebt wen überhaupt was zu messen giebt ..

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Fehlendes RETURN

    Hallo cedra,

    das mit dem RETURN (bzw. dem fehlenden RETRUN) ist kein kleines Problem, sondern führt zur völligen Fehlfunktion eines ganzen Progs!

    Wenn das Prog nach dem Unterprogrammaufruf "gosub message1" kein RETRUN, sondern ein "goto Save" vorfindet, dann ist es (scheinbar) immer noch in dem Unterprogramm. Beim nächsten Unterprogrammaufruf "gosub LCD_CLS" gerät das Prog dann schon in Probleme. Man kann ab da nicht mehr sicher sein, dass auch das geschieht, was man erreichen wollte.

    Also: Jedes Programmteil, zu dem man mit "gosub" verzweigt, muss mit "return" enden.

    'Hauptprogramm:
    ...
    gosub Unterprogramm1
    ...
    end
    '------- Ab hier Unterprogramme: --------
    #Unterprogramm1
    ...
    return

    Gruß Dirk

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress