mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Clock Schätzung


Autor: Harald (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe folgendes Problem. Ich wollte gerade eine serielle
Schnittstelle für meinen AVR basteln. Leider haut die Verbindung nicht
so hin wie ich wollte. Eventuell liegt es daran dass ich keine
wirklichen 4MHZ habe wie ich glaube. Beim Ausführen von folgendem
Programm
        long counter;

-> mit long sind wahrscheinlich mehr assemblerbefehle nötig da wir ja
auf einem 8-bit rechner arbeiten
/->
  while (1) {
      if (counter == 100000)
          PORTB ^= _BV(PB1);

      if (counter == 200000) {
          PORTB ^= _BV(PB1);
          counter = 0;
      }
      counter ++;


    }

blinkt die LED an PB1 mit einem Intervall von ca. gut 1 sekunde. Leider
habe ich keinen Dissasembler und auch keine Lust mir den genauen
Assemblercode anzusehen um den Aufwand abzuschätzen. Aber prinzipiell
müssten es weniger als 4 000 000 / 100 000 = 40 sein.

Kann mir jemand sagen wie ich zu einer genauen Aussage bezüglich
Systemtakt komme ? Ich habe leider kein Oszilloskop.

mfG harald

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit dem obigen Code kannst Du garnichts schätzen, weil Du nicht weißt,
welchen Code (wieviele Befehle) Dein Compiler daraus macht. Die einzige
Möglichkeit besteht darin, einen Timer zu benutzen. Der wird unabhängig
von der evtl. Anzahl der Befehle immer zur gleichen Zeit ausgelöst
(abgesehen von kleinen Abweichungung durch resetten des Timers, sofern
kein ctc benutzt wird).
Abhängig vom Controller kann es auch sein, daß Du den internen
Oszillator abschalten mußt.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"auch keine Lust mir den genauen Assemblercode anzusehen um den Aufwand
abzuschätzen"


Warum sollte dann ein anderer Lust dazu haben ???


Wenn Du genaue Zeiten haben willst, mußt Du Assembler nehmen oder
besser einen Timer.



Peter

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab ich das richtig verstanden? Du willst mit dem Programm feststellen,
wie schnell der Proz eigentlich läuft?? Aber wieviel Takte der Proz.
für die Schleife wirklich braucht, weist du nicht und bist auch zu
faul, das zu suchen? Hängt vom Compiler ab, selbst wenn hier einer so
blöd wäre, dir die Arbeit abzunehmen, könnte das deshalb keiner.Und
Ergebnis würde es auch nicht bringen, da eine serielle Verbindung schon
bei einem Fehler von ca. 4% aus dem Tritt kommt.
Programmier dir einen Timer mit z.B. 1min, dann kannst du mit einer Uhr
einen Fehler erkennen.

Autor: Harald (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe eigentlich gehofft, dass jemand der sich besser auskennt eine
ungefähre Abschätzung machen kann ob der 4MHZ Takt hinkommt oder nicht.
Ich glaube falls ein interne Frequenzgenerierung aktiv ist wäre diese
auf 1MHZ gesetzt ( jedenfalls habe ich das vor Kurzem gelesen. ) Ich
habe von keinem erwartet sich den Assemblercode anzuschauen.

mfG Harald

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Ich habe von keinem erwartet sich den Assemblercode anzuschauen"

Anders gehts aber nicht !
Man ist ja kein AVR.


Nur wenn Du einen Timer genommen hättest, hätte man mal die Reload- und
Vorteilerwerte in den Taschenrechner tippen können. Aber dann hättest
Du es ja auch selber tun können.


Peter

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.