Forum: Mikrocontroller und Digitale Elektronik SPI Butterfly


von Dietmar P. (dietmar2)


Lesenswert?

Hallo,

als uC-Neuling bitte ich um Hilfe. Habe meine ersten Gehversuch mit uC 
auf einem STK500 und einem Atmega32 (geliehen) gemacht. Da der Butterfly 
mit dem Display für meine geplante Anwendung passen würde, bitte ich um 
Unterstützung.

Ich hänge da beim SPI-Thema mit einem Verständnisproblem. Das 
Butterflyboard hat ja den uC Atmega169 drauf. Im Datenblatt des 
Atmega169 sind für SPI die Pins 9-13 angegeben.
Wenn ich aber in die Butterfly-Dokumentation gehe, dann sind die Pins 
(Block rechts unten) für die In-System-Programming verwendet (habe ich 
so verstanden).
Über diese Schnittstelle habe ich beim Ausprobieren mit Hilfe eines 
Kabels am PC-Paralell-Druckerport den Butterfly geflasht.

Da mein Ziel ist Mux/Demux-Bausteine (74HC165 + 74HC595) über uC zu 
steuern
stehe ich jetzt auf dem Schlauch.

Nun meine Fragen:
- Muss da ein Fuse-Bit (SPIEN) geändert werden, damit quasi aus ISP das
  SPI wird?
- Kann dann das Flashen nur über den UART-Anschluss und den Bootloader
  erfolgen?
- Wie funktioniert die Ansprache/der Anstoss des SPI beim Butterfly?

Habe die Funktion des SPI über Wiki und ähnliche Doku verstanden, aber 
wie wird sie im uC gestartet / gesteuert?

Habt bitte Verständnis für einen Anfänger.

Danke für Eure Hilfe im Voraus.

von Michael U. (amiga)


Lesenswert?

Hallo,

der SPI wird von Deinem Programm entsprechend bedient.
Die Pins sind gleichzeitig der ISP zum programmieren.
Entschieden wird das beim AVR vom Reset-Pin.
Ist er im Reset (Low) ist er auch im Programmiermode und erwartet an 
diesen Pins die Kommandos vom Programmieradapter. Läuft er (Rest High) 
sind es normale I/O-Pins oder eben auch SPI.

In die Quere kommen können sich nur angeschlossen Bauteile (Deine '595 
z.B.), weil die u.U. den Programmieradapter beis einer Arbeit stören 
oder weil beim Programmieren die Signale auch an Deinen Schieberegistern 
anliegen und u.U. diese wild Daten schieben lassen.

Ob es konkret stört, hängt von der Anwendung ab. Ein paar flackernde 
LEDs nerven höchstens beim Programmieren, wild zuckende Motore o.ä. 
wären da schlimmer.

Also abschätzen, was passiert, wenn das parallel dranhängt.
Auch daran denken, daß die AVR-Pins im Reset Eingang ohne PullUp sind 
und angeschlossene Baugruppen das vielleicht nicht gut finden.

Programmierbeispiele zum SPI sollten im Tutorial ja zu finden sein.

Gruß aus Berlin
Michael

von Purzel H. (hacky)


Lesenswert?

Ueblicherweise nimmt man einen Pin als Chipselect fuer ein SPI device. 
Dieser muss mit einem Pullup, oder Pulldown inaktiv gezogen werden, da 
der Mega bei einem Reset in einem Tristate Mode ist.

von Dietmar P. (dietmar2)


Lesenswert?

Hallo Michael,

zuerst einmal vielen Dank.

Da scheint es mir ja besser, wenn ich auf ISP verzchte und die 
Programmierung über UART vorsehe. Wenn ich bei installierter Anwendung 
das Prgramm ändern möchte, dann kann ich ja schlecht parallel zu den 
IC's auch noch die den 169 flashen, wer weiß was da passiert.

Noch 'ne Frage zum Programmieren/Flashen:

Bisher habe ich alles unter Linux mit einem Editor und AVRDUDE gemacht. 
So 'ne grafische Oberfläche, wie z.B. AVRStudio habe ich da noch nicht 
entdeckt. TUT man sich als Änfänger mit so einer Oberfläche wirklich 
leichter?

Gruß
Dietmar

von Dietmar P. (dietmar2)


Lesenswert?

Hallo hacky,

danke für die Info.
Das ist aber für einen Anfänger noch etwas hoch.
Hast Du einen Link oder so etwas, wo das noch etwas mehr erklärt ist?

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.