Forum: Mikrocontroller und Digitale Elektronik aus Nachlass UAA2022 bekommen


von Andreas S. (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe aus Nachlass,Hobbyauflösung einige UAA2022 bekommen.
Datenblatt ist vorhanden, es handelt sich um ein Treiber für zwei 
Siebensegmentzeigen mit seriellen Eingang (Schieberegister).
Meine Frage,hat schon jeamnd diese eingesetzt u.U. ein lauffähigen
Codeschnippsel ?
So wie ich das Datenblatt lese,wird VDR auf Low gezogen,
wenn CLK von HIGH nach LOW geht werden die Daten in den
Ausgang geschoben und somit auf dem Display angezeigt.
Sorry für meine dummen Fragen,aber ich bin blutiger Anfänger
und versuche nur die IC,s weiter zu nutzen.
Klar gibt es bessere Alternativen-aber altes Material erst einmal 
aufzuarbeiten ist auch eine Möglichkeit.

von MaWin (Gast)


Lesenswert?

Andreas S. schrieb:
> Fragen,aber ich bin blutiger Anfänger

Dann tut es wohl Arduino-speak
1
sendto2022(int16_t bits)
2
{
3
    digitalWrite(VDI,0);
4
    for(uint8_t i=0;i<16;i++)
5
    {
6
        digitalWrite(DATA,bits<0);
7
        digitalWrite(CLK,1);
8
        digitalWrite(CLK,0);
9
        bits<<=1;
10
    }
11
    digitalWrite(VDI,1);
12
}

von Andreas S. (Gast)


Lesenswert?

Danke MaWin für die Unterstützung !
Mein erster Versuch sieht so aus (bitte nicht steinigen):

int CLK = 8;
int VDI = 9;
int DATA = 7;

void setup()
{
 pinMode(8, OUTPUT);
 pinMode(9, OUTPUT);
 pinMode(7, OUTPUT);
}


void loop()
{

}

sendto2022(int16_t bits)

{
    digitalWrite(VDI,0);

    for(uint8_t i=0;i<16;i++)

    {
        digitalWrite(DATA,bits<0);

        digitalWrite(CLK,1);

        digitalWrite(CLK,0);

        bits<<=1;
    }

    digitalWrite(VDI,1);
}

Der Compiler meckert aber:
expected constructor, destructor, or type conversion before ';' token
Bin jetzt etwas ratlos ....

von MaWin (Gast)


Lesenswert?

Man könnte sendto2022 noch ein void verpassen und es aufrufen.

von Andreas S. (Gast)


Lesenswert?

Danke noch einmal für den Tipp !
An dass "void" habe ich wirklich nicht gedacht.
Keine Fehlermeldung mehr vorhanden,dafür aber auch nur "eine komische 
Anzeige",welche auch statisch ist und sich nicht ändert.
Angezeigt wird eine "22" wobei des mittlere und untere Segment fehlen.
Ich denke es wird noch an dem Timing liegen,auch weiß ich nicht was
zu erst raus geschoben werden soll (MSB oder LSB).
Das Datenblatt ist da auch nicht sonderlich hilfreich.
Ich muss am Mo. mal mein LA raus suchen und mir dass genauer anschauen.
Am Wochenende reicht die Zeit nur zum Schreiben.
Noch eine Idee ?

von MaWin (Gast)


Lesenswert?

Andreas S. schrieb:
> Noch eine Idee

Gesamtcode und Schaltung posten ?

Grosse Party veranstalten damit sich das jeder aus dem Forum bei dir vor 
Ort ansehen kann ?

von Andreas S. (Gast)


Angehängte Dateien:

Lesenswert?

Die Schaltung ist anbei, bzw. auch aus dem Forum:
Beitrag "UAA 2022 Datenblatt"
Zum Testen ob ich die Anzeige "zum laufen bekomme" habe ich nur
den o.g Code von MaWin weil ich aus den Datenblatt nicht schlau geworden
bin. Eine konkrete Anwendung gibt es noch nicht,einfach zum Testen
einen Zähler von 0-99 reicht um den Umgang mit den IC und die
IC,s selber auf Funktion zu testen bevor ich diese dann final einsetze.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

wenn du mich fragst sind die Kondensatoren falsch dran und 1nF ist zu 
klein. Und dann würde ich erstmal mit dem Testeingang alle Segmente 
testen. Den Strombegrenzer R sicherheitshalber vergrößern. Schau dir 
nochmal Seite 2 an.

von MaWin (Gast)


Lesenswert?

Andreas S. schrieb:
> Die Schaltung ist anbei,

Aber falsch (schon dort).

Andreas S. schrieb:
> Angezeigt wird eine "22"

4,10,12,15,23,24

Wenn man 50324 rausschiebt...

von Andreas S. (Gast)


Lesenswert?

Also ich habe dass noch in Ruhe durch gearbeitet und die
Verdratung der 7 Segmentanzeige entsprechend dem DB geändert:

Display 1 : Segment A nach Pin 15 und Dp nach Pin 8 vom UAA2022
Display 2 : segment A nach Pin 6 und  Dp nach Pin 23 vom UAA202
(analog wie auf Seite 2 beschrieben)
Auch habe ich die Widerstände und Kondensatoren entprechend geändert.
Displaytest zeigt 2 x eine Acht an - dass sollte von der Verdratung
passen.
Aber noch wie vor keine Änderung,wenn ich z.B.
"digitalWrite(DATA,B00001101);"
schicke müsste doch eine "3"  auf der ersten Stelle angezeigt werden -
oder sehe ich dass falsch ?

von MaWin (Gast)


Lesenswert?

Andreas S. schrieb:
> Änderung,wenn ich z.B.
> "digitalWrite(DATA,B00001101);"
> schicke müsste doch eine "3"  auf der ersten Stelle angezeigt werden

Nein.

digitalWrite liefert nur 1 bit.

Und 1101 ist nicht Segment A,B,C,D,G .

Und 8 bit reichen nicht für 16 Segmente.

Nicht ohne Grund fragen wir nun zum dritten Mal, was du wirklich für ein 
Programm benutzt.

Wenn du zu faul bist, konkret zu werden, ist nicht zu helfen.

von Andreas S. (Gast)


Lesenswert?

Ich bin nicht zu faul,andernfals würde ich nicht selbst nach einer 
Lösung suchen und es einfach sein lassen.
Danke für die Höflichkeit - es hatt nun mal nicht jeder das Fachwissen 
um die Lösung aus den berühmten Ärmel zu schütteln ...

von Erklärbar (Gast)


Lesenswert?

Also zeig deinen Code, dann kann dir geholfen werden!
Her damit, man will dir helfen!

von Veit D. (devil-elec)


Lesenswert?

Hallo,

@ TO:
Zu beachten gilt das VDR und CLK default bzw. in Ruhezustand auf High 
Pegel sein müssen. Also setup() anpassen.
1
/* Bits rausschieben, LSB first */
2
void shiftOut16Bit (uint16_t data) 
3
{   
4
  digitalWrite(VDR, LOW);       // Chip Select
5
 
6
  // in das Schieberegister eintakten //   
7
  for(uint8_t i=0; i<16; i++)
8
  {
9
    if(data & 0x01) {           // nur unterstes Bit betrachten
10
      digitalWrite(DATA, HIGH); // und Datenleitung entsprechend setzen
11
    }
12
    else {
13
      digitalWrite(DATA, LOW); 
14
    }
15
    
16
    digitalWrite(CLK, LOW);     // Takt erzeugen
17
    data = data >> 1;           // nächstes Bit vorbereiten
18
    digitalWrite(CLK, HIGH);   
19
  }
20
21
  digitalWrite(VDR, HIGH);      // Chip Select
22
}

Ansonsten zeig mal deinen kompletten Code in c Tags bitte damit man das 
besser lesen kann.

: Bearbeitet durch User
von Andreas S. (Gast)


Angehängte Dateien:

Lesenswert?

Kurze Rückmeldung,faul war ich nicht - ich habe es entlich geschafft.
Dank den Beispielen hier im Forum und einiger Codeschnippsel im Web.
Noch eine dumme Frage: wie setze ich c Tags hier im Forum ?
Ich würde den Code hier gern online stellen.
Den Dratverhau der fliegenden Verdartung bitte ich zu entschuldigen.

von Veit D. (devil-elec)


Lesenswert?

Andreas S. schrieb:
> Noch eine dumme Frage: wie setze ich c Tags hier im Forum ?

Schau dir doch einmal die Umgebung auf der Seite beim lesen und beim 
Texte verfassen an. Vielleicht kommste selbst drauf.

von Andreas S. (Gast)


Lesenswert?

Meine Legasthenie aus der Kindheit bricht wieder durch,ich habe es 
trotzdem
geschafft:
1
int VDR = 8;
2
int CLK = 9;
3
int Data = 7;
4
5
void setup() 
6
{
7
  pinMode(VDR, OUTPUT);
8
  pinMode(CLK, OUTPUT);
9
  pinMode(Data, OUTPUT);
10
  digitalWrite(VDR, HIGH);
11
  digitalWrite(CLK, HIGH);
12
  
13
  UAA2022(0xCF, 0xCF);
14
  // rechte Anzeige Dp g-->a / linke Anzeige Dp g-->a /0xFD entspricht 6.6.
15
  //                                                 / 0xCF entspricht 3.3.
16
}
17
18
void loop()
19
 {
20
   
21
 }
22
23
24
void UAA2022(uint8_t first, uint8_t second)
25
{
26
  digitalWrite(VDR, LOW);
27
  for ( int i = 0; i < 8; i++) {
28
    if ( (first & 0x80) == 0) {
29
      digitalWrite(Data, LOW);
30
    }
31
    else {
32
      digitalWrite(Data, HIGH);
33
    }
34
    digitalWrite(CLK, LOW); // toggle clock
35
    digitalWrite(CLK, HIGH);
36
    first = first << 1;
37
  }
38
  for ( int i = 0; i < 8; i++) {
39
    if ( (second & 0x80) == 0) {
40
      digitalWrite(Data, LOW);
41
    }
42
    else {
43
      digitalWrite(Data, HIGH);
44
    }
45
    digitalWrite(CLK, LOW); // toggle clock
46
    digitalWrite(CLK, HIGH);
47
    second = second << 1;
48
  }
49
  digitalWrite(VDR, HIGH);
50
}

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
Noch kein Account? Hier anmelden.