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!
@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
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
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
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!
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
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!
@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
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
@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
@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
"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.
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
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!
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
@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.
@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...
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
@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
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 ?
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.
@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
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.