Frage zur Porterweiterung von Frank Link

OP #2090419
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
OP #2090426
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();
#2090430
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
OP #2090440
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/Porterweiterungen#Porterweiterung_.C3.BCber_74HC595_.28Ausgang.29_3


> 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 !!!
#2090658
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren