http://satellite-board.de

Aktuelle Zeit: Sa 21. Dez 2024, 17:53

Alle Zeiten sind UTC




Ein neues Thema erstellen Auf das Thema antworten  [ 64 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5  Nächste
Autor Nachricht
 Betreff des Beitrags: Re: Adam Tuner - Mulituner über PCF8574
BeitragVerfasst: Mi 8. Jul 2009, 20:29 
Offline
Administrator
Benutzeravatar

Registriert: Do 29. Jun 2000, 20:20
Beiträge: 5439
Wohnort: München
Verbrauch
Bitte mal diese Schaltung/BOM kontrollieren!

cu Oli


Dateianhänge:
Präsentation1.pdf [170.88 KiB]
559-mal heruntergeladen
Scannen002.pdf [448.68 KiB]
592-mal heruntergeladen
Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Adam Tuner - Mulituner über PCF8574
BeitragVerfasst: Do 9. Jul 2009, 15:58 
Offline
Member

Registriert: Sa 20. Jan 2007, 18:16
Beiträge: 105
Hallo Oli,

Die Schaltung sollte funktionieren, wenn die ADAM einen 5V I2C Bus hat. Ist
der I2C Bus nur bei 3,3V, sollte der Philips Levelshifter eingebaut werden.

Der Baustein PCF7574 hat einen Betreibsspannungsbereich von 2,6-6V und
kann damit auch direkt in einer 3,3V Umgebung laufen.

R3 sollte kleiner sein, ca 1-2k, so dass der Transistor sauber in die Sättigung
kommt. Für den Transistor selbst reicht ein BC558 o.ä..

mfg
Franz


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Adam Tuner - Mulituner über PCF8574
BeitragVerfasst: Do 9. Jul 2009, 17:04 
Offline
Administrator
Benutzeravatar

Registriert: Do 29. Jun 2000, 20:20
Beiträge: 5439
Wohnort: München
Verbrauch
Sollten 5V sein. Jedenfalls mist das mein altes Messgerät.
Ich habe noch einige BD136 hier gehen die auch?

cu Oli


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Adam Tuner - Mulituner über PCF8574
BeitragVerfasst: Fr 10. Jul 2009, 11:47 
Offline
Administrator
Benutzeravatar

Registriert: Do 29. Jun 2000, 20:20
Beiträge: 5439
Wohnort: München
Verbrauch
So die Schaltung sollte jetzt gehen. Jedenfalls wenn ich von "Hand" 5V auf den T1 lege schatet dieser (üder den R3=1K).

Jetzt hätte ich noch eine Verständnisfrage für die eschreibung des i2c codes für den PCF8574P. Im Datasheet steht danicht "so" viel. Wie ich dies jetzt verstehe schreibt und liest man immer alle Infos zu allen 8 Ports? Ich müßte also erst einmal den Status aus dem PCF auslesen und dann meine Info dazu "addieren" und dann wieder schreiben...??? Richtig?

Also Adressieren:

S 0100 000 0

0100 = an wen an PCF8574
000 = A0-A2 auf GND
0 = Schreiben
---> 0100 erste Bit = 0x4
---> 0000 zweites Bit = 0x0

So das ich bei der Adressierung 0x40 bin fürs Schreiben und 0x41 zum lesen.

Jetzt aber die Daten???

A ??? 1 P

Wenn ich das Datenblatt richtig verstehe dann:

A P7 P6 P5 P4 P3 P2 P1 P0 0 P

Die P sind dann je die Ports. Für micht heißt dann 0x0 aus und 0x1 ein ??? richtig?

A 0 0 0 0 0 0 0 1 0 P
0000 = 0x0
0001 = 0x1
----> 0x01

was sich ergibt zu:

S 0x40 A 0x01 0 P

Jetzt tut sich aber dabei gar nichts!!! Mach ich was Falsch?
ich verwende die gleiche i2c Funktion die den SAA1064 ansteuert, das geht ja.

Kann es sein das es an der letzten Bit vor dem Stop liegt 0 bzw. 1 für lesen/schreiben. So ergibt sich von der Länge eine ungerade Zahl an Bits. Da aber die i2c funktion intern Byts verwendet...

Code:
BOOL gx_I2C_WriteReg(I2C_HANDLE hBus, BYTE bAddr, BYTE bValue)


cu Oli

_________________
http://iqzone.de


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Adam Tuner - Mulituner über PCF8574
BeitragVerfasst: Fr 10. Jul 2009, 16:46 
Offline
Member

Registriert: Sa 20. Jan 2007, 18:16
Beiträge: 105
Hallo Oli,

der PCF8574 arbeitet immer mit 8Bits. Die Adressierung ist so wie von
Dir bereits beschrieben:
S 0 1 0 0 A A A 0 -
Der Strich bedeutet warten auf Acknowledge. Dann werden die Portdaten
gesendet:
7 6 5 4 3 2 1 0 - P
Die Nummern sind die Portbits und der Strich wieder warten auf Acknowledge.
Danach kommt die Stopmeldung P.

Die zusätzliche 1 in den Diagrammen ist nur beim Lesebefehl. Das besagt, das
in dieser Zeit der PCF8574 auf das Acknoledge vom Master wartet. Das ist kein
Bit was übertragen wird.

So wie Du das beschrieben hast, werden wahrscheinlich zwei Datenbytes zum
PCF gesendet. Das erste mit 0x01 und das zweite mit 0x00. Das heisst also das
das Portbit 0 nur für eine Byteübertragungszeit (~400kHz) gesetzt ist und dann wieder
zurückgeschalten wird.

S 0x40 A 0x01 P, schalten das Port 0 auf 1 (5V)
S 0x40 A 0x00 P, schalten das Port 0 auf 0 (GND)

mfg
Franz


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Adam Tuner - Mulituner über PCF8574
BeitragVerfasst: Fr 10. Jul 2009, 22:31 
Offline
Administrator
Benutzeravatar

Registriert: Do 29. Jun 2000, 20:20
Beiträge: 5439
Wohnort: München
Verbrauch
Ich habe bisher nur dises gesendet:

S 0x40 A 0x01 P

Weil die letzte Stelle konnte ich nicht senden da es ja nur ein Bit war, ich kann aber nur bytes senden.

Code:
BOOL gx_I2C_WriteReg(I2C_HANDLE hBus, BYTE bAddr, BYTE bValue)
{
   IICTRANS iicTransBuf;
   BYTE bData[4];
   BYTE bCmd[4];
   BOOL bRet = FALSE;

   bData[0] = bAddr;    // Address
   bData[1] = bValue;

   bCmd[0] = IIC_START;
   bCmd[1] = IIC_DATA;
   bCmd[2] = IIC_STOP;

   iicTransBuf.dwCount = 3;
   iicTransBuf.pData = bData;
   iicTransBuf.pCmd = bCmd;

   bRet = iicTransaction(&iicTransBuf, hBus);

   return bRet;
}


Aufruf:

Code:
gx_I2C_WriteReg(DEFAULT_I2C, Port2PCF, 0x01);


cu oli

_________________
http://iqzone.de


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Adam Tuner - Mulituner über PCF8574
BeitragVerfasst: Sa 11. Jul 2009, 17:31 
Offline
Member

Registriert: Sa 20. Jan 2007, 18:16
Beiträge: 105
Hallo Oli

wie ist denn die LED nach diesem Befehl? An oder Aus.

mfg
Franz


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Adam Tuner - Mulituner über PCF8574
BeitragVerfasst: Sa 11. Jul 2009, 18:14 
Offline
Administrator
Benutzeravatar

Registriert: Do 29. Jun 2000, 20:20
Beiträge: 5439
Wohnort: München
Verbrauch
Ich habe den Fehler gefunden. Es lag doch noch an dieser Schaltung. Jetzt scheint es zu gehen. Jedenfalls bei diesem einen Port.

:yeah:

Also folgende Änderungen gegenüber der Schaltung oben:

T1 = BC574
R4 = 2*330Ohm in Reihe
R3 = 1Kohm
anderes LED verwendet.

Ansprechen in Code, wie oben beschrieben! Der Treiber ist zu finden unter
Code:
X:\OSRAD_DEV\Drivers\pcf8574\pcf8574.c
X:\OSRAD_DEV\Drivers\pcf8574\pcf8574.h

Ich werde einen Port dafür nutzen die Antenenversorgungsspannung (5V) für DVB-T ein und aus zu schalten. Original sind die 5V beim adamT nicht angeklemmt. Ich würde dies aber nur mit dem stärkeren NT der adamS verwenden! Meine Antenne zieht 35mA, das sollte noch gehen.
Am Pin 1 des Tuners fehlen 2 Widerstände (adamT), dort wo die 5V anliegen kommt eine 0R Brücke rein, der andere ist ein 33R laut gxSchaltplan.

cu Oli


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Adam Tuner - Mulituner über PCF8574
BeitragVerfasst: So 12. Jul 2009, 09:55 
Offline
Administrator
Benutzeravatar

Registriert: Do 29. Jun 2000, 20:20
Beiträge: 5439
Wohnort: München
Verbrauch
Jetzt habe ich versucht den Status auszulesen, allerdings bekomme ich ein etwas unerwartetes Ergebnis???

Code:
uchar      pcf_data = 0;

gx_I2C_ReadReg(DEFAULT_I2C, Port2PCF, &pcf_data);


Code:
BOOL gx_I2C_ReadReg(I2C_HANDLE hBus, BYTE bAddr, BYTE *pValue)


Dann gebe ich &pcf_data (=*pValue) aus:

Code:
printf("\n\r[PCF8574] 0x%02x \n\r", pcf_data);


Nun wird aber Folgendes im Log ausgegeben:

Code:
[PCF8574] 0x2ed08c


Ich hätte hier nur ein BYTE erwartet und dieses 0x00 oder 0x01.

Wo liegt da der Hund begraben???

cu Oli

_________________
http://iqzone.de


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Adam Tuner - Mulituner über PCF8574
BeitragVerfasst: So 12. Jul 2009, 16:17 
Offline
Member

Registriert: Sa 20. Jan 2007, 18:16
Beiträge: 105
Hallo Oli,

Das kann auch nur am printf Befehl liegen. Nach meiner Meinung müsste der Befehl so aussehen:
printf("\n\r[PCF8574] 0x%x \n\r", pcf_data);
Eventuell liest auch das gx_I2C_ReadReg Programm mehr als nur ein Byte aus.

Der Inhalt des Bytes ist immer der Portinput wenn der Portausgang auf 1 gesetzt ist. Ansonsten
undefiniert.

mfg
Franz


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Adam Tuner - Mulituner über PCF8574
BeitragVerfasst: Di 14. Jul 2009, 17:56 
Offline
Administrator
Benutzeravatar

Registriert: Do 29. Jun 2000, 20:20
Beiträge: 5439
Wohnort: München
Verbrauch
Also ich habe jetzt ein weiteres Problem. Am BC547B gibt es einen Spannungsabfall zwischen Emitter und Kollektor, am Kollektor liegen also nicht die vollen 5V an (etwa <3V) obwohl am Emitter die vollen 5V anliegen.

Woran kan dies liegen? Ist der BC547B für diesen Fall ungeeignet?

cu Oli

_________________
http://iqzone.de


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Adam Tuner - Mulituner über PCF8574
BeitragVerfasst: Mi 15. Jul 2009, 08:34 
Offline
Member

Registriert: Sa 20. Jan 2007, 18:16
Beiträge: 105
Hallo Oli

der Transistor BC547 ist ein NPN Transistor. Du benötigts
aber einen PNP Transistor. Z.B. BC558.

mfg
Franz


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Adam Tuner - Mulituner über PCF8574
BeitragVerfasst: Mi 15. Jul 2009, 08:40 
Offline
Administrator
Benutzeravatar

Registriert: Do 29. Jun 2000, 20:20
Beiträge: 5439
Wohnort: München
Verbrauch
Ich als dummer Maschinenbauer... Grundsätzlich ging der BC547 für die LED ja....bis auf die Spannung.
Tja da werde ich wieder mal etwas bestellen müssen. Wenn ich sowieso bestelle muss, der BC558 ist die richtige Wahl?

cu Oli


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Adam Tuner - Mulituner über PCF8574
BeitragVerfasst: Mi 15. Jul 2009, 15:11 
Offline
Member

Registriert: Sa 20. Jan 2007, 18:16
Beiträge: 105
Hallo Oli,

der BC558 ist Ok für die Schaltung. Es geht auch der BC547, wenn
der Transistor genen GND schaltet. Das würde bedeuten:
- +5V
- LED
- Widerstand (für 5mA)
- BC847
- GND
Die LED müsste dann leuchten, wenn das Portbit = 1 ist.

mfg
Franz


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Adam Tuner - Mulituner über PCF8574
BeitragVerfasst: Mo 20. Jul 2009, 08:59 
Offline
Senior Member
Benutzeravatar

Registriert: Mi 28. Dez 2005, 19:36
Beiträge: 508
Wohnort: Dresden
Hallo in die Runde,

bin nun wieder im Lande - Urlaub ist vorbei :-(.

@Oli,
schau mal, ob Du mit den Casten nach int (-> (int) vor die auaszugebenede Variable) bei printf die richtige Ausgabe bekommst. Ich weiss jetzt nicht, wie bei dem Compiler printf implementiert ist, baer meist musst Du explizit nach int casten, sonst kommt bei einer char/byte-Variable Müll raus.


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 64 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5  Nächste

Alle Zeiten sind UTC


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Deutsche Übersetzung durch phpBB.de