Ich möchte in C den AD-Wandler MAX1271 ansteuern. Bloß ich weiß nicht, wie ich in C Bits schieben kann, um Sie an einen Port-Pin auszugeben oder um Sie von einen Port-Pin zu lesen. Ich muß eine Byte Bitweise ausgeben um eine AD-Wandlung zu starten. Dann muß ich zwei Bytes Bitweise lese, um den AD-Wert zu bekommen. Habe folgende Definitionen P5_0 Chip-Select AD P5_1 Dateneingang MAX1271 P5_2 Takt für Datenübertragung P5_3 Abfrag ob Wandlung fertig 0= Wandelt noch P5_4 Datenausgang MAX1271 Kann mir jemand behilflich sein?? Hab mit C kaum Erfahrung. Gruss Sascha
Klar kann Dir geholfen werden. Ich habe zwar keine Ahnung von AD-Wandlern, es geht aber mehr ums Schieben. Geschoben wird in C mit den Operatoren >> und << Ein Byte 'rausshiften' geht so : unsigned char testbyte=88; int i; for (i=0;i<8;++i) { AusgabeBit(testbyte&1); // 1. Bit extrahieren testbyte>>=1; // Testbyte eine Stelle nach rechts shiften } Ein Byte 'reinshiften' geht so : unsigned char testbyte=0; int i; for (i=0;i<8;++i) { testbyte<<=1; // Testbyte eine Stelle nach links testbyte+=EingabeBit(); // Bit hinzufügen } Wobei AugabeBit, bzw. EingabeBit deine noch zu programmierenden Funktionen sind, die jeweils physikalisch ein Bit einlesen oder ausgeben. Gleiches gilt auch für Integerwerte 16 (statt 8). Vorsicht ! i.d.R. immer mit unsigned Werten arbeiten, sonst wird der Wert beim Shift Vorzeichenrichtig betrachtet und das u.U. ungewollte Auswirkungen haben. Tobias
Habe die Ansteuerung endlich hinbekommen. Jetzt aber das nächste Problem, wie wandle ich die gelesenen Werte, um sie dezimal auf ne Anzeige auszugeben?? gruss sascha
Um meine Frage zu verdeutlichen: Ich habe den ADWERT, der ist 16bit. Nachdem ich mir die richtige Wert erechnet habe, dies ist auch wieder ein 16bit-wert. Dies will ich auf einem Display anzeigen, mit einem Komma. Wie z.b = 16.84V. Das Display ist mit nem T6963C Controller, also nich ASCII kompatibel. Hab zwar schon was von den prinf-befehlen gehört, hab sowas für die Display-Steuerung nicht verwendet.
Wie liegt denn das Komma ? Zwischen den beiden Bytes ? Ist der Nachkommawert ein normales Bytes, welches Du nur als Nachkommastellen interpetierst, oder haben die Bits die Wertigkeit 2^-1, 2^-2, 2^-3 etc. Die einzelnen Ziffern einzens Bytes kannst Du im allgemeinen so ermitteln: unsigned char testbyte=88; do { printout(testbyte%10); testbyte/=10; } while (testbyte!=0); wobei printout() deine Routine ist, die ein Zeichen ausgibt. Vorsicht. Die einzelnen Ziffern werden von rechts nach links geliefert. Tobias
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.