INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo Gemeinde, ich habe immer noch ein Problem! Ich hatte vorher schon einmal hier in das Forum gepostet, daß ich ein Problem mit Relais habe. In meinem kleinen Programm habe ich eine Echtzeituhr und eine Temperaturabfrage mit Regelung zusammengebastelt. Doch sobald die Relais angesprochen werden, macht die Station ein RESET! Waru ist das so? Ich habe doch noch Programmreserven, also dürfte ich daher doch keine Probleme bekommen. Vielleich schaut Ihr Euch mein Werk einmal an - aber bitte nicht verzweifeln! Ich bin noch Anfänger! Danke Andreas '-------------------------- '------ I/O PORTS --------- '-------------------------- define EXTPORT byteport[4] define SDA port[9] define SCL port[10] define LIGHT port[16] '-------------------------- '---- SYSTEM MEMORY ------- '-------------------------- define TEMP word define Zeit word define STATION_IO byte[19] define TEMPHI byte[20] define TEMPLO byte[21] define OLDSEC byte[22] define MyAddr byte[23] define DATA byte[24] define LED1 bit[17] define LED2 bit[18] define LED3 bit[19] define LED4 bit[20] define REL1 bit[21] 'Heizung define REL2 bit[22] 'Wärmelampe define REL3 bit[23] 'UV-Licht define REL4 bit[24] 'Beregnung const DS1631=158 'Adresse Temp.-sensor LIGHT=on LCD.INIT '----------------------------------------------------------------------------- '-------- WILLKÜRLICHE VOREINSTELLUNG ---------------------------------------- '----------------------------------------------------------------------------- hour=23 minute=59 second=58 '----------------------------------------------------------------------------- FUNCTION SHOW_TIME() if HOUR<10 then LCD.PRINT "0" 'FÜHRENDE NULL SCHREIBEN LCD.PRINT HOUR 'STUNDEN AUSGEBEN LCD.PRINT ":" 'TRENNZEICHEN SCHREIBEN if MINUTE<10 then LCD.PRINT "0" 'FÜHRENDE NULL SCHREIBEN LCD.PRINT MINUTE LCD.PRINT ":" 'TRENNZEICHEN SCHREIBEN if SECOND<10 then LCD.PRINT "0" 'FÜHRENDE NULL SCHREIBEN LCD.PRINT SECOND LCD.PRINT " " END FUNCTION '----------------------------------------------------------------------------- SDA=on SCL=on '--------------Alle Ports OFF------------------------------------------------- STATION_IO=OFF 'STANDARD, alle Ports OFF EXTPORT=STATION_IO 'zusätzlich, externen Port beschreiben '----------------------------------------------------------------------------- '----------------------------------------------------------------------------- '------- AUF DEN SEKUNDENWECHSEL WARTEN -------------------------------------- '----------------------------------------------------------------------------- FUNCTION WAITSEC() do LOOP UNTIL OLDSEC<>SECOND OLDSEC=SECOND END FUNCTION '----------------------------------------------------------------------------- '-------------------------- '--- DS1631 COMMANDS ------ '-------------------------- const CONVERT=51h const STOP_CONVERT=22h const READ_TEMP=AAh const CONF=ACh const RESET=54h '----------------------------------------------------- '------------------ DS1631 RESET ------------------ '----------------------------------------------------- FUNCTION DS1631RESET(ADDR REF MyAddr) IIC.INIT IIC.START IIC.SEND ADDR IIC.SEND RESET IIC.STOP IIC.OFF END FUNCTION '----------------------------------------------------- '------------------ DS1631 CONVERT ---------------- '----------------------------------------------------- FUNCTION DS1631CONVERT(ADDR REF MyAddr) IIC.INIT IIC.START IIC.SEND ADDR IIC.SEND CONVERT IIC.STOP IIC.OFF END FUNCTION '----------------------------------------------------- '----------------- GET DS1631 STATUS ----------------- '----------------------------------------------------- FUNCTION DS1631GET_STATUS(ADDR REF MyAddr) IIC.INIT IIC.START IIC.SEND ADDR IIC.SEND CONF IIC.STOP IIC.START IIC.SEND (ADDR+1) IIC.GET DATA IIC.STOP IIC.OFF RETURN DATA END FUNCTION '------------------------------------------------------- '----------------- SET DS1631 STATUS ----------------- '------------------------------------------------------- FUNCTION DS1631SET_STATUS(ADDR REF MyAddr,DATA as byte) IIC.INIT IIC.START IIC.SEND ADDR IIC.SEND CONF IIC.SEND DATA IIC.STOP END FUNCTION '------------------------------------------------------- '----------------- WAIT DS1631 READY ----------------- '------------------------------------------------------- FUNCTION DS1631WAIT_READY(ADDR REF MyAddr) #WT if (DS1631GET_STATUS(ADDR)) and 80h = 0 then goto WT END FUNCTION '----------------------------------------------------- '----------------- GET DS1631 TEMP ----------------- '----------------------------------------------------- FUNCTION DS1631GET_TEMP(ADDR REF MyAddr) IIC.INIT IIC.START IIC.SEND ADDR IIC.SEND READ_TEMP IIC.STOP IIC.START IIC.SEND (ADDR+1) IIC.GET DATA TEMP=DATA*256 IIC.GET DATA TEMP=TEMP+DATA IIC.STOP IIC.OFF RETURN TEMP END FUNCTION '------------------------------------------------------------- DS1631RESET(DS1631) DS1631SET_STATUS(DS1631,1) '------------------------------------------------------------- '----- LOOP READING TEMPERATURE --- '------------------------------------------------------------- #LOOP pause 5 DS1631CONVERT(DS1631) DS1631WAIT_READY(DS1631) TEMP=DS1631GET_TEMP(DS1631) LCD.INIT switchonly LCD.POS 2,3 TEMP=TEMP SHR 7 if (TEMP and 0100h) = 0100h then TEMP=(TEMP or FE00h) LCD.PRINT "TEMP: " & TEMP/2 & "." & (TEMP and 1)*5 & " C " LCD.POS 1,3 SHOW_TIME() LCD.OFF '----------------------------------------------------------------------------- '----------------------------------------------------------------------------- '-----------Relais mit Zeitfunktion schalten und Temp.-reglung---------------- '----------------------------------------------------------------------------- Zeit=hour *100 + minute if Zeit = 2205 then REL3=off EXTPORT=STATION_IO if Zeit = 2000 then goto NASS if Zeit = 1815 then REL3=on EXTPORT=STATION_IO if Zeit = 1405 then REL2=off EXTPORT=STATION_IO if Zeit = 0855 then goto NASS '----------------------------------------------------------------------------- if TEMP >=59 then REL2=off 'größer 30 Grad, REL2 aus EXTPORT=STATION_IO if TEMP <=51 then goto HEIZER 'kleiner 25 Grad,dann Programm Zeitabfrage Heizer if TEMP >=49 then REL1=off EXTPORT=STATION_IO if TEMP <=42 then REL1=on EXTPORT=STATION_IO '----------------------------------------------------------------------------- goto LOOP '----------------------------------------------------------------------------- #NASS REL4 = on EXTPORT=STATION_IO PAUSE 45 REL4 = off EXTPORT=STATION_IO PAUSE 100 goto LOOP '----------------------------------------------------------------------------- #HEIZER if Zeit = 1400 then REL2=on EXTPORT=STATION_IO if Zeit = 1355 then REL2=on EXTPORT=STATION_IO if Zeit = 1350 then REL2=on EXTPORT=STATION_IO if Zeit = 1345 then REL2=on EXTPORT=STATION_IO if Zeit = 1340 then REL2=on EXTPORT=STATION_IO if Zeit = 1335 then REL2=on EXTPORT=STATION_IO if Zeit = 1330 then REL2=on EXTPORT=STATION_IO if Zeit = 1325 then REL2=on EXTPORT=STATION_IO if Zeit = 1320 then REL2=on EXTPORT=STATION_IO if Zeit = 1315 then REL2=on EXTPORT=STATION_IO if Zeit = 1310 then REL2=on EXTPORT=STATION_IO if Zeit = 1305 then REL2=on EXTPORT=STATION_IO if Zeit = 1300 then REL2=on EXTPORT=STATION_IO if Zeit = 1255 then REL2=on EXTPORT=STATION_IO if Zeit = 1250 then REL2=on EXTPORT=STATION_IO if Zeit = 1245 then REL2=on EXTPORT=STATION_IO if Zeit = 1240 then REL2=on EXTPORT=STATION_IO if Zeit = 1235 then REL2=on EXTPORT=STATION_IO if Zeit = 1230 then REL2=on EXTPORT=STATION_IO if Zeit = 1225 then REL2=on EXTPORT=STATION_IO if Zeit = 1220 then REL2=on EXTPORT=STATION_IO if Zeit = 1215 then REL2=on EXTPORT=STATION_IO if Zeit = 1210 then REL2=on EXTPORT=STATION_IO if Zeit = 1205 then REL2=on EXTPORT=STATION_IO if Zeit = 1200 then REL2=on EXTPORT=STATION_IO if Zeit = 1155 then REL2=on EXTPORT=STATION_IO if Zeit = 1150 then REL2=on EXTPORT=STATION_IO if Zeit = 1145 then REL2=on EXTPORT=STATION_IO if Zeit = 1140 then REL2=on EXTPORT=STATION_IO if Zeit = 1135 then REL2=on EXTPORT=STATION_IO if Zeit = 1130 then REL2=on EXTPORT=STATION_IO if Zeit = 1125 then REL2=on EXTPORT=STATION_IO if Zeit = 1120 then REL2=on EXTPORT=STATION_IO if Zeit = 1115 then REL2=on EXTPORT=STATION_IO if Zeit = 1110 then REL2=on EXTPORT=STATION_IO if Zeit = 1105 then REL2=on EXTPORT=STATION_IO if Zeit = 1100 then REL2=on EXTPORT=STATION_IO if Zeit = 1055 then REL2=on EXTPORT=STATION_IO goto LOOP |
Antwort schreiben |