Der Nachfolger des WDR-Computerclub mit Wolfgang Back und Wolfgang Rudolph - ...und immer ein Bit übrigbehalten!


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Read PCF8591 Richtig ? Kategorie: Programmierung Basic (von Benno - 11.12.2005 19:58)
 Als Antwort auf Re: Read PCF8591 Richtig ? von Benno - 9.12.2005 17:24
Benno nutzt:  CC1-M-Unit V1.1
Hallo,

Jetzt kein fehler mehr.
Ich habe mit "slowmode on und off " die geschwindigkeit von Interne I2C bus herunter gebracht.
Wusste nicht das normal die fasst 100Khz intern ist.
War zu schnell fur meine "Homebus" .

Benno



>
> Hallo,
>
> Hat keiner ein Idee ?
> Es geht ums auslesen von den vier Kanalen!.
>
> Benno
>
>
> >
> > Hallo,
> >
> > Versuche  die 4 A/D Porten von ein PCF8591 aus zu lesen.
> > Ich bekomme nicht die richtige werte.
> > Hab ich ein Software fehler oder ??
> >
> > --------------------------------------------------------------
> > 'Ansteuereungsbeispiele für I²C-Bus-Multitreiber "int_i2c.s19"
> > 'CCTools 2004 cctools.hs-control.de (23.08.2004)
> > '--------------------------------------------------------------
> > ' Ansteuerung von I²C-Bus Bausteine:
> > ' - PCF8574 / PCF8574A
> > ' - PCFLCD-Interface / I2C-Terminal
> > ' - Bausteine mit Byte-Adressregister
> > '    z.B. PCF8583, PCF8591, DS1631, MAX520, MAX7311, MAX4572 etc.
> > ' - Bausteine mit Word-Adressregister
> > '    z.B. EEProms 24C32 bis 24C512
> > '--------------------------------------------------------------
> >
> > '--------------------------------------------------------------
> > 'Einsprungadressen von "int_i2c.s19" Release 19.09.04
> > '--------------------------------------------------------------
> > ' PCF8574:
> > define PCFwrite   &h101
> > define PCFread    &h107
> > '--------------------------------------------------------------
> > ' Bausteine mit Byte-Adress-Register
> > define WrByteBReg &h123
> > define WrWordBReg &h12F
> > define RdByteBReg &h15C
> > define RdWordBReg &h162
> > '--------------------------------------------------------------
> > ' Bausteine mit Word-Adress-Register
> > define WrByteWReg &h139
> > define WrWordWReg &h141
> > define RdByteWReg &h16D
> > define RdWordWReg &h175
> > '--------------------------------------------------------------
> > ' PCFLCD:
> > define putCmd8Bit &h1a9
> > define putCmd     &h17D
> > define putChar    &h1a3
> > define prnLCD     &h1C2
> > '--------------------------------------------------------------
> >
> > 'LCD-ASCII
> > Define A_ &H41 : Define B_ &H42 : Define C_ &H43 : Define D_ &H44 : Define E_ &H45
> > Define F_ &H46 : Define G_ &H47 : Define H_ &H48 : Define I_ &H49 : Define J_ &H4A
> > Define K_ &H4B : Define L_ &H4C : Define M_ &H4D : Define N_ &H4E : Define O_ &H4F
> > Define P_ &H50 : Define Q_ &H51 : Define R_ &H52 : Define S_ &H53 : Define T_ &H54
> > Define U_ &H55 : Define V_ &H56 : Define W_ &H57 : Define X_ &H58 : Define Y_ &H59 : Define Z_ &H5A
> > Define ak &H61 : Define bk &H62 : Define ck &H63 : Define dk &H64 : Define ek &H65
> > Define fk &H66 : Define gk &H67 : Define hk &H68 : Define ik &H69 : Define jk &H6A
> > Define kk &H6B : Define lk &H6C : Define mk &H6D : Define nk &H6E : Define ok &H6F
> > Define pk &H70 : Define qk &H71 : Define rk &H72 : Define sk &H73 : Define tk &H74
> > Define uk &H75 : Define vk &H76 : Define wk &H77 : Define xk &H78 : Define yk &H79 : Define zk &H7A
> > Define SPACE &H20 : Define MINUS &H2D : Define GLEICH &H3D : Define DPP &H3A
> > Define Dot &H2E   : Define GRAD &hDF
> > Define Line1 &H80 : Define Line2 &HC0 : Define Line3 &H94 : Define Line4 &HD4 'Für 4x20 LCD
> > 'Define Line1 &H80 : Define Line2 &HC0 : Define Line3 &H90 : Define Line4 &HD0 'Für 4x16 LCD
> >
> > define PCF 64 'Adresse des PCF-LCDs. Alternativ kann auch eine Varible benutzt werden.
> >
> > define pop DA[1] 'Trick zum Auslesen des Stacks(siehe ccintern.dharlos.de)
> >
> > define LCDnr Bit[192] 'Zustandsbit umschaltung Display
> >
> > define P0 Bit[1]   ' Portzustände. Es kann jedes
> > define P1 Bit[2]   ' beliebige Byte vom RAM gewählt
> > define P2 Bit[3]   ' werden.
> > define P3 Bit[4]
> > define P4 Bit[5]
> > define P5 Bit[6]
> > define P6 Bit[7]
> > define P7 Bit[8]
> >
> > 'define Wordwert word[2]
> > define addr word[3]
> > define data word[4]
> >
> >
> > 'define wert Byte[1]
> > define cmd Byte[6] ' Byte zur Parameterübergabe
> > define MSB byte[7]
> > define LSB byte[8]
> > define i2caddr byte[9]
> >
> > define woord byte[10]
> > define wind byte[11]
> >
> >
> > LCDnr=0:gosub LCD_Init:gosub LCD_CLS ' display 0 regel 1+2 init
> > LCDnr=1:gosub LCD_Init:gosub LCD_CLS
> >
> > #loop
> > '----Aufrufe-Bausteine m.Byte-Addr.Reg.----------------
> > 'i2caddr immer Schreibadresse !!
> > 'addr = Registeradresse
> > 'Byte schreiben:
> > sys WrByteBReg,woord,4,144
> > sys RdByteBReg,0,144 ' dummy ???
> >
> > 'port1
> > sys prnLCD,LCDnr,0,PCF : print "PCF8591 Poort1";    ' 0 Volt
> >  sys RdByteBReg,1,144
> >   woord=pop
> >  print "Poort 1: ";woord,
> > Gosub LCD_Zahl3
> >
> > 'port2
> > sys prnLCD,LCDnr,0,PCF : print "  Temp aanvoerwater ";    ' LM 335 aanvoer
> >  sys RdByteBReg,2,144
> >   woord=pop
> >  print "Aanvoer: ";woord,
> >  woord=(woord *500/256)-200
> > Gosub LCD_Zahl3
> >
> > 'port3
> > sys prnLCD,LCDnr,0,PCF : print "Windsnelheid  ";   'aneometer met D/A
> >  sys RdByteBReg,3,144
> >   woord=pop
> >  print "WindSpeed:";woord,
> > Gosub LCD_Zahl3
> >
> > 'port 4
> > sys prnLCD,LCDnr,0,PCF : print "  Temp  retourwater ";   ' LM335 retour
> >  sys RdByteBReg,4,144
> >   woord=pop
> >  print "Retour : ";woord
> >  woord=(woord * 500 / 256)-200
> > Gosub LCD_Zahl3
> >
> > goto loop
> >
> >
> > #LCD_Zahl3 ' 3 stellige Zahl ausgeben
> >  if woord > 99 then sys putChar,LCDnr,(woord/100)+&h30,PCF else sys putChar,LCDnr,&h20,PCF
> > #LCD_Zahl2 ' 2 stellige Zahl ausgeben
> >  if woord > 9 then sys putChar,LCDnr,((woord/10) mod 10)+&h30,PCF else sys putChar,LCDnr,&h20,PCF
> > #LCD_Zahl1 '1 stellige Zahl ausgeben
> >  sys putChar,LCDnr,(woord mod 10)+&h30,PCF
> > return
> >
> > #LCD_CLS
> >  sys putCmd,LCDnr,&b00000001,PCF
> > return
> > #LCD_CMD
> >  sys putCmd,LCDnr,cmd,PCF
> > return
> > #LCD_Char
> >  sys putChar,LCDnr,cmd,PCF
> > return
> > #LCD_Init
> > sys putCmd8Bit,LCDnr,&b00110000,PCF
> > sys putCmd8Bit,LCDnr,&b00110000,PCF
> > sys putCmd8Bit,LCDnr,&b00110000,PCF
> > sys putCmd8Bit,LCDnr,&b00100000,PCF
> > sys putCmd,LCDnr,&b00101000,PCF
> > sys putCmd,LCDnr,&b00001100,PCF
> > sys putCmd,LCDnr,&b00000001,PCF
> > sys putCmd,LCDnr,&b00000110,PCF
> > return
> >
> >
> >  'syscode "int_i2c.s19" 'nur einmal laden, dann auskommentieren
> >
> >
> > Bitte Hilfe !!!
> >
> > Benno
> >  
>

 Antwort schreiben

Bisherige Antworten: