www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SDCC & MAX1271


Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir keiner helfen?

Autor: Tobias Arnold (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Tobias Arnold (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.