Leonardo Pro Micro mit OLED

OP #5084718
Lesenswert?

Kleines Problem mit Leonardo Pro Micro:

ein Programm das auf dem Arduino Uno problemlos läuft, funktioniert auf 
dem Leonardo Pro Micro nicht, bzw keine Anzeige.

An pin 2 (SDA) und pin 3 (SCL) kann ich mit dem Oszi Signale sehen.

Muss hier evtl die Library angepasst werden?

Vertraegt das Display kurzfristig 5 Volt vom Leonardo bzw kann man zwei 
Dioden dazwischenhaengen?

Im Anhang noch ein Bild, bei Bedarf kann ich natürlich den Code posten.
Angehängte Dateien:
Gast #5084732
Lesenswert?

Bernhard F. schrieb:
> ein Programm das auf dem Arduino Uno problemlos läuft, funktioniert auf
> dem Leonardo Pro Micro nicht, bzw keine Anzeige.

Auf dem Pro Micro sitzt ein ganz anderer Prozessor, als auf dem Uno.

Vielleicht liegt es an deinem Programm. Hast du da schon mal geguckt? 
Ohne Schaltplan und Programm zu kennen, ist es schwierig, etwas zur 
Lösung deines Problems beizutragen.
Gast #5084755
Lesenswert?

Bernhard F. schrieb:
> warum am Arduino
> Uno auch ohne ??

Manche Arduinos haben sie schon onBoard.
Die großen ja, die kleinen eher nicht.

Einfach mal den Schaltplan untersuchen, das bringt die erhoffte 
Klarheit.


Grundsätzlich:
Wenn I2C, dann ein Auge auf die Pullup.
Grundsätzlich.
Sonst Sorgen.
Und das, das wollen wir doch alle nicht.
#5084818
Lesenswert?

Arduino F. schrieb:
> Harry L. schrieb:
>> Weil das bei bidirectionalen Ports nicht so einfach geht, und die
>> internen PullUp für I²C ohnehin zu hoch-ohmimig sind.
>
> Doch, werden schon aktiviert!
> Aber ja, alleine reichen sie nicht/selten.

Das hast du wohl nicht ganz durchdacht.
Wenn du das machst, musst du deinen Pin-Zustand invertiert über das 
DDR-Register schreiben.
PORTx[0..7] muß ja High bleiben - wegen dem PullUp.
Mit DDRx[0..7] schaltest du dann die output-Stufe ein, und das darfst du 
nur bei Low-Pegel.

Kannste zwar so machen, aber dann isses eben Kacke....
Gast #5084829
Lesenswert?

Harry L. schrieb:
> Das hast du wohl nicht ganz durchdacht.
> Wenn du das machst, musst du deinen Pin-Zustand invertiert über das
> DDR-Register schreiben.
> PORTx[0..7] muß ja High bleiben - wegen dem PullUp.
> Mit DDRx[0..7] schaltest du dann die output-Stufe ein, und das darfst du
> nur bei Low-Pegel.
>
> Kannste zwar so machen, aber dann isses eben Kacke....

Arduino machts per Hardware I2C und die tut das schon richtig.
Da muss man nicht selber am DDRX und PORTX rum wackeln.

Du bist im Soft I2C Film

> Das macht die Wire Lib.
Ist also nicht ganz richtig.
Die von der Lib genutzte Hardware tut es.
Gast #5085082
Lesenswert?

Arduino F. schrieb:
> Spezifikation lesen und selber denken!
> Ich bin doch nicht deine Denkprotese....

Den Schuh zieh´ ich mir nicht an, weil

Bernhard F. schrieb:
> An pin 2 (SDA) und pin 3 (SCL) kann ich mit dem Oszi Signale sehen.

Im Gegensatz zu Euch beiden konnten wir Zuschauer
die Signale vorher nicht sehen.

Bernhard F. schrieb:
> Wieder einmal vielen Dank ins Forum.

Hollywood

LG
old.
Gast #5085139
Lesenswert?

CO2 ist ihm N. schrieb:
> Im Gegensatz zu Euch beiden konnten wir Zuschauer
> die Signale vorher nicht sehen.


Was denkst du dir eigentlich...
Schau mal auf das Datum der PDF Bilder....

Mannno...

Du machst hier im Thread die Welle, obwohl du ganz offensichtlich keine 
Ahnung von I2C hast.
Kommt dir das nicht selber etwas komisch vor?
#5085482
Lesenswert?

Also da kommt man dann an den Punkt wo man sieht das Arduino ja doch 
etwas... Naja... ist.

Bei einem Hardware I2C, wenn man diesen benutzt, benötigt man keine 
externen Pull-Up. Das erledigt die Hardware schon selbst. Der Leonardo 
nutzt ja einen Atmega32u4, richtig?

Und wenn man nur einmal, nur EINMAL, in das Datenblatt schauen würde von 
dem MC den man da gerne Programmieren würde wollen, würde man sehen das 
der Atmega32u4 gar kein HW-I2C hat / kann. SPI ja, I2C nein.

Da sind dann wieder die Probleme: "Hardware nutzen und verstehen - 
Level: Arduino!"
#5085490
Lesenswert?

Rene K. schrieb:
> Bei einem Hardware I2C, wenn man diesen benutzt, benötigt man keine
> externen Pull-Up. Das erledigt die Hardware schon selbst

wie verträgt sich das mit OC bei I2C?

Wie soll das denn die Hardware ohne externe pullups machen wenn I2C per 
Definition OC sein soll?

abgesehen davon hat ein Arduino i.d.R. keine OC Ausgänge, das sind push 
pull CMOS oder wir reden von was völlig anderes.

Meine Arduinos kennen ja noch nicht mal clock stretching
Gast #5085495
Lesenswert?

Rene K. schrieb:
> Und wenn man nur einmal, nur EINMAL, in das Datenblatt schauen würde von
> dem MC den man da gerne Programmieren würde wollen, würde man sehen das
> der Atmega32u4 gar kein HW-I2C hat / kann. SPI ja, I2C nein.

Leider weiß nicht jeder, dass I2C bei Atmel TWI genannt wird.
Damit würde man das dann auch im Datenblatt finden.

Rene K. schrieb:
> Da sind dann wieder die Probleme: "Hardware nutzen und verstehen -
> Level: Arduino!"
Ach, es gibt noch viel mehr Leute, welche kein Datenblatt lesen können.
Gast #5085892
Lesenswert?

Joachim B. schrieb:
> Meine Arduinos kennen ja noch nicht mal clock stretching

Stimmt das?

Meine Messungen sagen, dass ein AVR Slave bei einem R Zugriff etwas Zeit 
braucht um die Daten zusammen zu klauben. Und dazu muss der Slave den 
Takt ziehen.

Ebenso muss der AVR Master das korrekt abhandeln, also das Stretching 
"erdulden".
Und, das tut er auch.
Irgendwelche Timeouts habe ich im Arduino Master Code bisher nicht 
gefunden.
Kann also durchaus sein, dass der Slave den Takt bis Weihnachten ziehen 
darf.

Stretching an Bytegrenzen ist also völlig ok.
Das habe ich geprüft.

Wie es mit dem Stretching zwischen einzelnen Bits aussieht, weiß ich 
nicht.
Beitrag #5086581 wurde von einem Moderator gelöscht.

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