-         
+ Antworten
Ergebnis 1 bis 9 von 9

Thema: Warteschleifen bei ATMEL

  1. #1

    Warteschleifen bei ATMEL

    Hallo,
    ich habe ein folgendes Problem. Ich soll bei der Verwendung des 1-Wire-Protokolls 0.25us warten Ist das möglich?

    Ich verwende ein AT90S8515 getaktet mit 3.96 MHz.
    Meiner Meinung nach braucht die Ausführung eines Befehles mehr als
    0.25us. Oder irre ich ich doch?

    Wenn es dennoch eine Möglichkeit besteht, wo finde ich ein Beispielcode
    falls ein existiert?

    MFG

    monoton

    P.S. Bitte seid freundlich...

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.03.2004
    Ort
    Paderborn
    Alter
    32
    Beiträge
    614
    Ein Takt dauert bei 3,96MHz 0,25252525(geht kein Periodenzeichen im Forum?)µS.
    Ein NOP dauert also minimal(1,01010101%) zu lang.
    Keine Ahnung, ob das in der Toleranz liegt.
    Es gibt aber auch Quarze(und Oszillatoren) mit genau 4MHz. Damit würde es genau passen.
    it works best if you plug it (aus leidvoller Erfahrung)

  3. #3

    Re: Warteschleifen bei ATMEL

    Zitat Zitat von monoton
    Hallo,
    ich habe ein folgendes Problem. Ich soll bei der Verwendung des 1-Wire-Protokolls 0.25us warten Ist das möglich?
    Sollst Du genau 0.25us oder mindestens 0.25us warten?

    robs

  4. #4
    Hallo,
    ich soll genau Timings von 0.25us erstellen.
    In meinem C-Programm werden dann unterschiedliche Wartezeiten erstellt. Dieses ist vorgeschrieben um eine Kommunikation zu einem 1-Wire Slave herzustellen. Ich habe auch noch mal nachgelesen bei MAXIM Application Note 148, Guidlines for Reliable1-Wire Networks, dass die richtige Kommunikation besonders von dem richtigen Timing des Abtastens abhängig ist.
    Da ich ein STK500 habe bin ich erstmals nur auf den 3,96MHz gelaufen. Jetzt werde ich mir noch einen externen Quarz 8MHz besorgen und das gleiche noch einmal ausprobieren. Ich überlege auch, ob ich nicht einen schnelleren MC kaufen sollte. Das wird sonst in meiner Anwerdung ein bisschen kritisch mit dem 1-Wire protokoll.

    Wie hast du das Timing berechnet?
    Ich brauche die Berechnung für 8MHz...
    Hast Du angenommen, dass der MC mit 8MIPS läuft?

    Ich muß nämlich eine Funktion schreiben, die genau in us warten kann.
    Wie kann ich berechnen, wie lange die _delay_loop_2() oder _delay_loop_1() wartet?

    Vielen Dank

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.03.2004
    Ort
    Paderborn
    Alter
    32
    Beiträge
    614
    Wie lange die Loops von GCC warten, steht in der delay.h als Kommentar drin.
    delay_loop_2 wartet 4 Takte
    Bei 8MHz also 0,5 Takte (multipliziert mit dem Parameter, den du angibst)

    Zum Berechnen des Timings:
    Ein Takt dauert 1/Frequenz(Hz) Sekunden.
    In der ApplicationNote zum Assembler steht drin, wie lange die einzelnen Befehle dauern(NOP dauert genau einen Takt und macht nichts).
    it works best if you plug it (aus leidvoller Erfahrung)

  6. #6
    Hallo,
    vielen Dank. Ich muß mir also doch einen neuen Quarz kaufen.

    Bei delay_loop_2 meinst Du sicherlich 0.5us und nicht Takte...

    Du hast mir wirklich sehr geholfen.

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.03.2004
    Ort
    Paderborn
    Alter
    32
    Beiträge
    614
    Bei delay_loop_2 meinst Du sicherlich 0.5us und nicht Takte...
    richtig, da hab' ich mich vertan.
    it works best if you plug it (aus leidvoller Erfahrung)

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    14.07.2004
    Alter
    26
    Beiträge
    37
    *altenThreadherauskram*
    bei mir will der Kompiler einen Parameter für den Befehl _delay_loop_2 (?)
    Welchen???

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.03.2004
    Ort
    Paderborn
    Alter
    32
    Beiträge
    614
    Der Parameter ist der Faktor, mit dem die Wartezeit multipliziert wird(die Zeiten oben sind immer für _delay_loop_2(1). ).
    it works best if you plug it (aus leidvoller Erfahrung)

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •