Tidenuhr bauen

Gast #1696708
Lesenswert?

Hallo zusammen,

ich möchte eine Uhr bauen, die die nächste Tidenzeit anzeigt; die Uhr 
ist ähnlich der aus dem Thread "Brauche Hilfe beim Bau einer Uhr".

Die Uhr hat ein DCF-Modul von C, einen Haufen LEDs, Mini-SD-Karte (dort 
werden die Tidenzeiten gespeichert), USB (man weiss ja nie) und eine 
Q-Touch-Key.

Meine Bitte wäre jetzt dass da mal einer drüber guckt, weil ich so ein 
großes Projekt normalerweise nicht mache und die LP auch ein bisschen 
was kosten werden. Da sollte es schon im ersten Schuss passen.

Danke,

robbse
Angehängte Dateien:
Gast #1696908
Lesenswert?

Hallo Peter,

ich weiss dass das die Holzhammermethode ist, aber die Berechnung von 
Gezeiten ist sau schwer...
Außerdem hab ich so einen zusätzlichen Lerneffekt, da ich noch nie mit 
SD-Karten gearbeitet habe. By the way: Stimmt die Belegung für eine 
Mini-SD-Karte?
Gast #1696940
Lesenswert?

Moin,

die Berechnung von Tiden ist schwer bis gar nicht exakt möglich, da 
neben den astronomischen Einflüssen auch die lokalen, wie Wind, 
Strömung, Untergrundbeschaffenheit und Uferverlauf eine Rolle spielen.
Schau dir mal den Quellcode zu XTide an: http://www.flaterco.com/xtide/
Evtl. kannst du eine Schnittstelle zum Controller implementieren, so 
dass er die Daten per UART erhalten kann. Sparst dir das Umstecken der 
SD-Karte und Parsen der Dateien.

Beste Grüße, Marek
Gast #1697245
Lesenswert?

Marek N. schrieb:
> Moin,
>
> die Berechnung von Tiden ist schwer bis gar nicht exakt möglich, da
> neben den astronomischen Einflüssen auch die lokalen, wie Wind,
> Strömung, Untergrundbeschaffenheit und Uferverlauf eine Rolle spielen.
> Schau dir mal den Quellcode zu XTide an: http://www.flaterco.com/xtide/
> Evtl. kannst du eine Schnittstelle zum Controller implementieren, so
> dass er die Daten per UART erhalten kann. Sparst dir das Umstecken der
> SD-Karte und Parsen der Dateien.
>
> Beste Grüße, Marek

Deshalb wollte ich die vorher berechnen lassen und auf der SD-Karte 
speichern. Per USB und Massenspeicherfunktion können die Daten dann ein 
Update erhalten. Soweit der Plan...
#1697351
Lesenswert?

Robert N. schrieb:

> Deshalb wollte ich die vorher berechnen lassen und auf der SD-Karte
> speichern.

Auch wenn die lokalen Einflüsse eine Rolle spielen, so gibt es doch eine 
Möglichkeit aus den vergangenen Tiden einen Satz von Parametern zu 
errrechnen, mit denen man durch Überlagerung von Schwingungen den 
erwarteten Tidenverlauf vorherberechnen kann.
Wenn das nicht ginge, hätte man früher keine mechanischen Tidenrechner 
bauen können.

Ich würde daher an deiner Stelle nachsehen, wie XTide die Berechnung 
macht, bzw. wo es die für die Berechnung notwendigen Datensätze 
herbekommt und dann diesen Mechanismus implementieren.

Du sparst dir den ganzen SD-Karten Ansatz, bzw. benötigst ihn nur noch 
um die Parametersätze auf den AVR zu übertragen oder zu aktualisieren. 
Anstelle von SD kannst du dann auch diese Parametersätze zb per UART auf 
den AVR übertragen.
Gast #1697366
Lesenswert?

@Karl-Heinz: Da ist was dran; deshalb brauche ich aber nicht das Layout 
umwerfen, der Kartenleser frisst ja kein Brot ;o)
Meine eigentliche Frage ist ja: Hab ich einen Fehler drin 
(Pinbelegungen, grundlegend was falsch, Detailfehler) oder kann ich das 
so bestellen?
#1697394
Lesenswert?

Vielleicht gehts nur mir so.
Aber ich kann auf dem PDF so gut wie nichts erkennen

(Eagle hat doch einen wunderbaren Bildexport als PNG. Wozu der Umweg 
über PDF? Ist doch nur Arbeit für dich)

Daher kann ich auch nicht wirklich sagen, ob das SInn macht. Stutzig 
macht mich allerdings der ganze untere Teil. Da sind viele IC, die alle 
irgendwie zusammenhängen und ich frage mich, was das ist.
Persönliche Seite #1697408
Lesenswert?

Karl heinz Buchegger schrieb:
> Vielleicht gehts nur mir so.
> Aber ich kann auf dem PDF so gut wie nichts erkennen

Die PDFs kann man gut zoomen. Ich kann zumindest sehr genau lesen, was 
da drin ist. Nur in den Vorschaubildern ist nichts zu erkennen.

> Stutzig
> macht mich allerdings der ganze untere Teil. Da sind viele IC, die alle
> irgendwie zusammenhängen und ich frage mich, was das ist.

TLC59116

16-Channel Fm+ I2C Bus Constant-Current LED Sink Driver (Rev. B)
http://focus.ti.com/docs/prod/folders/print/tlc59116.html
#1697438
Lesenswert?

Puh.
Du hast da schon jede Menge Leds :-)

Wie hast du dir eigentlich die Bedienung vorgstellt?
Schiebst du die SD Karte rein und das wars, oder wie soll das laufen?

Willst du die LED Matrix für ein User Interface benutzen?

Hintergrund: Ich überlege gerade, ob nicht ein graphik-fähiges LCD 
eigentlich geschickter wäre.
Da könnte man dann den Inhalt der SD-Karte, die Häfen, anzeigen und vom 
Benutzer auswählen lassen. Auch kann der Benutzer dann zb anzuzeigende 
Zeit einstellen (wichtig für aktive Seefahrer, ich will ja wissen wann 
in der Zukunft in einem Hafen Niedrigwasser ist, um meinen Turn planen 
zu können), ausserdem ist zwar die Tidenkurve ganz nett, aber eigentlich 
interessiert mich als Seefahrer viel mehr, was das in Zahlen ausmacht, 
etc.
Gast #1697461
Lesenswert?

Ganz so schlimm wirds nicht. Wie gesagt soll die Uhr ganz ähnlich dieser 
hier werden: "Brauche Hilfe beim Bau einer Uhr". Die LEDs dienen nur zum 
Anzeigen der Zeit. Mit Hilfe des Touch-Keys kann dann zwischen normaler 
Uhrzeit und Tidenzeit gewechselt werden. Und das ganze auch nur für 
einen festen Standort.
Gast #1697499
Lesenswert?

Du hast es jedenfalls hingekriegt, den Schaltplan so zu zeichnen, daß 
man aus ihm gar nichts entnehmen kann, sondern raten muss.
Ich nehme mal an, LED1 bis LED119 sind Synonyme für +5V.
Dine LEDs können laut TLC59116-Datenblatt wegen der 680 Ohm mit 40mA 
betrieben werden, ist das wirklich Absicht? Ungewöhnlicher Strom, meist 
sind ja 20 oder 25mA das Maximum, und dieser Widerstand dient als 
Sicherheit vor Überlastung der LEDs auch im Falle eines 
Programmierfehlers. Ich geh mal von 20mA LEDs aus.
Keine Ahnung, wozu man ISP, JTAG und COM zusammen braucht.
Wie gut die als 'LDR' bezeichnete Photodiode BP104 funktioniert, sei 
dahingestellt, du willst damit offenbar die Helligkeit des Displays 
vorgeben.
100k als DCF PullUp find ich unnötig hochohmig.
Ebenfalls bei HWB, wo noch die 100nF eher unnütz sind. HWB kann ein 
Jumper sein, da muss man nichts gegen Störungen 'entkoppeln'.
Und was auch immer C601 zwischen den beiden Analogeingängen soll, geht 
aus dem Schaltplan nicht hervor.
Ob man unbedingt einen Schaltregler für 3.3V braucht? Nimm einen 
Linearregler, die Verluste fallen bei 40m Strom pro LED wohl nicht ins 
Gewicht, du hast eh Netzversorgung, aber der Aufbau stört nicht mehr 
dein DCF und wird problemloser aufzubauen sein. Man könnte die 3.3V auch 
aus dem USB Regulator aus dem ATMega ziehen, und alles was geht mit 5V 
versorgen.
Aber der grösste Aufwand steckt in den LED-Treibern. Ja, du willst 
offenbar die Helligkeit an die Umgebungshelligkeit anpassen, aber das 
kann der uC problemlos in der er per PWM die Einschaltdauer einer zu 
100% per passendem Vorwiderstand mit Strom versorgten LED reduziert, der 
uC hat doch sonst nichts zu tun.
Theoretisch könnte deine Schaltung jede LED in anderen Helligkeiten 
versorgen, also eine Videoleinwand darstellen, dafür sind die ICs. Du 
willst aber nur einige wenige LEDs der 119 Stück aufleichzen lassen, und 
alle leuchtenden in derselben Helligkeit. Schliesslich kosten diese 
Chips Geld und nehmen viel Platinenplatz weg mit aufwändiger 
Verschaltung. Da tun es Schieberegister wie 74HCT595 problemlos, man 
braucht auch nur 1 Widerstand pro LED-Gruppe aus der nur eine LED zu 
einer Zeit an sein darf, also weniger Widerstände als deine 680 Ohm 
Teile. Oder man betreibt das Display im Multiplex. Wenn man dort die 
LEDs etwas geschickt anordnet, kommt man problemlos mit 8 x 16 Leitungen 
aus, und 4 74HCT595 (oder 2 595 und 8 I/O Pins vom uC).
Gast #1697605
Lesenswert?

Danke, das nenne ich mal konstruktive Kritik!

Werde mir einige Sachen zu Herzen nehmen, die LED-Treiber aber so lassen 
alleine der Spielereien wegen.
Laut Datenblatt der LED-Treiber ziehen die jeweils so 30mA(!). Fand ich 
ziemlich heftig, daher der Schaltregler für 3.3V. Ist der DCF-Empfang 
denn so störempfindlich? Hab ja das DCF-Modul extra weit weg gesetzt von 
allem; vielleicht noch einen Abblockkondensator direkt am Modul zw. 3.3V 
und GND?

Was den "Schnittstellenfriedhof" angeht: Klar kann man sich da was 
sparen, aber kosten tuts auch nichts.
#1702219
Lesenswert?

Ich hab da mal mit eagle rüber geguckt und würde mal wenigstens die 
angezeigten Fehler beseitigen. AREF wurde schon erwähnt. Ausserdem würde 
ich den isolate Wert erhöhen bzw. hast du zwischen den LED Zeilen so 
viel Platz, das du die Leiterbahnen nicht so quetschen musst. Check 
nochmals das Datenblatt. IMHO 16MHz erst ab 4,5V.
Gast #1702281
Lesenswert?

Hallo Jörg,

danke dass Du mal drüber geguckt hast!

> Ich hab da mal mit eagle rüber geguckt und würde mal wenigstens die
> angezeigten Fehler beseitigen.

Bei mir werden nur Warnungen gezeigt, kannst Du mir vielleicht die Liste 
kurz hier reinstellen?

> AREF wurde schon erwähnt.

Ja, aber brauch ich den nicht um die Photodiode auswerten zu können?

> Ausserdem würde ich den isolate Wert erhöhen bzw. hast du zwischen den LED 
Zeilen so viel Platz, das du die Leiterbahnen nicht so quetschen musst.

Hast Recht; hab jetzt Isolate auf 0.5 erhöht

> Check nochmals das Datenblatt. IMHO 16MHz erst ab 4,5V.

Ups, Falle. Ändere ich auf 8MHz
Gast #1702310
Lesenswert?

@Jörg: Hat sich erledigt. Fehler gefunden

@didadu: Da hast Du absolut recht, damit ist nicht zu spaßen. Die 
Anzeige der Tidenzeit ist in diesem Fall ein "Gag" für meinen Vater, der 
Fan einer bestimmten Insel ist. Die Uhr hängt aber bei uns zu Hause, 
gute 300km von der nächsten Küste entfernt. Da muss er sich schon sputen 
um noch rechtzeitig ertrinken zu können ;o)
Gast #1724831
Lesenswert?

Hallo,
ich habe ein paar Fragen zum TLC59116. Ich noch habe keine Erfahrung mit 
diesem Baustein:
Kann man den TLC auch nach der Diode reingeben, dh. gegen Masse 
schalten, da viele RGB Leds ja eine gemeinsame Anode haben und wie wäre 
es dann noch mit der Konstantstromquelle?

Blöde Frage, aber der TLC liefert bei jedem Ausgang den selben Strom, 
oder? da Rot 50mA Blau und Grün 25mA (bei meinen 
Leds(http://at.farnell.com/optek/ovsargb3r8/led-smd-plcc4-rgb/dp/1497980RL)) 
benötigen. Oder kann ich einfach alle auf 20mA einstellen?
Die Versorgungsspannung des TLC's kann ich (sofern ich das Datenblatt 
richtig verstanden habe) trotzdem auf 5V legen, oder?
Gast #1725189
Lesenswert?

Hallo Kurt,

Kurt schrieb:
> Hallo,
> ich habe ein paar Fragen zum TLC59116. Ich noch habe keine Erfahrung mit
> diesem Baustein:
> Kann man den TLC auch nach der Diode reingeben, dh. gegen Masse
> schalten, da viele RGB Leds ja eine gemeinsame Anode haben und wie wäre
> es dann noch mit der Konstantstromquelle?
Den solltest Du nur so und nicht anders beschalten.

> Blöde Frage, aber der TLC liefert bei jedem Ausgang den selben Strom,
> oder? da Rot 50mA Blau und Grün 25mA (bei meinen
> Leds(http://at.farnell.com/optek/ovsargb3r8/led-smd-plc...))
> benötigen. Oder kann ich einfach alle auf 20mA einstellen?
Ja der liefert an jedem Ausgang den gleichen maximal Strom. Du kannst 
aber auch mehrere Ausgänge parallel schalten um den Strom zu erhöhen.

> Die Versorgungsspannung des TLC's kann ich (sofern ich das Datenblatt
> richtig verstanden habe) trotzdem auf 5V legen, oder?
Ja.
Gast #1725210
Lesenswert?

Hallo Robert,
Danke für die schnelle Antwort.
Also muss ich RGB's nehmen die 6 Kontakte haben(für jede diode einen 
Anschluss) sonst wird der Strom, mit gemeinsamer Anode, für ein Led zu 
groß werden. Oder hast du eine Idee wie ich das lösen könnte?
Mein Ziel wäre es, dass ich alle 20 RGB leds einzeln ansteuern kann, 
also 60 Leds. PWM würde ich auch gerne vorsehen.
Gast #1725225
Lesenswert?

Hallo Kurt,

das kommt auf Deine Verschaltung an. Ich nehme jetzt mal an dass du für 
jede LED einen Ausgang am TLC59116 vorsehen möchtest. In diesem Fall 
kannst Du ruhig eine LED mit gemeinsamer Anode einsetzen, das macht 
keinen Unterschied.
Möchtest Du aber mehrere RGB-LEDs in Reihe hängen brauchst Du eine mit 
seperaten Anschlüssen.
PWM ist kein Problem, kann der Chip schon von sich aus, DU brauchst nur 
via I2C die entsprechenden Register einstellen.
Gast #1725271
Lesenswert?

Warum macht das keinen Unterschied? Wenn 1 RGB Led pro Ausgang an den 
TLC angeschlossen wird, brauch diesses ca. 60mA und leuchtet dann nur 
eines bekommt dieses die volle Ladung ab. Zudem kann ich dann die Farben 
nicht einzeln ansteuern. Wenn ich die Farben alle zusammenführe und mit 
Mosfets steuere, könnte ich alle Farben steuern, aber dann hätte ich 
immer noch das Problem mit dem zuvielen Strom.
Gast #1725286
Lesenswert?

Wenn Du die LED so verschaltest, dass 1) die gemeinsame Anode an 5V 
liegt und 2) die 3 Kathoden an jeweils einem Ausgang des Treibers kannst 
Du jede LED einzeln Ansteuern ohne weitere externe Beschaltung. Dann 
macht es keinen Unterschied ob Du eine gemeinsame Anode oder drei 
einzelne Anoden an 5V legst. Der Strom fliesst nur durch die LEDs deren 
Kathode dann durch das IC angesteuert wird.
Gast #1726746
Lesenswert?

Ich hätte noch ein paar Fragen zum TLC:
Entstörkondensatoren brauche ich nicht?
Bei REXT muss der Widerstand gegen Masse geschalten werden?
Bei SCL muss ich einen Takt anlegen der max 1MHz ist.
Brauche ich SDA wenn ich den I²C Bus verwende?
die RESETs kann ich alle auf einen PORT am µC zusammenfassen oder?

lg
#1726770
Lesenswert?

@  Kurt (Gast)

>Entstörkondensatoren brauche ich nicht?

Was meist du damit? Auf jeden Fall braucht der IC wie alle anderen 100nF 
DICHT an VCC/GND. Und ein 10..47uF für mehrere ICs ist meist auch nicht 
falsch.

>Bei REXT muss der Widerstand gegen Masse geschalten werden?

Ja.

>Bei SCL muss ich einen Takt anlegen der max 1MHz ist.

Das ist der Takt vom I2C-Bus.

>Brauche ich SDA wenn ich den I²C Bus verwende?

Was sonst? Das Ding kann nur per I2C gesteuert werden.

>die RESETs kann ich alle auf einen PORT am µC zusammenfassen oder?

Ja.

MfG
Falk
Gast #1745197
Lesenswert?

Hallo Bastelfreunde!

Bin zufällig in diese interessante Seite hineingerutscht.

Tidenuhr bauen finde ich als ein heisses Thema, wenngleich mit wenig 
Erfolgsaussichten. Geht doch mal in das Maritime Museum von Bremerhafen. 
Dort zeigt man eine - in Zeiten der DDR gebaute - Tidenuhr im 
Grössenausmass von ca 2 x 7 m², wo auf der Vorder- und Hinterseite 
jeweils an die 30 mechanische Rechenwerke angebracht sind (hab das nicht 
nachgezählt). Weiters bekommt man in diesem wunderbaren Museum 
verdeutlicht, dass noch eine Reihe anderer Faktoren - neben Mond und 
Erdrotation - für die exakte Berechnung ausschlaggebend sind. Wie z. B. 
der Wind und die Konstellation der Sterne.

Natürlich kann man im Zeitalter der Elektronik an einige Problemlösungen 
etwas einfacher herangehen. Für Hobbywissenschaftler aber keine einfache 
Aufgabe. Wünsche aufrichtigst viel erfolg.

Segelfreund 69 aus Neusiedl am See / Österreich
Gast #1748872
Lesenswert?

Hallo,
Ich weiß nicht genau wie ich den TLC ansteuern soll, habe im Moment aber 
auch keine Zeit um das herauszufinden(Prüfungen...). Aber meine Platine 
müsste ich diese Woche noch schnell machen( da ich über den Sommer nach 
Hause fahre, und dort kein Werkzeug habe). In den Sommerferien habe ich 
dann genug Zeit um mir den Bus des TLC's anzuschauen und zu 
Programmieren. Kann mir deshalb jemand bitte diesen Schaltplan 
kontrollieren ob ich den TLC richtig ansteuere?

Danke
lg
Angehängte Dateien:
#1750022
Lesenswert?

@Kurt (Gast)

>Ich weiß nicht genau wie ich den TLC ansteuern soll, habe im Moment aber
>auch keine Zeit um das herauszufinden(Prüfungen...). Aber meine Platine
>müsste ich diese Woche noch schnell machen( da ich über den Sommer nach
>Hause fahre, und dort kein Werkzeug habe).

Optimales Konzept . . .

>Programmieren. Kann mir deshalb jemand bitte diesen Schaltplan
>kontrollieren ob ich den TLC richtig ansteuere?

Da sind ein "paar" kleine Fehler drin.

Alle LEDs sind verpolt, ausserdem werden die gegen Vcc geschaltet.
Die Eingänge A0..A3 an den TLCs legt man auf festes Potential, nicht an 
den uC. Denn damit stellt man die I2C-Busadresse ein. Sinnvollerweie für 
jeden IC eine andere . . .
An SDA und SCL fehlen Pull-Up Widerstände, so 3K3 oder so.
AREF legt man nicht an 5V, sondern schleisst nur einen 100nF Kondensator 
gegen Masse an.
Dein Spannungsregler IC2 ist falsch angeschlossen.
C16 ist unsinnig.

Reicht das fürs Erste?

MFG
Falk
Gast #1750604
Lesenswert?

Super, danke für deine schnelle Hilfe,
so müsste es passen?
Die Leds habe ich so "scheußlich" verbunden, da ich mir mit dieser Weise 
viel arbeit im Board erspare. Ich würde diese Schaltung noch gerne, 
vorbeugend, mit einen externen Speicher versehen. Hat jemand einen Tipp 
welchen Speicher ich verwenden könnte? auch bezüglich Preis/Leistung?
Danke,
lg
Angehängte Dateien:
#1750905
Lesenswert?

Deine TLCs haben keine vollständige Masseanbindung.
Schon mal über deinen Spannungsregler nachgedacht? Wenn alle 64 LEDs a 
30mA an sind, zieht deine Schaltung ~2A. Dein 7805 muss (12-5)*2A = 14W 
Leistung verbraten. Ne Menge Holz. Da braucht man einen GROSSEN 
Kühlkörper. Und vom Wirkungsgrad mal ganz zu schweigen.

Mein Tip. Geh das Ganze mal bissel langsamer und ruhiger an, sonst 
ärgerst du dich nur über deinen Murks.

MFG
Falk
Gast #1750969
Lesenswert?

ups, ja das könnte stimmen. Ich habe den LM78S05 der hält das locker aus 
und ich habe nicht 12V sondern weniger. Dann geht das schon :)

Bezüglich Speicher habe ich keine Ahnung, würde gerne 1Mb flash 
vorsehen. Hab aber keine Ahnung davon, weder was kaufen noch wie 
anschließen. Werde heute mal nachforschen.
Danke
lg
#1751145
Lesenswert?

@  Kurt (Gast)

>3,3V sind kein Problem, aber ich finde online keine Beispielschaltungen
>für externen Flash,

Was wohl daran liegt, dass das so grundlegend ist, dass es als bekannt 
vorrausgesetzt wird. Lies mal was über SPI, das ist einfach.

> ich habe keine Ahnung wie ich den beschalte.

Tja, das nennt sich Lernkurve.

> Und SCK habe ich ja schon vergeben ????

Kann man a) doppelt nutzen und b) ggf. auf ein anderes Pin legen und das 
Ganze in Software bearbeiten. Siehe

AVR-Tutorial: Schieberegister

MfG
Falk
Gast #1751231
Lesenswert?

