- Akku Tests und Balkonkraftwerk Speicher         
Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 31

Thema: Fehlermeldung im DCF-Programm

  1. #21
    Erfahrener Benutzer Fleißiges Mitglied Avatar von HM
    Registriert seit
    01.12.2003
    Beiträge
    161
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Dirk,
    selbstverständlich habe ich schon ein abgeschirmtes Kabel benutzt.
    Ich werde den Aufbau so, wie du ihn beschrieben hast anbringen, dadurch wird aber der RP5 ziehmlich hoch.
    Noch zwei Fragen?
    Wie und wo hast du eigentlich so gut programmieren gelernt?
    Kennst du Bücher, die das Programmieren ohne Vorkenntnisse beschreiben?
    Vielen Dank. MfG. HM

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

    CC2 Bücher

    Hallo HM,

    Wie und wo hast du eigentlich so gut programmieren gelernt?

    Im Ernst: Ich bin halt schon lange dabei, habe beim Apple ][ schon in den 80ern im BIOS rumgefummelt, war in 6502-Assembler. Aber habe den Anschluß schon lange verloren: Keine Ahnung von Systemprogrammierung und moderner Kommunikation. Bin da reiner Anwender.

    Kennst du Bücher, die das Programmieren ohne Vorkenntnisse beschreiben?
    Für die CC2 ist das Buch von Kainka Standard, aber das hast du ja, oder?
    Es gibt auch noch andere C2-Einführungen, soweit ich weiss, sieh dich 'mal bei Amazon und Konsorten um. (Beim großen C war da wohl auch was). Ich selbst habe da kein Buch als alter Autodidakt. Auch im CC2net gibt's eine Bücherecke.

    Gruß Dirk

  3. #23
    Erfahrener Benutzer Fleißiges Mitglied Avatar von HM
    Registriert seit
    01.12.2003
    Beiträge
    161
    Hallo Dirk,
    ich bin auch nicht mehr der Jüngste, vor einigen Jahren habe ich mich mit Elektronik beschäftigt, bin aber auch nicht mehr auf dem Laufenden, es beschränkt sich, auch aus Zeitgründen nur noch auf den Nachbau von "Bastelsätzen".
    Jetzt ist bei meinem RP5 auch noch das Display defekt, es blinkt und es erscheinen Streifen, ohne daß ich das Programm geändert habe. Es hat höchstens 100h gehalten, zum Glück habe ich noch eins, daß funktioniert.
    Leider gibt es wenig Bücher, das von Kainka habe ich, mal sehen, was ich so finde, denn ohne richtige Grundlagen kann das nichts werden, besonders, wenn man wenig Zeit hat.
    Leider muß ich heute noch arbeiten (Urlaubsvertretung).
    Vielen Dank.
    MfG. HM

  4. #24
    Erfahrener Benutzer Fleißiges Mitglied Avatar von HM
    Registriert seit
    01.12.2003
    Beiträge
    161
    Hallo Dirk,
    ich bin wieder da.
    Du hattest mit deinem Beitrag recht, es lag tatsächlich an dem Abstand des DCF-Moduls von der Experimentierplatine, ich konnte die DCF-Zeit und das Datum mit deinem Programm empfangen "super". Der Abstand nach oben beträgt bei mir 5cm.
    Es ist mir auch noch aufgefallen, daß der DCF-Empfang ausblieb, wenn ich meinen Laptop der neben den RP5 stand eingeschaltet hatte.
    Ich habe da aber noch Fragen:
    Es wird trotz DCF-Empfangs (die Zeit u. Datum stellen sich etwa nach 3min.) "DCF not active!!" im Display angezeigt, diese Anzeige verlischt erst nach der Übertragung der Zeit von der CC1 in die CC2, zeigt also nicht den realen Empfang an, ist das richtig?
    Ist es möglich die reale Empfangsstärke des DCF-Signals mit Sonderzeichen oder mit einem Balken anzuzeigen, das wäre extrem hilfreich?
    Kann man das Datumsdisplay dazu bringen, daß es mit blinken aufhört?
    Wenn man einen guten Programmierer kennt, könnte er das Programm so erweitern, daß sich der RP5 durch langsames Rotieren zum besten Empfang des DCF-Signals dreht. Die Rotationen müßten in der Anzahl natürlich begrenzt werden, sonst sind die Accus bald leer, wäre das möglich?
    Vielen Dank Dirk für deine bisherige Hilfe, ohne dich hätte ich wahrscheinlich irgendwann aufgeben müssen.
    MfG. HM

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

    DCF-Programm verbessern

    Hallo HM,

    schön, dass es jetzt klappt!

    Das Prog ist sicher noch verbesserungsfähig!

    -> Blinken: Am ruhigsten steht die Anzeige, wenn sie nur dann neu geschrieben wird, wenn die nächste Sekunde kommt. Probier 'mal, die Sek. in eine Variable zu speichern und nur dann das LCD neu zu beschreiben, wenn Variable <> Sek. wird.

    -> Empfangsstärke: Das Modul gibt das so nicht her. Man kann also da keinen Meßwert hernehmen.

    -> Drehen des RP5 zur besten Empfangsposition: Da gabs hier viele Versuche und auch erfolgreiche Programme, die noch im Download Bereich stehen müßten. Geh mal auf die Suche!

    -> "Realer DCF-Empfang": In einem Prog könnte man indirekt auf die Empfangsqualität schließen, indem man die Zeit vom Programmstart bis zum DCF-Empfang (mit dem Timer) mißt.
    Das Problem ist: "Wann habe ich DCF-Empfang?"
    Antwort: Wenn Bit 0 im CC1-Statusregister auf 1 geht, dann liegt ein DCF-Signal an.
    Das Problem 2: "Wann wird die Uhr richtig nach DCF gestellt?"
    Antwort: Wenn Bit 4 im CC1-Statusregister auf 1 geht, wurde die interne Uhr erstmalig nach DCF gestellt.
    Das Problem 3: "Wie kommt man ans CC1-Statusregister dran?"
    Antwort: Da du ja die CC2 drauf hast, kannst du das CC1-Statusregister mit der Funktion getCC1STAT() lesen. In der CCRP5_DEMO2_1.c2 wird gezeigt, wie das gehen kann unter ...
    //-------------- Ausgabe des CC1-Statusregisters am LCD ------------------------

    Gruß Dirk

  6. #26
    Erfahrener Benutzer Fleißiges Mitglied Avatar von HM
    Registriert seit
    01.12.2003
    Beiträge
    161
    Hallo Dirk,
    danke für deine Antwort. Ich habe da noch eine Frage und zwar, wenn ich den RP5 nicht fahren lasse, erhält er die Versorgungsspannung aus einen Netzteil. Manchmal, wenn ich den Stecker ziehe (am RP5), kann es passieren, daß die "Gateway.bas neu geladen werden muß, sonst funktioniert nichts mehr, kann man das evtl. verhindern.
    Was deine anderen Hilfen betrifft, werde ich das mal versuchen, habe aber Bedenken, daß ich damit zurechtkomme, ich bin eben ein Anfänger.
    Vielen Dank. HM

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

    RP5 Probleme

    Hallo HM,

    Manchmal, wenn ich den Stecker ziehe (am RP5), kann es passieren, daß die "Gateway.bas neu geladen werden muß, sonst funktioniert nichts mehr, ...
    So etwas ähnliches gab es bei mir, wenn der RP5 bei schwächer werdendem Akku abgestürzt ist. Dann war manchmal das CC1-Programm kaputt.
    Evtl. passiert das auch, wenn die Spannung vom Netzgerätbetrieb (9V) auf Akkubetrieb (7,2V) einbricht.
    Abhilfe: Keine Ahnung. Vielleicht würde ein großer (1000uF) Kondensator helfen?

    Gruß Dirk

  8. #28
    Erfahrener Benutzer Fleißiges Mitglied Avatar von HM
    Registriert seit
    01.12.2003
    Beiträge
    161
    Hallo Dirk,
    an einen Kondensator hatte ich auch schon gedacht, leider würde der nichts nützen, denn in der alten Beschreibung des C-Control/Basic Steuercomputers Version 1 hatte ich gelesen, daß man vor dem Ausschalten erst einen Reset ausführen muß. Der Kondensator würde auch ohne entsprechende Gegenmaßnahmen eine Spannungsspitze erzeugen.
    "Die Versorgungsspannung darf bei einem laufenden Anwenderprogramm im Steuercomputer nicht ausfallen oder abgeschaltet werden! Zuvor muß ein Reset ausgelöst werden."
    Für die CC1 ist in der Beschreibung eine Transistorschaltung, angegeben, die bei einer Unterschreitung von 4,55V einen Reset auslöst.
    Die Frage ist nun, ob der RP5 so eine Transistorschaltung hat oder ob die CC2 so einen Reset automatisch auslöt wenn die Versorgungsspannung unterbrochen wird, denn sonst wird das Programm auf dem RP5 immer wieder mal zerstört werden.
    Der Hinweis von Programmen, für die Rotation des RP5 zum DCF-Signal hin konnte ich im Downloadbereich leider nicht finden, wo hast du diese Programme gesehen?
    Könnte man nicht den zweiten Frequenzeingang dafür nutzen, um festzustellen ob überhaupt ein Signal ankommt?
    Noch ein Hinweis von mir:
    Ich bin mir bewußt, daß ich manchmal ganz schön nerven kann, wenn es dir zuviel wird, teile es mir bitte mit, dann beenden wir das Ganze.
    Vielen Dank. HM

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

    DCF und RP5

    Hallo HM,

    ... ganz schön nerven ...
    Nervt überhaupt nicht! Wenn's mir keinen Spaß machen würde, wär's kein Hobby!

    Der RP5 hat keine Reset-Schaltung. Damit dürfte es auch eigentlich keine Probleme geben. Auch wenn du den Ladestecker abziehst, dürfte die Spannung ja nicht so tief einbrechen. Aber auch dann müßte das Prog eigentlich intakt bleiben (wie beim Ausschalten). Wie auch immer ...

    Die Progs für das Drehen des RP5 waren CC1-Programme, ich geh mal auf die Suche.

    Ob überhaupt ein DCF-Signal ankommt, sagt das Bit 0 im Statusregister. Das ist die einfachste Methode. Also so:
    Code:
    stat=ccrp5.getCC1STAT();
    if (stat and 1) {lcdext.print("DCF ");}
    Gruß Dirk

    P.S.: Was macht dein DCF-Prog inzwischen???

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

    Prog zum Drehen nach DCF-Empfang

    So, ich bin fündig geworden:

    Da gab's ein Prog von Jan-Peter Müller (LCD_DCFUhrsuche1_1.bas) für den RP5 mit Erweiterungsplatine (aber ohne CC2!):
    Code:
    '       Jan-Peter Müller
    '       28.12.2003
    '       DCFUhrsuche V 1.1
    '
    '
    ' --------------------------------------------------------------------------
    '                       FUNKTION DES PROGRAMMS
    ' --------------------------------------------------------------------------
    '                 Beispiel 1
    '       Robby wird hingestellt, und sucht sich das DCF-Signal selbstständig.
    '
    '       Meine Messungen haben ergeben , dass das DCF-Modul von Conrad
    '        Best.-Nr.:641138 einen Erfassungsbereich von 60 Grad hat.
    '
    '       Da Robby sich ja drehen kann , sucht er alleine das Signal !
    '
    '       Achtung kann bis zu 20 Minuten dauern !!!!!!!!!!!!!!!!!!!!!!!!!
    '
    '       Abruch nach 24 Minuten (evtl. kein Empfang)
    '
    '       Anzeige der Minuten über LED 1...8 , auf der Erweiterungsplatine
    '       pro Minute ein LED
    '
    '---------------------------------------------------------------------------
    'Hardware:
    '               Robby
    '               Erweiterungsplatine
    '               Experimentierplatine
    '               DCF-Modul Best.-Nr.:641138
    '
    'Achtung DCF-Modul im Abstand von ca. 5 cm montieren zur Experimentierplatine
    '             , sonst kein Empfang !!!!!!!!!!!!!!!!!!
    '
    '-----------------------------------------------------------------------
    'RESOURCEN:
    'Sie finden in allen Beispielen sämtliche Systemroutinen die zum Betrieb des
    'Roboters notwendig sind.
    '----------------------------------------------------------------------------
    
    '--------------------------
    '------ 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]
    '---- 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 minutealt byte [14]
    '--- 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
    gosub SUBSYS_PWR_ON:REV_L=on:REV_R=on:sys PLM_SLOW         'Muss immer im Programm stehen !
    gosub lcd_init
    beep 400,10,50
    minutealt = minute
    gosub LOFF
    gosub LED4OFF
    LBYTE=0
    '----------------------------------------------------------
    '- Programmanfang   DEMO  Uhrzeit   Synchronisieren      --
    '----------------------------------------------------------
    #start
            gosub CLR_DISTANCE
    
    '#LCD_Laufschrift                                       '1.Zeile
            lcd_param = &H80
            lcd_buf = OFF
            gosub LCD_WRITE
            gosub Nachricht1                                'Zeichenausgabe
    
            for einer = 1 to 40                             '40 mal nach Links schieben
    
                    lcd_port = 1
                    tog lcd_e
                    tog lcd_e
                    lcd_port = 8
                    tog lcd_e
                    tog lcd_e
                    pause 5
            next einer
     #loop
            SPEED_R=0:SPEED_L=0
            if hour <> 0 then goto ende                     'Sprung wenn DCF-Uhr gestellt hat
                                                            'geht nicht zwischen 00:00:00 und 00:59:59 sorry!
            if (minute - 4) = minutealt then gosub dreh1
            if (minute - 8) = minutealt then gosub dreh1
            if (minute - 12)= minutealt then gosub dreh1
            if (minute - 16)= minutealt then gosub dreh1
            if (minute - 20)= minutealt then gosub dreh1
            if (minute - 24)= minutealt then goto Fehler
            if minute = 1 then gosub L1ON                   'LED 1 an , nach einer Minute
            If minute = 2 then gosub L2ON                   'LED 2 an , nach zwei Minuten
            If minute = 3 then gosub L3ON                   'LED 3 an , nach drei Minuten
            If minute = 4 then gosub L4ON                   'LED 4 an , nach vier Minuten
            if minute = 5 then gosub L5ON                   'LED 5 an
            If minute = 6 then gosub L6ON                   'LED 6 an
            If minute = 7 then gosub L7ON                   'LED 7 an
            If minute = 8 then gosub L8ON                   'LED 8 an
            If minute = 9 then gosub L9ON                   'LED 8 an und LED 1
            If minute = 10 then gosub L10ON                 'LED 8 an und LED 2
            If minute = 11 then gosub L11ON                 'LED 8 an und LED 3
            If minute = 12 then gosub L12ON                 'LED 8 an und LED 4
            lcd_param = 2 : gosub lcd_gotoline
            lcd_param = &H20 : gosub lcd_writechar          '4 Leerzeichen
            lcd_param = &H20 : gosub lcd_writechar          '
            lcd_param = &H20 : gosub lcd_writechar          '
            lcd_param = &H20 : gosub lcd_writechar          '
            value=hour                                      ' Ausgabe Stunden
            gosub convert2
            lcd_param = &H3A : gosub lcd_writechar          ':
            value=minute                                    ' Ausgabe Minuten
            gosub convert2
            lcd_param = &H3A : gosub lcd_writechar          ':
            value=second                                    ' Ausgabe Sekunden
            gosub convert2
    
            goto loop
    
    #dreh1
            gosub LOFF
            gosub CLR_DISTANCE
            minutealt=minute
            SPEED_R=100:SPEED_L=100:sys ROTR                'Rotieren nach rechts
    
    #rot1
            SYS COMNAV_STATUS                               ';Abfrage des NAV
            gosub L_DISTANCE                                'Abfrage Linker Distanz-Sensor
            if LBYTE >= 1 then return                       'Wenn grosser 1 ,Sprung (60 Grad Drehung)
    goto rot1                                               'Schleife, bis 1 erreicht ist
    
    #ende
            gosub LOFF
            for einer = 50 to 250 step 5
            beep einer,0,0:next
            for einer = 50 to 250 step 5
            beep einer,0,0:next
            for einer = 50 to 250 step 5
            beep einer,0,0:next
            beep 200,1,1
            gosub LCD_CLS
    
    #loop1
            lcd_param = 1 : gosub lcd_gotoline
            lcd_param = &H20 : gosub lcd_writechar          ' 3 Leerzeichen
            lcd_param = &H20 : gosub lcd_writechar          '
            lcd_param = &H20 : gosub lcd_writechar          '
            value=hour                                      ' Ausgabe Stunden
            gosub convert2
            lcd_param = &H3A : gosub lcd_writechar          ':
            value=minute                                    ' Ausgabe Minuten
            gosub convert2
            lcd_param = &H3A : gosub lcd_writechar          ':
            value=second                                    ' Ausgabe Sekunden
            gosub convert2
            lcd_param = &H20 : gosub lcd_writechar          '
            lcd_param = &H20 : gosub lcd_writechar          '
            on DOW gosub So,Mo,Di,Mi,Do,Fr,Sa
            lcd_param = &H20 : gosub lcd_writechar          '
            lcd_param = 2 : gosub lcd_gotoline
            lcd_param = &H20 : gosub lcd_writechar          '
            lcd_param = &H20 : gosub lcd_writechar          '
            lcd_param = &H20 : gosub lcd_writechar          '
            value=DAY                                       ' Ausgabe Tag
            gosub convert2
            lcd_param = &H2E : gosub lcd_writechar          '.
            value=MONTH                                     ' Ausgabe Monat
            gosub convert2
            lcd_param = &H2E : gosub lcd_writechar          '.
            value=YEAR                                      ' Ausgabe Jahr
            gosub convert2
    
            goto loop1
    
    #Fehler
            gosub lcd_cls
            lcd_param = 1 : gosub lcd_gotoline
            lcd_param = &H20 : gosub lcd_writechar          '
            lcd_param = &H20 : gosub lcd_writechar          '
            lcd_param = &H4B : gosub lcd_writechar          'K
            lcd_param = &H65 : gosub lcd_writechar          'e
            lcd_param = &H69 : gosub lcd_writechar          'i
            lcd_param = &H6E : gosub lcd_writechar          'n
            lcd_param = &H20 : gosub lcd_writechar          '
            lcd_param = &H45 : gosub lcd_writechar          'E
            lcd_param = &H6D : gosub lcd_writechar          'm
            lcd_param = &H70 : gosub lcd_writechar          'p
            lcd_param = &H66 : gosub lcd_writechar          'f
            lcd_param = &H61 : gosub lcd_writechar          'a
            lcd_param = &H6E : gosub lcd_writechar          'n
            lcd_param = &H67 : gosub lcd_writechar          'g
            lcd_param = &H20 : gosub lcd_writechar          '
            lcd_param = &H20 : gosub lcd_writechar          '
            beep 200,1,50
            beep 400,1,50
            beep 600,1,50
            end
    '-------------------------------------------
    'IIIIIII Nachricht 1 IIIIIIIIIII
     #Nachricht1
     gosub lcd_cls
     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 = &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 = &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 = &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 = &H52 : gosub lcd_writechar    'R
     lcd_param = &H50 : gosub lcd_writechar    'P
     lcd_param = &H35 : gosub lcd_writechar    '5
     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
    '---------------------------------------------
    #L9ON
            gosub L8ON:gosub L1ON
            return
    #L10ON
            gosub L8ON:gosub L2ON
            return
    #L11ON
            gosub L8ON:gosub L3ON
            return
    #L12ON
            gosub L8ON:gosub L4ON
            return
    '--------------------------------------------
    '++++++++++++ CONVERT BINARY TO DECIMAL +++++++++++++++
    #convert2
     '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
     '---------------------------------------------------
     #convert3
     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
    '----------------------------------------
    '------------- LCD ROUTINE  -------------
    '----------------------------------------
    #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
    
    '--------------------------------------------
    '-------------------- Wochentage für LCD-Ausgabe --------------------------
    
    #So
            lcd_param = &H53 : gosub lcd_writechar    'S
            lcd_param = &H6F : gosub lcd_writechar    'o
            return
    #Mo
            lcd_param = &H4D : gosub lcd_writechar    'M
            lcd_param = &H6F : gosub lcd_writechar    'o
            return
    #Di
            lcd_param = &H44 : gosub lcd_writechar    'D
            lcd_param = &H69 : gosub lcd_writechar    'i
            return
    #Mi
            lcd_param = &H4D : gosub lcd_writechar    'M
            lcd_param = &H69 : gosub lcd_writechar    'i
            return
    #Do
            lcd_param = &H44 : gosub lcd_writechar    'D
            lcd_param = &H6F : gosub lcd_writechar    'o
            return
    #Fr
            lcd_param = &H46 : gosub lcd_writechar    'F
            lcd_param = &H72 : gosub lcd_writechar    'r
            return
    #Sa
            lcd_param = &H53 : gosub lcd_writechar    'S
            lcd_param = &H61 : gosub lcd_writechar    'a
            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ÄTETREIBER -------------
    'syscode "p5driv12.s19"
    Vielleicht hilft es beim Abgucken der Programmidee.
    Bei mir half das Prog nicht so wirklich, weil mein Aufbau schon nach wenigen Minuten DCF-Empfang hatte (auch wenn das Modul nicht genau nach Frankfurt ausgerichtet war).

    Gruß Dirk

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress