ATMEGA8 SPI doppelt verwenden?

Gast #798036
Lesenswert?

Hi,
bin neu hier und werde auch gleich mal einen account erstellen. Find das 
Forum echt super ;)

Ich bin dabei mit einem ATMEGA8 einen Wecker aufzubauen und habe einen 
leichten Mangel an I/O-Pins. Jetzt ist meine Frage, ob ich zur Laufzeit 
(Trotz SPIEN Fuse) die SPI-Pins zu normalen Inputs umschalten und 
spaeter wieder zurueckschalten kann?
Dann koennte ich diese alle 24Std als input fuer einen DCF77 empfaenger 
nutzen und sonst stuenden sie zum programmieren zur verfuegung...

Vielen Dank schonmal,
philipp
Persönliche Seite #798048
Lesenswert?

Suche mal nach Porterweiterung und / oder 74*595 , 164., 165

Wieso brauchst du soviele PINs für was ?

LCD 4 Bit +2 = 6 Ltg paar tasten sagen wir mal 3-4 = 10 Ltg

2Pins für Quarz ein Pin für Summer 1Pin über 10k an Reset also da 
beleiben noch welche übrig ;)

SPI ist ein Bus - du kannst dort also mehrere Porterweitung anschliesen.
#798052
Lesenswert?

Ja der Wecker ist eigtl. hardwaremaessig schon fertig. Bloss wollte ich 
noch DCF-Empfang hinzufuegen, weil er nicht so genau ist...
Ich brauche soviele Pins, weil ich 7-Segment LED Anzeigen (gepulst) ohne 
controller o.ae. ansteuere und weil ich noch einen Sprachspeicherchip 
ansteuere, der verschiedene Wecknachrichten abspielt :)

Aber meine Frage war, ob ich von der Software aus einfach die SPI pins 
umstellen kann (und anschliessend zurueck, sodass dann wieder ISP 
moeglich ist).
#798054
Lesenswert?

@ Philipp (Gast)

>(Trotz SPIEN Fuse) die SPI-Pins zu normalen Inputs umschalten und
>spaeter wieder zurueckschalten kann?

Die Pins für ISP sind normal nutzbar.

>Dann koennte ich diese alle 24Std als input fuer einen DCF77 empfaenger
>nutzen und sonst stuenden sie zum programmieren zur verfuegung...

Man muss nur aufpassen, dass währen der Programmierung nicht Ausgänge 
gegeneinander treiben. Also dein Ausgang von DCF77 Empfänger muss 
während der Programmierung deaktiviert oder getrennt werden. Das kann 
man z.B. mit einem  74HC126 machen, wobei das Steuerpin mit am Reset 
hängt. Meist reicht es aber auch, durch Längswiderstände den Ausgang zu 
entkoppleln. Also vom DCF77 Empfänger über 1..10 kOHm an den AVR zu 
gehen.

MFG
Falk
#798056
Lesenswert?

>>(Trotz SPIEN Fuse) die SPI-Pins zu normalen Inputs umschalten und
>>spaeter wieder zurueckschalten kann?
>
> Die Pins für ISP sind normal nutzbar.

Das waere natuerlich genial, aber das hatte ich einfach ausgeschlossen, 
weil woher soll der Chip denn sonst wissen, dass er jetzt programmiert 
werden soll, wenn die PINs als normale universell einsetzbare Ein- und 
Ausgaenge verwendet werden? Das versteh ich nicht ganz...
Gast #3333722
Lesenswert?

Ich hol den uralten Beitrag mal wieder hervor, um nichts neues 
aufzumachen.

Der TE wollte die SPI Pins ja wohl n´zum ISP-Programmieren nutzen, als 
auch als GPIOs.

Meine Frage wäre ähnlich:

Wenn ich meinen Atmega32 über SPI (USBTinyISP Programmer) programmiere, 
kann ich dann diese Pins auch als SPI Interface für Peripherie nutzen?

Beispiel:

Ich programmiere den uC auf einem seperaten Board. Anschließend setze 
ich meinen uC in einen neuen Schaltkreis. Kann das SPI Interface nun 
ohne einschränkungen genutz werden?
Muss ich die entsprechende Fuse ändern?

Einige Geräte bieten leider nur SPI an. Habe ich nun also die 
möglichkeit diese geräte zu betrieben, ohne größeren hardwareaufwand, 
timing-probleme beim proggen oder sonst was?

Wie gesagt: wenn ich dne uC auf einem seperaten Board programmiere habe 
ich ja auch kein Problem mit möglichen treibenden Ausgängen der 
angeschlossenen peripherie.

LG
Moderator Persönliche Seite #3333730
Lesenswert?

Dell schrieb:
> Ich hol den uralten Beitrag mal wieder hervor, um nichts neues
> aufzumachen.

Wäre aber angebrachter gewesen, denn es ist eben doch ein anderes
Problem.

Wenn du weitere Fragen hast, dann tu dies also bitte.

> Kann das SPI Interface nun ohne einschränkungen genutz werden?

Die Einschränkungen geben deine Peripheriegeräte ggf. vor: während
des ISP floaten alle Pins des Controllers, damit auch alle die, die
als /CS für die Peripherie genutzt werden.  Die Peripherie könnte
sich daher vom ISP „angesprochen“ fühlen, sofern man nicht deren
/CS-Leitungen mit einem externen Pullup versieht.

> Muss ich die entsprechende Fuse ändern?

Welche?  SPIEN?  Keinesfalls!  Danach würde ja kein ISP mehr
funktionieren.  (Die lässt sich übrigens über ISP nicht ändern.)
Moderator (Firma: Titel) Persönliche Seite #3333731
Lesenswert?

Dell schrieb:
> Wenn ich meinen Atmega32 über SPI (USBTinyISP Programmer) programmiere,
> kann ich dann diese Pins auch als SPI Interface für Peripherie nutzen?
Ja.

> Ich programmiere den uC auf einem seperaten Board. Anschließend setze
> ich meinen uC in einen neuen Schaltkreis. Kann das SPI Interface nun
> ohne einschränkungen genutz werden?
Ja.

> Muss ich die entsprechende Fuse ändern?
Nein.
Lies mal den Abschnitt "In System Programming" des Datenblatts. Dort 
steht, dass wenn der Reset aktiv ist, diese SPI-Pins zum Programmieren 
des uCs verwendet werden. Bei manchen Controllern sind es auch andere 
Pins...

> Habe ich nun also die möglichkeit diese geräte zu betrieben, ohne
> größeren hardwareaufwand, timing-probleme beim proggen oder sonst was?
Wenn dein uC im Zielsystem ist, dann darf im Reset keine Komponente an 
den SPI-Pins herumzerren. Dann kannst du diese Pins für die 
IS-Programmierung verwenden. Aber wie schon gesagt: das steht alles in 
aller Ausführlichkeit im Datenblatt...
#3333737
Lesenswert?

Dell schrieb:

> Wenn ich meinen Atmega32 über SPI (USBTinyISP Programmer) programmiere,
> kann ich dann diese Pins auch als SPI Interface für Peripherie nutzen?

Selbstverständlich.
Solange sich die Peripherie weder vom ISP aus dem Tritt bringen lässt 
noch selbst aktiv an den Pins rumpfriemelt.

Was dem TO gefehlt hat ...
> ... weil woher soll der Chip denn sonst wissen, dass
> er jetzt programmiert werden soll ...
... ist, dass der Programmer den µC mittels der RESET Leitung in einen 
Reset zwingt und nur dann ist das ISP aktiv.

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