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