Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> Hallo, > > ich poste einfach mal ins Forum: > Mein Beispiel besteht aus zwei Modulen: > > Modul 1: shtpcf.c2 > > /******************************************************************/ > /* Treiberbibliothek fuer Sensirion SHT Feuchtesensoren(12/14Bit) */ > /* Autor : André Helbig (andre.h@cc2net.de) */ > /* Vorlage : André Helbig (andre.h@cc2net.de) */ > /* Version : 1.0 */ > /* Datum : 20. Juli 2003 */ > /* Getestet : ja */ > /* Benötigt : ports.c2, system.c2, math.c2, mathx.c2 */ > /* Bemerkung : Messung nur im hi-res.Mode(12Bit RH / 14Bit Temp.) */ > /* modified : krassos > -angepasst auf sht an pcf8574 > -diverse Zeilenkommentare > - Taupunktberechnung eingefügt > > /******************************************************************/ > byte Clock,Data,err,Adr; > /*************************************/ > /* Schnittstelle initialisieren !!!geändert!!!*/ > /*************************************/ > function init(byte adr, byte clock, byte data) > {byte i; > Clock=clock%16; //modulo kann ggf wegfallen > Data=data%16; > Adr=adr%16; > pcf.set(adr,Clock,0); //clockport auf 0 setzen > pcf.on(adr, Data); // dataport als eingang schalten (high) > for i = 0 ... 9 pcf.pulse(adr, Clock); //10 Pulse ausgeben > } > > /*************************************/ > /* Datenport festlegen !!!!geändert !!!!*/ > /*************************************/ > function setDataPort(byte adr, byte data) > {byte i; > pcf.on(adr, data); > Data=data%16; > } > > /*************************************/ > /* Startbedingung senden !!!geändert!!!! */ > /*************************************/ > function start() > { > pcf.set(Adr,Clock,1); > pcf.set(Adr,Data,0); > pcf.set(Adr,Clock,0); > pcf.set(Adr,Clock,1); > pcf.on(Adr,Data); > pcf.set(Adr,Clock,0); > } > > /*************************************/ > /* Byte senden !!!geändert!!!! */ > /*************************************/ > function Write(byte data) returns int > {int i; > for i=0 ... 7 > { > if (data shl i) and 0x80 pcf.on(Adr,Data);else pcf.set(Adr,Data,0); > pcf.pulse(Adr,Clock); > } > pcf.on(Adr,Data); > pcf.set(Adr,Clock,1); > i=not(pcf.get(Adr,Data)); //ack vom sensor > pcf.set(Adr,Clock,0); > return i; > } > > /*************************************/ > /* Byte empfangen !!!geändert!!!! */ > /*************************************/ > function Readbyte(int ack) returns byte > {byte data,i; > data=0; > for i=0 ... 7 > { > pcf.set(Adr,Clock,1); > data=(data shl 1) or pcf.get(Adr,Data) and 1; > pcf.set(Adr,Clock,0); > } > if ack pcf.set(Adr,Data,0); else pcf.on(Adr,Data); > pcf.pulse(Adr,Clock); > pcf.on(Adr,Data); > return data; > } > > /*************************************/ > /* Integer lesen */ > /* wartet auf Bereitschaft (Data=Low)*/ > /* (timeout 1sek.=Rückgabe 0xF000) */ > /*************************************/ > function Readint(int ack) returns int > {long timer;int data; > timer=system.timer(); > loop > { > if pcf.get(Adr,Data)==0 break; > if system.timer()-timer>=1000 return 0xF000; > yield; > } > data=Readbyte(1); //High-Byte > data=(data shl 8) or Readbyte(0);//Low-Byte > return data; > } > > /*************************************/ > /* Statusregister schreiben */ > /*************************************/ > function setRegister(byte reg) returns int > { > start(); > Write(0b00110); > return Write(reg); > } > > /*************************************/ > /* Statusregister lesen */ > /*************************************/ > function getRegister() returns byte > { > start(); > Write(0b00111); > return Readbyte(0); > } > > /*************************************/ > /* Software Reset */ > /*************************************/ > function Reset() returns int > { > start(); > err=Write(0b11110); //errorbitauswertung > return err; > } > > /*************************************/ > /* Heizung schalten */ > /*************************************/ > function setHeater(int state) returns int > {byte reg; > reg=getRegister(); > reg=(reg and 0xFB) or (state!=0 and 0x4); > return setRegister(reg); > } > > /*************************************/ > /* Temperatur auslesen */ > /* Format: 0,00 */ > /*************************************/ > function getTemp() returns int > {int temp; > start(); > Write(0b00011); > return Readint(0)-4000; > } > > /*************************************/ > /* Feuchtigkeit auslesen */ > /* Format: 0,00 (temp & hyg) */ > /*************************************/ > function getHyg(int temp) returns int > {int hyg; > long SOrh,RHlin; > start(); > Write(0b00101); > hyg=Readint(0); > if hyg and 0x8000 return -1; > SOrh=hyg; > RHlin=((405*SOrh - 40000)*250 + ((-7)*SOrh*SOrh))/25; > hyg=(((temp-2500)*(1000+8*SOrh)/100)+RHlin)/1000; > return hyg; > } > > > /* Taupunktberechnung by krassos*/ > /* t = Temperatur im Format wie von getHyg() übergeben */ > /* h = wie von getHyg() übergeben */ > /* Rückgabewert Format 0,0 */ > function dew(int t, int h) returns int > { > float logEx,dew_point,t1,h1; > t1=t/100; > h1=h/100; > if h1 == 0 h1=0.01; > logEx=0.66077+7.5*t1/(237.3+t1)+(math.log(h1)-2) ; > dew_point = (logEx - 0.66077)*237.3/(0.66077+7.5-logEx) ; > //dew_point = logEx; > return mathx.round(dew_point*10); > } > > Modul 2: first.c2 > > int rH; > int T; > > > > thread main > { > /**Initialisierungen****************************/ > > int a,b,c; > string sc,mn,hr,zeit,bs; > plm.beep(20); > system.TIME z; > > lcd.init(); > pcf.init(); > pcflcd.setpcf(8); // Display an Addr. 0 > pcflcd.init(); // Display inittialisieren > pcflcd.setLight(0); // licht aus > > plm.beep(-1); > > > /************************************************/ > > loop > { > //erfassung der Uhrzeit und des dcf-status > system.gettime(z); > str.putintf(hr,z.hour,2); > str.putintf(mn,z.minute,2); > str.putintf(sc,z.second,2); > zeit=hr+":"+mn+":"+sc; > lcd.goto(0,0); > lcd.print(zeit); > bs=" "; > hr=""; > zeit = ""; > mn=""; > sc=""; > if system.dcferr() > 5 bs="nosync"; > //Anzeige von Uhrzeit und dcf-status auf dem internen Display > lcd.goto(1,0); > lcd.print(bs); > > ///sht-anschluss: port 6 ist clock, port 7 ist data > shtpcf.init(9,6,7); > sleep 100; > T=shtpcf.getTemp(); > rH=shtpcf.getHyg(T); > pcflcd.home(); > pcflcd.zahl4n2(T);pcflcd.put(0xDF);pcflcd.put('C'); //Anzeige Temperatur > pcflcd.put(0x20); > pcflcd.zahl4n1(shtpcf.dew(T,rH));pcflcd.put(0xDF);pcflcd.put('C'); //Taupunktanzeige > pcflcd.line(2); > pcflcd.zahl4n2(rH);pcflcd.print("%rH"); > sleep 2000; //Pause zwischen zwei Abfragen >800ms wegen Eignerwärmung > } > > } > > > >
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB