mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I²C Speicher


Autor: Manfred (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Ich habe mein Programm, mit dem ich vier externe 24C512 EEPROMS 
ansteuern möchte vervollständigt. Auf dem Oszilloskop kann ich auch das 
Clocksignal und ein fehlerhaftes Datensignal verfolgen. Ich kann dort 
lediglich die Start und die Stoppbedingung erkennen.
Ich würde mich darüber freuen wenn mal "fremde Augen" ein Blick auf mein 
Programm werfen würden. Habe dieses als PDF angefügt. Es wird ein 89S52 
verwendet, der über I²C Bus mit dem Speicher verbunden ist. In diesem 
Programm wird erst einmal lediglich auf EEPROM 4 zugegriffen!
Danke für Eure Hilfe im vorraus!

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was soll der Unsinn mit dem PDF ?

Quelltexte werden immer in ASCII gepostet !


Peter

Autor: norad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Manfred

Deine Sende Routine ist falsch!
Das Acknowledge bit musst Du nicht senden sondern nur abfragen!

mov B,#9b ????   sollte doch sicherlich mov B,#07h sein oder ?
willst ja nur 8 Datenbits übertragen nicht 155 ;)

Hier mal ein Codeschnipsel von mir.



;Sendet ein Datenbyte über den I²C-Bus
;Register.
;  se_buffer = Datenbyte
;  R3 = Zähler für 8 Durchläufe
;Akkuinhalt wird zerstört

I2C_WBYTE:
  PUSH PSW
  PUSH REG3
  MOV A,se_buffer
  For REG3 = #0 To #7
   RLC  A
   MOV  SDA,C
   NOP
   SETB SCL
   NOP
   CLR   SCL
  Next
  NOP
  SETB SDA            ;Setzen zum abfragen des ACK vom externen Baustein
  NOP
  SETB SCL            ;ACK übernehmen
  MOV  C,SDA
  If BIT C  Then      ;Wenn Carry Bit nicht gesetzt ist, Verbindung 
abbrechen
   SETB error      ;Fehlerbit setzen! (wird nicht verwendet im Moment)
   LCALL I2C_STOP
  End If
  NOP
  CLR SCL
  POP REG3
  POP PSW
RET

Gruß
norad

Autor: Manfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@norad
Ich bedanke mich für Deine Hilfe!
Werde es hoffentlich gleich noch testen können:-)
Und sorry an denen, die meine PDF stört!

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger wrote:
> Was soll der Unsinn mit dem PDF ?
>
> Quelltexte werden immer in ASCII gepostet !
>
>
> Peter

Na ja... ".pdf" ist doch immer noch besser als ".doc", oder?

Gruß,
Magnetus

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Magnus Müller wrote:

> Na ja... ".pdf" ist doch immer noch besser als ".doc", oder?

Nein, beides ist gleich schlecht.
Wie soll man denn dann syntax highlighting und Tests machen ?
Außerdem können durch die Umwandlung zusätzliche Fehler entstehen.


Was ist denn so schwer daran, genau das Source-File zu schicken, mit dem 
Du den Assembler/Compiler fütterst ?


Peter

Autor: manfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe die Änderungen eingesetzt. Kann jetzt Start und Stoppbedingung 
erkennen. Auch das Clocksignal ist gut. Ebenfalls das Ack. Aber die 
"Verfluchten" Daten bekomm ich einfach nicht auf das Signal!

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
manfred wrote:
> Aber die
> "Verfluchten" Daten bekomm ich einfach nicht auf das Signal!

Wenn Du nicht den geänderten assemblierbaren Code reinstellst, mußt Du 
den Fehler selber suchen.

Das Ausweinen hier nützt höchstens Deiner Psyche.


Peter

Autor: manfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was soll ich denn posten?
Arbeite mit dem Jens File Editor.
Da gibt es einmal die sogenannte .asm Datei und die .lst.
Wie möchtest du den Code denn haben? Ich dachte eigentlich als ich die 
Frage stellte, stell die lieber als PDF rein, das kann jeder öffnen!

Autor: norad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Manfred!

 Ich geh mal davon aus das Du auch, das "große 51er Anwenderhanbuch" 
hast.
Kapitel 17 wird beschrieben wie es geht.

So wie ich es sehe hast Du die Adresse nicht richtig eingestellt in "".
Vollständige Adresse müsste in der Form stehen:

S|1|0|1|0|A1|A2|B|R/W|ACK

S     Startbedingung
1010b Feste Adresse des EEPROM
A1/A0 Individuelle Adresse
B     Blockselect
R/W   Read/Write Modus
ACK   Acknowlege - Bit

In dem Büchelein steht auch drin, dass es einen Multibyte- und Page -
Mode gibt.

Hardwarebeschaltung muss man auch beachten z.b Schreibschutz PRE 
Anschluss.

Wie es mit deinem Chip aussieht  musst Du halt mal Gucken.


Schreibaequenz im Byte-Modus:
Startbedingung -> Slave Adresse mit R/W senden --> ACK vom Slave 
abfragen
--> Byte Adresse senden-> ACK abfragen--> Daten zum EEPROM senden
--> ACK vom Slave abfragen --> Stopp bedingung senden

Also denn ganzen klateratatsch pro Byte.

Multi-mode:
Start bedingung -> Slave Adresse mit R/W -> Ack abfragen -> Byte Adresse
-> ACK abfragen -> 1 Byte senden -> ACK abfragen -> 2 Byte usw.
zum schluss ACK abfragen und Stop bedingung senden.

Gruß
norad

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
manfred wrote:
> Was soll ich denn posten?
> Arbeite mit dem Jens File Editor.

Du verblüffst mich.

Wie kann man denn ein File öffnen, dort seinen Text eintippen, es 
abspeichern und übersetzen ohne zu wissen, wie es heißt ?

Wie findest Du denn dann ein altes Sourcefile wieder ?

Wie sicherst Du es ?

Schreiben sich die Programme bei Dir alleine oder mußt Du sie auch 
eintippen ?

Dann muß doch in der Editorstatuszeile stehen, wie das File heißt.
Spätestens beim Sichern muß Name + Erweiterung dastehen.


> Da gibt es einmal die sogenannte .asm Datei und die .lst.

Das, was Du selber getippt hast.


> Wie möchtest du den Code denn haben? Ich dachte eigentlich als ich die
> Frage stellte, stell die lieber als PDF rein, das kann jeder öffnen!

Nun dann versuch mal ein PDF im Editor zu öffnen und zu assemblieren, 
der Assembler wird Dir was husten.


Peter


P.S.:
Spourcen sind immer reine Textfiles (pure ASCII).
Sie lassen sich ausnahmslos mit jedem Editor lesen (Notepad usw.)
Sie lassen sich auch ganz ohne Editor lesen:

type test.asm

Autor: norad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter

Ich denke Du bist zu streng mit ihm.

Schliesslich kann man ja im PDF Text Markieren und Kopieren und dann in 
einem Texteditor abspeichern.

Manchmal bist Du schon kleinlich. Sorry nicht böse sein Peter.

Gruß
norad

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@norad

>Ich denke Du bist zu streng mit ihm.

Das denke ich nicht.

>Schliesslich kann man ja im PDF Text Markieren und Kopieren und dann in
>einem Texteditor abspeichern.

Warum kann man nicht einfach den Quelltext anhängen und gut? Den 
PDF-Konverter starten ist Zusatzaufwand, der zudem massiv 
kontraproduktiv ist.

>Manchmal bist Du schon kleinlich. Sorry nicht böse sein Peter.

Hat nix mit Kleinlichkeit zu tun, sondern das sind Grundlagen. Und wenn 
kleine Kinder Mist machen, dann müssen die Eltern halt mal streng sein 
un ne Ansage machen.
Sinngemäss ist es auch hier so.

MfG
Falk

Autor: Mullemaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Hat nix mit Kleinlichkeit zu tun, sondern das sind Grundlagen. Und wenn
kleine Kinder Mist machen, dann müssen die Eltern halt mal streng sein
un ne Ansage machen. Sinngemäss ist es auch hier so."

Auf keinen Fall!!!!

Du bist nicht unser Vater, und auch nicht unser Lehrer. Es kann jeder 
machen wie er will und wenn es dir nicht passt, kannst du dir ja einen 
anderen Wirkungskreis suchen.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wollte nicht streng sein und jeder kann machen, was er will.


Ich wollte nur ausdrücken, daß es mir völlig unverständlich ist, wie man 
eine Programmdatei erstellen kann, ohne zu wissen, wie sie heißt.

Ich halte sowas schlichtweg für unmöglich.

Ich bitte daher um Meldungen, wer programmiert und auch nicht weiß, 
welchen Namen die selbst eingetippte Datei hat.


Ich denke, Manfred veräppelt uns nur, daher der etwas sarkastische 
Tonfall.


Peter

Autor: Manfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also wenn´s sonst keine Probleme gibt. ich kann alles markieren kopieren 
einfügen!
Verstehe nicht wie man aus sowas so eine Diskussion starten kann!
Gut das jede Kindheit anders ist!

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Manfred wrote:
> Also wenn´s sonst keine Probleme gibt. ich kann alles markieren kopieren
> einfügen!

Nein zum Donnerwetter.

Sorry, aber das ist zuviel für mich.


Peter

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Mullemaus

>Auf keinen Fall!!!!

>Du bist nicht unser Vater, und auch nicht unser Lehrer.

Sicher nicht, aber . . .

>Es kann jeder machen wie er will und wenn es dir nicht passt, kannst du dir ja 
einen
>anderen Wirkungskreis

Diese Schlussfolgerung ist wohl ein klein wenig zu einfach.
Das Problem is gesamtgesellschaftlich. Wenn sich eine grössere Menge 
Leute auf begrenztem Raum vertragen will, braucht diese Gesellschaft ein 
paar Grundreglen für Verhalten und Kommunikation. Und auch wenn es 
bisweilen als politisch korrekt gilt, jeden Mist als persönliche 
Freiheit durchgehen zu lassen und mit anti-autoritären Ökogelaber jeden 
Deppen zum wertvollen Mitglied der Gesellschaft zu erklären, Mist bleibt 
Mist. Und wenn einige Leute lernresistent, und dann vielleicht auch noch 
bockig sind (kommt bei kleinen Kindern nicht selten vor ;-) dann hoffe 
ich auch, dass sie für die Konsequenzen ihrer Freiheit/Unfähigkeit 
gerade stehen. Spätestens dann, wenn ihr Chef ihnen die Tür weist, weil 
mit solchen Leuten kein Blumentopf zu gewinnen ist. Aber dann wird 
gaaaaanz schnell wieder rumgeschrien und gejammert von wegen 
Diskriminierung etc.

MfG
Falk

P.S. Niemand wird hier zu irgendwas gezwungen. Aber dennoch deutlich auf 
Fehler hingewiesen! Aber wie es scheint wird das in dieser 
weichgespülten Gesellschaft schon als Mordanschlag gewertet. Die 
Kritikfähigkeit lässt zu wünschen übrig.

P.P.S Es steht jedem gut zu Gesicht einfach mal zu sagen. "OK, ich hab 
einen Fehler gemacht, ich werde das ändern.". Das ist keine Schande, im 
Gegenteil!  Aber nein, jeder Mist muss mit tausend dummen und faulen 
Ausreden verteidigt werden.

Autor: Mullemaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Falk

