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


von Markus P. (sebastianwurst)


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

von Markus P. (sebastianwurst)


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();

von Lehrmann M. (ubimbo)


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

von Markus P. (sebastianwurst)


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

von Frank L. (franklink)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.