Schieberegister-Library

Gast #3457400
Hallo, Leute!

Ich habe söben mal eine kleine Schieberegister-Library geschrieben, die 
auf dem ATmega32 mit 32MHz läuft. Als IC wird der 74hc595 verwendet und 
über diesen werden 8 Leds als Lauflicht betrieben.
Bei Fragen oder anregungen stehe ich gerne zur Verfügung.

MFG, DjElko!

PS: Frohe Weihnachten!
Gast #3457419
In meiner Online-Hilfe für Windows Vista steht folgendes:
1
Zum Extrahieren von Dateien aus einer komprimierten
2
RAR-Datei muss ein spezielles Programm für RAR-Dateien
3
verwendet werden.
4

5
Als Alternative zu RAR-Dateien können ZIP-Dateien
6
verwendet werden, die von Windows komprimiert und
7
dekomprimiert werden können.

Mahlzeit!
#3457458
Frohe Weihnachten,

das stört mich an Deiner Lib :
1
#include "shift.c"

Ich hätte da lieber sowas stehen :
1
#include "shift.h"

Leider überschreibt mir Deine Lib auch meine Port Settings.
Denn die anderen Pins von PORTC benutzte ich doch auch noch !

Vielleicht sollte man in shift_init() besser verodern bzw ausmaskieren.

Auch kann ich von ausserhalb die Port Konfig. nicht verändern.

Wieso sollen nicht noch andere Teilnehmer am SPI Bus seperat ansprechbar 
sein sollen ?

Vielleicht sollte man das ganze auch in die CodeSammlung verschieben ?

Grüssle

  Thomas
Gast #3457469
DjElko schrieb:

> Ich hoffe das hilft dir weiter

Es ist ja für die Allgemeinheit besser, die eher ZIP kennt. Deshalb 
meine Anmerkung. Einen ATmega habe ich nicht, aber wollte ja wenigstens 
mal einen Blick in den Code werfen. Wenn schon, dann müßte ich diesen 
auf PIC oder 8051 oder auch 8048 umportieren.

Frohe Weihnachten, und frohes Basteln!
#3457472
Thomas W. schrieb:
> das stört mich an Deiner Lib :
> #include "shift.c"
>
> Ich hätte da lieber sowas stehen :
> #include "shift.h"
OK. Warum eigentlich?

> Leider überschreibt mir Deine Lib auch meine Port Settings.
> Denn die anderen Pins von PORTC benutzte ich doch auch noch !
Klar!

> Vielleicht sollte man in shift_init() besser verodern bzw ausmaskieren.
Was meinst du damit?

> Auch kann ich von ausserhalb die Port Konfig. nicht verändern.
Warum? In der shift.h kann man die doch oben ändern odern nicht?

> Wieso sollen nicht noch andere Teilnehmer am SPI Bus seperat ansprechbar
> sein sollen ?
Meinst du I²C? Wegen der Ports?
Angehängte Dateien:
#3457487
Naja, eine Lib ist dadurch gekennzeichnet das sie funktionalität nach 
aussen bringt.
Es gibt also funktionen die nur im "innern" gebraucht werden und andere 
die als schnittstelle nach aussen dienen.

In einer Headerdatei stehen die Funktionen nur die Funktionen die nach 
aussen sichbar sein müssen.
Bei grösseren Projekten welche über mehrere Dateien / libs verteilt 
sind,
kommt man manchmal nicht dran vorbei das sinch teile gegenseitig 
includieren.
Includierst Du das .c File gibt es dann bruch.
Gibt hier einen tollen Artikel dazu ;)

-> Stichwort Headerfiles.


Cool wäre wenn man der shift_init() per parameter z.B. die PortPins 
"erklären"/übergeben könnte.

Aber das teil auch nicht die anderen Port Settings verändert.
Bits welche gesetzt werden -> verodern
Bits welche gelöscht werden mit einer Bitmaske verunden.

Ich will ja nachträglich Deine Lib nicht verändern.
Das Teil soll später auf meiner Platte liegen -ReadOnly- und an jede 
Hardware anpassbar sein.
Eine gute Lib kann das !

-> Stichwort Bitmanipulation, siehe Artikel.



Jetzt könnte man einen teil der Schieberegister für andere Sachen 
benutzen, da kaskadiert.
Oder paralell per ChipSelect noch was anderes ansteuern.

-> gibt auch einen tollen Artikel zum SPI...


Eigentlich besteht Dein LED Problem aus zwei teilen :

- Implementation der SPI Schnittstelle.
(Die kann aber eingetlich senden und emfpangen)

- Aufbereitung der LED Daten.


Bin jetzt verweihnachtet...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.