LOL ich finde es klasse. Du setzt dich stärker für Grundregeln und 
Verhaltensweisen in diesem Forum ein, als der Moderator selbst. Ich 
würde mal darüber nachdenken, ob das angemessen ist. Du bist hier 
genauso Gast bzw. Teilnehmer wie jeder andere auch. Und zu maßregeln in 
dem Umfang, wie du es hier machst, steht dir nicht zu. Mir natürlich 
auch nicht, aber ich mache das ja auch nur bezogen auf deine Person. Du 
hingegen machst es in jedem Thread, an dem du dich beteiligst.

Du verlangst von anderen, dass sie mal einen Fehler zugeben sollen. Wie 
wärst, wenn du mit gutem Beispiel vorangehst und einfach mal einen Gang 
zurückschaltest? Du mußt dich auch mal in die Situation von neuen 
Teilnehmern hier im Forum versetzen. Die bekommen sofort den Eindruck, 
als wenn du das Sagen hier hättest bzw. du der Moderator bist.

So jetzt muß ich aber an die Arbeit. Mein Blackfin wartet...

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
ich finde grundsätzliches ist nun genug gepostet worden -ASCII oder 
nicht!

Ich habe da noch eine technische Frage.

Ich mochte zum Daten Loggen ein externes EPROM über I2C an einen Mega8 
anhängen (Taktfrequenz 8Mhz).
Ziel ist es fünf 16bit Werte zu schreiben.
Ist das mit einer Frequenz von 10Hz möglich? Wie schnell laufen eure I2C 
EPROM Übertragungen?

Im Augenblick habe ich noch nicht mit der Routine zum Datenschreiben 
begonnen, das steht jetzt als nächstes an.
Daher die Frage ob dieser Weg prinzipiell der richtige ist.


Gruß
Stefan

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Stefan

>Ich mochte zum Daten Loggen ein externes EPROM über I2C an einen Mega8
>anhängen (Taktfrequenz 8Mhz).
>Ziel ist es fünf 16bit Werte zu schreiben.

Die kannst du auch im interen EEPROM speichern.

>Ist das mit einer Frequenz von 10Hz möglich? Wie schnell laufen eure I2C

Kein Problem. Die meisten machen 100 kHz und mehr Busfreqeunz mit.

MFG
Falk

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja intern geht das schon, aber Speicher ist nicht gross genug!
Wenn ich 5min Aufzeichnen will sind das 3000 Zyklen a 5 Werte*2Byte = 
30k

Habe aber nur 512k EPROM intern, oder ?

Intern wäre natürlich am elegentesten - anderer µC ?

Autor: Jörg B. (manos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also EPROM wirst Du sowieso nicht schreiben können in der Schaltung - 
bestenfalls EEPROM. Die größten AVR's haben max. 4 KByte EEPROM. 
Theoretisch gibt es aber auch noch die Möglichkeit, den nicht durch das 
Programm genutzten Speicherplatz im Flash zu füllen. Damit stände Dir 
dann je nach Modell genug Speicher zur Verfügung. Ist nur komplizierter 
anzusprechen soweit ich in Erinnerung habe.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Stefan

>Ja intern geht das schon, aber Speicher ist nicht gross genug!
>Wenn ich 5min Aufzeichnen will sind das 3000 Zyklen a 5 Werte*2Byte =
>30k

OK, dann geht nur extern.

>Habe aber nur 512k EPROM intern, oder ?

Nein, 512 BYTE (ohne k) ;-)
Und es ist EEPROM (kleiner aber wichtiger Unterschied)

>Intern wäre natürlich am elegentesten - anderer µC ?

Nein, externer EEPROM ist schon OK.

MFG
Falk

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke euch allen erst mal,

lets go for EEPROM extern !

Melde mich sicher wieder wenn ich konkreter bin.

Gruß
Stefan (ohne "k")

PS: Für eine Empfehlung welches EEPROM geeignet ist, wäre ich noch 
dankbar.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Z.B. der hier bei Reichelt

ST 24C256 BN6   1,20

MFG
Falk

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.