Forum: Analoge Elektronik und Schaltungstechnik HT16K33 schnelltest LED Blink :P


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von D a v i d K. (oekel) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Hi,

es ist 5 vor 12 ;) und ich bin scheinbar noch nicht ganz wach ODER ich 
habe einen defekten HT16K33 geliefert bekommen.

Könnt ihr mir Tipps, geben um zweiteres auszuschließen?

    #define LCD_I2C_DEVICE    0x7E
    #define SEG7_I2C_DEVICE    0x70

    ...
    while(1)
    {
      ioinit();
      i2c_init();
      lcd_init();
      HT16K33_Init();
      wait_10ms(1);//der ganze block nur zur Sicherheit, um das Device 
abziehen zu können.

      lcd_printlc_P(1, 1, PSTR("TEST AN"));
      lcd_light(true);
      lcd_printlc_P(2, 1, PSTR("TEST   "));

      HT16K33_ClearDisplay(0);
      HT16K33_ClearDisplay(1);
      HT16K33_ClearDisplay(2);
      HT16K33_ClearDisplay(3);
      HT16K33_ClearDisplay(4);

      wait_10ms(500);

      lcd_printlc_P(1, 1, PSTR("TEST    "));
      lcd_light(false);
      lcd_printlc_P(2, 1, PSTR("TEST AUS"));

      HT16K33_FillDisplay(0);
      HT16K33_FillDisplay(1);
      HT16K33_FillDisplay(2);
      HT16K33_FillDisplay(3);
      HT16K33_FillDisplay(4);

      wait_10ms(500);
    }


Die lib habe ich mir von
#include "HT16K33.h"
/* alle Rechte by achim seeger unter GPL
   myroboter@web.de, wünsche viel Spass damit */

Geborgt.

An dem HT16K33 auf dem Adafruit Breakoutborad habe ich stumpf 8 
mini-LEDs direkt mit den kleinen Beinchen an C0-C7 und mit den langen 
(Annode) an A0-A7 verlötet.

Die im Code angedeutete Schrift vom 2x16 LCD sehe ich!
Irgendein Blinken oder Flackern an den LEDs am HT16K33 jedoch nicht.

Verwende 1:1 das gleiche Kabel für Beide Devices.

Irgendwer eine schlaue Testmethodik für mich?
Codeschnipsel?

Grüße Oekel

: Bearbeitet durch User
von D a v i d K. (oekel) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Bis auf
#define HT16K33 0x70

habe ich nun mal 1:1 folgenden Code verwendet:
http://w8bh.net/avr/AvrDS1307.pdf

Und natürlich nicht den DS1307 abgefragt, sondern fix mit x07F und x0FF 
getestet.

Es bleibt trotzdem alles dunkel.

Ist es denn ein Irrglaube, das eine LED verbunden mit COM0 & ROW0 
leuchten muss, sofern ich die komplette Matrix auf "ON" setze?

Nur zur Sicherheit: Wie lautet die Schleife, die das komplette 
Ausgangs-Mapping der LED-Matrix EINschaltet?

(Ich iteriere da gerade stumpf beim I2C_WriteRegister(uint8_t busAddr, 
uint8_t deviceRegister, uint8_t data)

über alle deviceRegister aus dem Datenblatt und für data von 0 bis x0FF.

Habt ihr noch Tipps für mich? (Zweites Testboard mit verlöteter Anzeige 
ist bereits unterwegs, ich denke es liegt aber eher an der 
Ansteuerung==Denkfehler)

Danke

Oekel

von D a v i d K. (oekel) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Hab mir nun zum Testen diesen hier noch besorgt:
https://learn.adafruit.com/adafruit-7-segment-led-featherwings/pinouts

Laut Datenblat vertragt der HT16K33 5V. Im Shop steht aber etwas von 
3.3V
Brate ich mir dann die LEDs?

von D a v i d K. (oekel) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Danke für die diesmal ungewöhnlich niedrige Hilfestellung :P

Auf den richtigen Pfad hat mich dann folgender Beitrag von Frank 
gebracht:
Beitrag "Re: adafruit led backpack ht16k33"

Basierend darauf habe ich folgende Anleitung geschrieben:
http://www.mikrocontroller.net/articles/HT16K33_Schnelleinstieg

Falls gewünscht kann DIESER ganze Thread gelöscht werden, da die Lösung 
ja nun im Wiki zu finden ist ;)

Grüße Oekel

von Klaus R. (klaus2)


Bewertung
0 lesenswert
nicht lesenswert
...ich glaube, ich bin auch nicht ganz da - habe eine CC 7 SEG Anzeige 
mit K an C0...4 und A an A0...8 angeschlossen - leider bleibt das 
Drecksding dunkel, COM klappt aber. Ich sehe auch die ~106 Hz Anzeige 
takt an den Pins, aber A wird nicht auf VDD gesetzt.

-> Jmd eine Idee?
1
#define LED    0xE0
2
3
void LED_init () {
4
5
  i2c_start_wait(LED+I2C_WRITE);
6
  i2c_write(0x21);
7
  i2c_write(0x81);
8
  i2c_write(0xA0);
9
  i2c_stop();
10
11
  }
12
13
void LED_setbrt (char brt) {
14
15
  i2c_start_wait(LED+I2C_WRITE);
16
  i2c_write(0xE0 | brt);
17
  i2c_stop();
18
19
  }
20
21
void LED_test () {
22
23
  char i;
24
25
  i2c_start_wait(LED+I2C_WRITE);
26
  i2c_write(0x00);
27
  
28
  for(i=0; i<16; i++) {
29
30
    i2c_write(0xAA);
31
32
    }
33
34
  i2c_stop();
35
36
  }

(Die Fkt werden der Reihe nach in Main aufgerufen)

Danke, Klaus.

von Klaus R. (klaus2)


Bewertung
1 lesenswert
nicht lesenswert
...rästelhaft, es sieht so aus als wenn A0...15 nicht auf HIGH gehen, 
wenn man es erwartet. Ich sehe mit dem Oszi ansonsten alles so wie im 
DaBla angegeben, nur gehen die A nicht auf High (die C gehen auf low und 
dann auch High-Z). Auch die Keyscan Phase sieht man gut.

EDIT: Modul mal gewechselt und nur eine LED dran - auch nix, selbes 
Problem. Gut...ich rästel mal weiter - bin mir sicher, dass das Problem 
vor dem Rechner sitzt.

Klaus.

: Bearbeitet durch User
von Klaus R. (klaus2)


Bewertung
1 lesenswert
nicht lesenswert
SOLVED: Alter, man muss das Display nach dem (erstmaligen?) Übertragen 
von Daten nochmal neu EINSCHALTEN? Ja super...also reicht es nicht, das 
via "0x81" im INIT zu tun.

Klaus.

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]
  • [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.