ja ok, habe ich gelsen, also ich schließe SI an MOSI/PB7, SO an 
MISO/PB5,
WP,CS und RDY/BUSY an beliebige Ports. Aber wie kann ich SCK gemeinsam 
Nutzen, ich habe ja einmal die TLC'S mit 1Mhz und dann den Flsah mit 
20Mhz oder soll ich den PORT OC2A verwenden? und könnte ich CS in diesem 
Fall auch auf high legen?
#1751283
Lesenswert?

@  Kurt (Gast)

>ja ok, habe ich gelsen, also ich schließe SI an MOSI/PB7, SO an
>MISO/PB5,
>WP,CS und RDY/BUSY an beliebige Ports.

OK.

>Aber wie kann ich SCK gemeinsam
>Nutzen, ich habe ja einmal die TLC'S mit 1Mhz und dann den Flsah mit
>20Mhz

[ ] Dir ist klar, dass I2C und SPI verschiedene Schnitstellen 
sind.

MfG
Falk
Persönliche Seite #1751329
Lesenswert?

Kurt schrieb:
> ups, ja das könnte stimmen. Ich habe den LM78S05 der hält das locker aus
> und ich habe nicht 12V sondern weniger. Dann geht das schon :)

Trotzdem gilt: Verlustleistung = (Uaus - Uein) * Strom. Egal was im 
Datenblatt des Chips steht. Und wenn die Verlustleistung grob geschätzt 
1Watt übersteigt (bei TO220) wirds dem ZIEMLICH heiß unter der Futt.
Gast #1751466
Lesenswert?

Ja das schon, würdest du den Flash auch so anschließen? und wo würdest 
du SCK anschließen.
der µC sendet ja Signale im Bereich von 5V, hält das der Flash aus?

@Simon: ja ok dann werde ich einen Kühlkörper hinzufügen.

Danke
lg
Gast #1752421
Lesenswert?

Hallo, der Flash hält bis zu 6V an den Eingängen aus, d.h. ich erspare 
mir den Pegelwandler. nur bei SO von 3,3 V-> 5 V bin ich mir nicht ganz 
sicher, weil im Datenblatt des Atmegas steht 0,7Vcc gilt als High, das 
sind 3,5V. Ich habe auch ein Test gemacht mit einem µC und der hat 3,3V 
als high erkannt. Ist es jetzt ratsam trotzdem einen Pegelwandler zu 
nehmen oder nicht?
lg
Gast #1774120
Lesenswert?

Hallo,
ich probier den Ledtreiber TLC59116 zu beschreiben, klapt aber nicht so
ganz mit dem I2C Bus:
Könnt Ihr mir bitte sagen was da nicht stimmt?
Mit dem Oszilloskop mess ich keinen Takt an SCL und auch nichts an SDA.

#include <avr/io.h>
#define F_CPU 20000000
#include <util/delay.h>
#define FAKTOR 12
#define TEILER 0

void init(unsigned char faktor, unsigned char teiler)
{
  TWBR = faktor;
  TWSR = teiler;
}

void i2c_start (unsigned char adress)
{
  TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
  loop_until_bit_is_set(TWCR,TWINT);
  TWDR = adress;
  TWCR = (1<<TWINT) | (TWEN);
  loop_until_bit_is_set(TWCR,TWINT);
}

void ack(void)
{
  TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN);
  loop_until_bit_is_set(TWCR,TWINT);
}

void nack(void)
{
  TWCR = (1<<TWINT) | (1<<TWEN);
  loop_until_bit_is_set(TWCR,TWINT);
}

void send (unsigned char daten)
{
  TWDR = daten;
  TWCR = (1<<TWINT) | (1<<TWEN);
  loop_until_bit_is_set(TWCR,TWINT);
}

void i2c_stop (void)
{
  TWCR = (1<<TWINT) | (1<<TWSTO) | (1<<TWEN);
}

int main(void)

{
  init(FAKTOR, TEILER);
  i2c_start(0b11000110);
  ack();
  send(0b10010100);
  nack();
  i2c_stop();

  while(1)
  {

  }
  return 0;

}


lg Kurt

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren