www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zur Porterweiterung von Frank Link


Autor: Markus P. (sebastianwurst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich hoffe der Thread ist noch nicht zu alt. Habe aber auch nur eine 
grundlegende Frage.

Erstmal danke für die gute Porterweiterung.

Meine Frage ist, dass void com74hc595_out() muss immer dann aufgerufen 
werden wenn ich irgendetwas im Port ändern will. Ausgang True, False 
etc.
Was hat es für ein Nachteil wenn ich diesen Output zyklisch am Ende 
meines Programmes mache, also nicht immer, wie du im Beispiel, hinter 
jeder Aktion. Kann dabei der 74HC595 kaputt gehen wenn er das schieben 
zu oft macht?

Dein Beispiel

        for ( int i = 0; i < com74hc595_BYTES; i++ )
  {
      com74hc595_setBit( i );
----->      com74hc595_out();
            _delay_ms( 2000 );

      com74hc595_unsetBit( i );
------>      com74hc595_out();
            _delay_ms( 2000 );
  }

Vielen Dank

Autor: Markus P. (sebastianwurst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bischen doofes Beispiel merke ich gerad...

Also:
Soetwas:
   if(Taste_plus)
      {
              AusgangSetBit(0);
    AusgangOut();
      }
  else if ( Taste_rechts )
    {
              AusgangUnsetBit(0);
    AusgangOut();
      }

Könnte mann ja auch so schreiben:


   if(Taste_plus)
      {
              AusgangSetBit(0);
      }
  else if ( Taste_rechts )
    {
              AusgangUnsetBit(0);
      }

  AusgangOut();

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus P. schrieb:
> Meine Frage ist, dass void com74hc595_out() muss immer dann aufgerufen
> werden wenn ich irgendetwas im Port ändern will.

Ja und Nein 'void com74hc595_out()' ruft man nicht auf nur 
'com74hc595_out()'. Ansonsten ja.

Markus P. schrieb:
> Was hat es für ein Nachteil wenn ich diesen Output zyklisch am Ende
> meines Programmes mache, also nicht immer, wie du im Beispiel, hinter
> jeder Aktion. Kann dabei der 74HC595 kaputt gehen wenn er das schieben
> zu oft macht?

Kaputt gehen kann da nichts. Es kann die Funktion des Programms 
beeinträchtigen - dazu müsste man allerdings genaueres (Link, etc) zu 
den erwähnten Funktionen haben.
An deinem Wissen gemessen möchte ich mir aber die Einschätzung erlauben, 
dass der Autor dieser Funktionen wohl mehr Erfahrung als du hast. Ich 
empfehle dir das AVR Tutorial. 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

Autor: Markus P. (sebastianwurst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ja und Nein 'void com74hc595_out()' ruft man nicht auf nur
> 'com74hc595_out()'. Ansonsten ja.

Schreibfehler, sorry


Ich weiss auch nicht warum ich den link vergessen habe...:

http://www.mikrocontroller.net/articles/Porterweit...


> Kaputt gehen kann da nichts. Es kann die Funktion des Programms
> beeinträchtigen - dazu müsste man allerdings genaueres (Link, etc) zu
> den erwähnten Funktionen haben.

Ja das ist klar er geht nach jedem Zyklus in die Funktion, frißt dann 
unnütz Zykluszeit. Das ist dann aber auch der einzige Nachteil oder?

> An deinem Wissen gemessen möchte ich mir aber die Einschätzung erlauben,
> dass der Autor dieser Funktionen wohl mehr Erfahrung als du hast.

Du hast Recht !!!

Autor: Frank Link (franklink)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Markus,
habe erst gerde Deine Frage gesehen.

Markus P. schrieb:
> Meine Frage ist, dass void com74hc595_out() muss immer dann aufgerufen
> werden wenn ich irgendetwas im Port ändern will. Ausgang True, False
> etc.

Korrekt

> Was hat es für ein Nachteil wenn ich diesen Output zyklisch am Ende
> meines Programmes mache, also nicht immer, wie du im Beispiel, hinter
> jeder Aktion. Kann dabei der 74HC595 kaputt gehen wenn er das schieben
> zu oft macht?

Keinen Nachteil, in meinem Beispiel wird ein Lauflicht abgebildet.

Grundsätzlich ist es egal, ob Du jeweils nur ein Bit änderst und das an 
den Baustein übergibst oder ob Du eine Reihe von Bits änderst und das an 
den Baustein übergibst. Es ist letztlich die Frage der Aktion die Du 
durchführen willst.

Gruß
Frank

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.