Forum: Mikrocontroller und Digitale Elektronik Problem mit TM1637 mit Atmega32


von Fadel (fadelsikh)


Angehängte Dateien:

Lesenswert?

Guten Tag,

ich habe ein Problem mit TM1637.
Ich habe versucht, das Problem zu finden, konnte es aber leider nicht 
finden.
Kann mir bitte jemand helfen, das Problem zu finden?

Mit freundlichen Grüßen,
Fadel

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wenn du keinen Inverter in der DIO Leitung hat, ist das hier falsch:
1
  if (byte & 0x01)
2
  PORTB &= ~(1 << DIO_PIN); // Set DIO low if the least significant bit of byte is 1
3
  else
4
  PORTB |= (1 << DIO_PIN); // Set DIO high if the least significant bit of byte is 0
denn du sendest das Byte invertiert an TM1637.
Ausserdem fragst du Bit 0 ab, das sollte aber Bit 7 sein, also
1
if (byte & 0x80)  
2
 
3
// und dann 
4
 byte >>= 1;

: Bearbeitet durch User
von Fadel (fadelsikh)


Lesenswert?

hab es schon versucht aber leider funktioniert noch nicht.

von S. L. (sldt)


Lesenswert?

Invertierung wurde bereits angesprochen.
Es fehlt der 9. Takt für das ACK.
Zu Beginn muss wohl auch die Helligkeit gesetzt werden.

Und ganz zu Beginn würde ich die Leitungen auf high setzen:
1
int main(void) {
2
PORTB |= (1 << CLK_PIN) | (1 << DIO_PIN); // Set CLK and DIO pins high
3
DDRB |= (1 << CLK_PIN) | (1 << DIO_PIN); // Set CLK and DIO pins as output

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Fadel schrieb:
> hab es schon versucht aber leider funktioniert noch nicht.

Ja nee, so kommen wir nicht weiter. Was funktioniert nicht und hast du 
mal die Signale angeguckt? Mach das mal mit viel delay und mit LEDs an 
den Leitungen, wenn du kein Oszi oder Logikanalyzer hast.
So ein Logikanalyzer gibts übrigens günstig.

von S. L. (sldt)


Angehängte Dateien:

Lesenswert?

Also hiermit ist zumindest irgendwas-irgendwie zu sehen.

PS:
soll heißen: "0123", manchmal etwas flackernd mit undefinierter 
Helligkeit.

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Matthias S. schrieb:
> // und dann
>  byte >>= 1;

Ist ja Unsinn. Du musst in die andere Richtung schieben. MSB zuerst und 
dann die nachfolgenden. Ausserdem hast du die Bitmaske immer noch 
falsch.

: Bearbeitet durch User
von S. L. (sldt)


Lesenswert?

PPS:
in der Datenleitung habe ich 270 Ohm - der TM1637 müsste sonst beim ACK 
den maximalen Strom des ATmega32 verkraften (keine Ahnung, ob er das 
kann), DDRB.1 wird beim 9. Takt ja nicht umgeschaltet.

von Matthias (matti15898)


Lesenswert?

Warum benutzt Du nicht eine fertige Bibliothek?

https://github.com/lpodkalicki/attiny-tm1637-library

Die ist zwar für einen Tiny13 gemacht aber leicht anpassbar an Deinen 
Controller oder erweiterbar.

von Ralph S. (jjflash)


Lesenswert?

TM1637, 4-stellige LED 7-Segmentanzeige mit AVR-GCC

Auch wenn das nicht explizit für einen ATmega32 (ich habe nie einen 
solchigen gehabt) gemacht war, sollte das dennoch sofort darauf 
funktionieren.

Gruß Ralph

von Thorsten S. (whitejack)


Lesenswert?

Ralph S. schrieb:
> sollte das dennoch sofort darauf
> funktionieren.

Woher diese Sicherheit? Es ist doch gar nichts über den Aufbau bekannt 
-> Spannungsversorgung, Verkabelung, Leitungsführung, 
Komponentenauswahl, Hardware, Programmer etc...

S. L. schrieb:
> Also hiermit ist zumindest irgendwas-irgendwie zu sehen.

Soll das eine Hilfestellung werden oder hast du selbst auch ein Problem 
mit der gleichen Kombi?

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Thorsten S. schrieb:
> Es ist doch gar nichts über den Aufbau bekannt
Es ist noch nicht mal bekannt, **was** denn überhaupt das Problem ist.

Das ist wie wenn wer zum Arzt rennt und sagt: "Immer wenn ich Kaffee 
trinke, spüre ich ein schmerzhaftes Stechen im Auge. Was kann ich 
dagegen tun?"

Und nach langwierigen Untersuchungen bis hin zum Neurologen kommt 
heraus, dass er einfach den Kaffelöffel aus der Tasse nehmen muss, 
dessen Griff ins Auge geht.

: Bearbeitet durch Moderator
von Ralph S. (jjflash)


Lesenswert?

Lothar M. schrieb:
> dass er einfach den Kaffelöffel aus der Tasse nehmen muss,
> dessen Griff ins Auge geht.

Alt... aber gut !
:-)

von Ralph S. (jjflash)


Lesenswert?

Irgendwie war ich wohl zu dämlich, den Link korrekt zu kopieren:

Beitrag "TM1637, 4-stellige LED 7-Segmentanzeige mit AVR-GCC"

Thorsten S. schrieb:
> Woher diese Sicherheit? Es ist doch gar nichts über den Aufbau bekannt
> -> Spannungsversorgung, Verkabelung, Leitungsführung,
> Komponentenauswahl, Hardware, Programmer etc...

Okay, sooooooo sicher bin ich mir dann nicht! Andererseits hat er Clock 
an PB0 und Data an PB1 angeschlossen und nach seinen Aussagen sieht er 
ab und an etwas, aber flackernd (was wohl auch daran liegen kann, dass 
er in einer Endlosschleife den TM1637 permanent befeuert, was er nicht 
tun muß. Wenn dieser einmal seine Daten hat, wird er das solange 
anzeigen, bis etwas geändert wird).

Von daher sollte er in der Lage sein vom verlinkten Thread die 
Dataleitung von PB2 auf PB0 zu ändern!

Wie auch immer ... gehabts euch wohl und schlaft gut !

von S. L. (sldt)


Lesenswert?

Thorsten S. fragte:
> Soll das eine Hilfestellung werden oder hast du
> selbst auch ein Problem mit der gleichen Kombi?

Ersteres, denn nein, bei mir läuft diese Kombination; allerdings in 
Assembler, was ich natürlich keinem, schon gar nicht Fadel, zumuten 
kann. Folglich habe ich sein C-Programm soweit hingebogen, dass er etwas 
halbwegs Vernünftiges auf seinem TM1637 sehen bzw. ein eventuelles 
Hardwareproblem klären kann; und, vergleichend, Fehler in seinem 
ursprünglichen Programm erkennt. Da er sich aber nicht mehr meldet, 
scheint jetzt alles in Ordnung zu sein.

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.