Software I2C -> Frequenz ändern

Gast #5406989
Lesenswert?
• ▲
▼
;*********************************************************************** 
**
; delay half period
; For I2C in normal mode (100kHz), use T/2 > 5us
; For I2C in fast mode (400kHz),   use T/2 > 1.3us
;*********************************************************************** 
**
OP #5406993
Lesenswert?
• ▲
▼
Wolfgang schrieb:
> ;*********************************************************************** **
> ; delay half period
> ; For I2C in normal mode (100kHz), use T/2 > 5us
> ; For I2C in fast mode (400kHz),   use T/2 > 1.3us
> ;*********************************************************************** **

Sagt mir jetzt das ich was ändern muss bzw. Was anderes nutzen soll... 
Nur was genau?
Gast #5407003
Lesenswert?
• ▲
▼
Karl M. schrieb:
> zur Mathematik: f = 1/t <==> t = 1/f
>
> Damit kann man die Zeiten ausrechnen.

Wie meinen?

In i2c_delay_T2  in i2cmaster.S werden Taktzyklen des Prozessors 
verdaddelt. Wieviele das sein müssen, hängt von der uC-Taktfrequenz und 
von der erforderlichen Verzögerung ab.

Was willst du da mit f = 1/t?
OP #5407008
Lesenswert?
• ▲
▼
Wolfgang schrieb:
> Karl M. schrieb:
> zur Mathematik: f = 1/t <==> t = 1/f
> Damit kann man die Zeiten ausrechnen.
>
> Wie meinen?
>
> In i2c_delay_T2  in i2cmaster.S werden Taktzyklen des Prozessors
> verdaddelt. Wieviele das sein müssen, hängt von der uC-Taktfrequenz und
> von der erforderlichen Verzögerung ab.
> Was willst du da mit f = 1/t?

Meine CPU läuft auf 8MHz.
Gast #5407009
Lesenswert?
• ▲
▼
Jan H. schrieb:
> Wolfgang schrieb:
>> ;*********************************************************************** **
>> ; delay half period
>> ; For I2C in normal mode (100kHz), use T/2 > 5us
>> ; For I2C in fast mode (400kHz),   use T/2 > 1.3us
>> ;*********************************************************************** **
>
> Sagt mir jetzt das ich was ändern muss bzw. Was anderes nutzen soll...
> Nur was genau?
1
X MHz* 1.3 = T bspw. 8*1.3=ca.10T
2
                    ; 7T
3
2c_delay_T2:        ; 4 cycles ;stehen lasen
4
     nop nop nop; 3    ; <-fehlende nop's für 10T  
5
        ret         ; 3  ;stehen lassen  "

ist ein bisschen schwierig das anschaulich zu schreiben (und die rjmps 
um nop's speichersparend zu implementieren machen mMn den Code nicht 
lesbarer)

edit: codeformatierung .. und / mit * verwechselt
Gast #5407089
Lesenswert?
• ▲
▼
Peter D. schrieb:
> Gibt es diese Lib nicht auch in c?
dafür machst du besser einen eigenen Thread auf, wenn die Frage nur 
einfach "Frequenz ändern" ist

> Dann könnte man bequem mit _delay_us() die Zeiten einstellen.
das ist sicherlich bequemer als aufwendig eine Handvoll "nop" zu 
notieren, aber solche Bequemlichkeit kann schnell zu erlernter 
Hilflosigkeit führen und bei einem beängstigenden Aufwand von mehreren 
nop sogar die Kompetenz  ein Hilfegesuch eigenständig zu stellen 
gefährden.

> Für umständlichen Assembler besteht jedenfalls keinerlei Grund.
es gibt sicherlich Menschen die lieber umständliche Suchanfragen 
bevorzugen, anstatt einfach ein paar nop zu schreiben. Vielleicht 
überfordert die umständliche Multiplikation zweier Zahlen auch bequeme 
Nutzer, sodass sie eine Lib mit vormultiplizierten Zahlen erfragen.
Gast #5407226
Lesenswert?
• ▲
▼
Jan H. schrieb:
> Wenn ich das jetzt so einfüge kommt ein Fehler.

Schön, dann lies dir den Text der Fehlermeldung einfach mal durch oder 
poste ihn hier.

> Kann ich das etwa nicht direkt so einfügen?

Kannst du schon, wird aber zu einer Fehlermeldung führen.
Schreibe mal jedes nop in eine eigene Zeile, ggf. mit Kommentar 
dahinter ;-)
Die ";" leiten einen Kommentar ein

> Wie gesagt habe von Asembler keine Ahnung.
Ein paar elementare Grundlagen können nie schaden

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.