Forum: Mikrocontroller und Digitale Elektronik ATMEGA8 SPI doppelt verwenden?


von Philipp (Gast)


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

von Avr N. (avrnix) Benutzerseite


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.

von Philipp F. (nerdture)


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).

von Falk B. (falk)


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

von Philipp F. (nerdture)


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

von TorstenS (Gast)


Lesenswert?

Hallo Philipp,

lies mal im Datenblatt das Kapitel über ISP. Dort erfährst du auch, dass 
das RESET-Signal zum Aktivieren genutzt wird.

Tschüss
Torsten

von Philipp F. (nerdture)


Lesenswert?

Ich habe jetzt nocheinmal im Datenblatt gesucht aber nichts gefunden. 
Aber vielen Dank fuer die Hilfe, dann kann ich die Pins ja ganz normal 
ueber das DDRB Register als Input setzen und mit PINB auslesen.. ;)

von Dell (Gast)


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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.)

: Bearbeitet durch Moderator
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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

von Alexander F. (alexf91)


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, das ist möglich.
Fuses müssen dazu keine umprogrammiert werden, d.h. du kannst den 
Controller extern programmieren und dann einfach in die Schaltung 
einsetzen.

von Karl H. (kbuchegg)


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.

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.