Forum: Mikrocontroller und Digitale Elektronik SPI Schnittstelle


von Werner W. (bj20)


Lesenswert?

Hallo, ich bin Anfänger und verwende einen ATtiny84A.
http://www.atmel.com/Images/doc8183.pdf

Für das Programmieren verwende ich AVRStudio5 mit JTAGICE mkII. Der µC 
unterstützt ISP.

Auf der Platine will ich nun eine Möglichkeit schaffen, um den 
Programmer mit der Platine zu verbinden, den µC also in der Schaltung zu 
programmieren. Das Anschlusskabel des JTAGICE hat 10 Pins, wieviel Pins 
des µC benötige ich dafür? Im Datenblatt unter 19.5 "Serial Programming" 
sind 6 Pins angeführt: VCC,MOSI,MISO,SCK,RESET,GND. Muss ich nun einfach 
diese 6 Pins des µC an eine 10-Pin-Stiftleiste auf der Platine führen? 
Was passiert dann mit den anderen 4 Pins?

Muss ich da sonst noch irgendwas beachten (zusätzlichen Widerstände 
etc..)?

Danke!

von astroscout (Gast)


Lesenswert?

Ich glaube du verwechselt die drei Begriffe SPI, ISP und JTAG
- SPI ist eine serielle Schnittstelle, die nicht zur Programmierung des 
µC verwendet wird
- ISP steht für In-System-Programmer, über diese Schnittstelle kannst du 
dein Programm auf den Mikrocontroller übertragen
- JTAG ist ebenfalls eine Programmierschnittstell, über die mal ein 
Programm auf dem µC auch wärend der Laufzeit Debuggen kann.

Meines wissens ist der ATtiny84A nicht über JTAG prgrammierbar und der 
Programmer JTAGICE mkII scheint laut Datenblatt keine SPI zu 
unterstützen.

Die Belegung der SPI-Connenctoren findest zu hier:
http://www.incunabulum.de/projects/poelcontrol/notizen/con-isp.png

von Cyblord -. (cyblord)


Lesenswert?

Die 6 Pins sind korrekt und reichen aus. Die 10 Pin Stecker sind 
veraltet. Meist sind die übrigen Pins auf Masse gelegt.
Ich würde nur noch 6 Pin ISP-Stecker verbauen (Wannenstecker).

ISP kann direkt mit dem Controller verbunden werden.
100nF Ablockkondensatoren an VCC und GND schadet nicht.

Im übrigen verwechselst du SPI und ISP. Bitte korrekte Terminologie 
sonst gibts Konfusion. ISP kann mittels SPI gemacht werden, ist trotzdem 
was anderes.


gruß cyblord

von Werner W. (bj20)


Lesenswert?

Ok, das hab ich wirklich verwechselt, ich meinte ISP für programmieren 
in der fertigen Schaltung.

Heißt das, ich kann mit dem JTAG ICE mk2 meinen ATtiny84A nicht 
programmieren???

Danke

von Cyblord -. (cyblord)


Lesenswert?

Werner Weinwurm schrieb:
> Heißt das, ich kann mit dem JTAG ICE mk2 meinen ATtiny84A nicht
> programmieren???

Doch das sollte gehen. Es gibt mehrere Möglichkeiten zu programmieren. 
Eine davon ist ISP über die SPI-Schnittstelle mit den 4 Signalen (MOSI, 
MISO, SCK, RESET) + 2 Versorgung = deine 6 Anschlüsse. Es gibt aber noch 
HV, JTAG, DebugWire usw. Davon kann nicht jeder Controller alles.

http://www.atmel.com/tools/AVRJTAGICEMKII.aspx?tab=devices

gruß cyblord

von Werner W. (bj20)


Lesenswert?

Dann werde ich die 6 Pins einfach an einer Stiftleiste(10Polig) 
herausführen, sodass ich den Stecker vom JTAG ICE mk2 verbinden kann.

Vielen Dank!!

von astroscout (Gast)


Lesenswert?

cyblord ---- schrieb:
> Es gibt mehrere Möglichkeiten zu programmieren.
> Eine davon ist ISP über die SPI-Schnittstelle mit den 4 Signalen (MOSI,
> MISO, SCK, RESET) + 2 Versorgung = deine 6 Anschlüsse.

okay, wenn dem so ist, dann muss du die Anschlüsse wie auf dem oben 
geposten Bild (Link) verbinden.

Mich wundert nur, dass hier
http://www.atmel.com/tools/AVRJTAGICEMKII.aspx

nichts von SPI-Unterstützung steht, oder ist SP = SPI?

von Werner W. (bj20)


Lesenswert?

Hallo...

Noch eine Frage dazu: Kann ich die Pins für die Programmierung (MOSI, 
MISO,...) direkt an den µC anschließen oder sind da dazwischen noch 
Vorwiderstände notwendig?

Der MOSI-Pin wird während des Betriebes zur Ansteuerung einer LED 
verwendet. Während der Programmierung wird der µC ja resettet, oder? 
Kann es durch die Programmierung dazu kommen, dass die LEDs in diesem 
Fall leuchten?

LG

von Falk B. (falk)


Lesenswert?

@ Werner Weinwurm (bj20)

>Noch eine Frage dazu: Kann ich die Pins für die Programmierung (MOSI,
>MISO,...) direkt an den µC anschließen

Das MUSST du sogar.

>oder sind da dazwischen noch
>Vorwiderstände notwendig?

Nein. Wenn es Probleme gibt, dann muss die Peripherie entkoppelt werden.

>Der MOSI-Pin wird während des Betriebes zur Ansteuerung einer LED
>verwendet. Während der Programmierung wird der µC ja resettet, oder?

JA.

>Kann es durch die Programmierung dazu kommen, dass die LEDs in diesem
>Fall leuchten?

JA.

von Cyblord -. (cyblord)


Lesenswert?

Werner Weinwurm schrieb:
> Hallo...
>
> Noch eine Frage dazu: Kann ich die Pins für die Programmierung (MOSI,
> MISO,...) direkt an den µC anschließen oder sind da dazwischen noch
> Vorwiderstände notwendig?

LESEN!

Ich schrieb bereits:

> ISP kann direkt mit dem Controller verbunden werden.

von Werner W. (bj20)


Lesenswert?

Dankesehr!

von Werner W. (bj20)


Lesenswert?

Hallo, bin gerade dabei, die Schnittstelle zu verbinden. Auf der Platine 
habe ich einen 10-Poligen Header, der zum Stecker vom JTAGICE mk2 passt. 
Ich würde die Pins nun wie im linken oberen Bild von folgendem Link mit 
dem µC verbinden:
http://www.incunabulum.de/projects/poelcontrol/notizen/con-isp.png

Richtig?


Was muss ich dann im AVRStudio einstellen? Würde ich die JTAG 
Schnittstelle verwenden, dann ist am Pin 2 +5V, das würde dann mit Gnd 
verbunden werden und zu einem Kurzschluss führen. Ich muss also vor dem 
Programmieren ISP für die Programmierschnittstelle einstellen, oder?

Hab ich das richtig verstanden, dass ich dann mit dieser 
Programmiermethode nicht debuggen kann?

Danke, lG

von spess53 (Gast)


Lesenswert?

Hi

>Ich würde die Pins nun wie im linken oberen Bild von folgendem Link mit
>dem µC verbinden:
>http://www.incunabulum.de/projects/poelcontrol/not...

>Richtig?

Nein. Das ist die Belegung des 10pol. ISP Steckers. Sieh in der Hilfe 
des AVR-Studios zum JTAGICE nach welche Pins des Steckers den 
ISP-Leitungen entsprechen.

In der Hilfe zum 4er Studio ist das unter

JTAGICE mkII User Guide->Connecting the JTAGICE mkII->Connecting to an 
SPI target

zu finden.

Beim JTAGICE MKII sollte eigentlich ein ISP-Adapterkabel, allerdings für 
den sechspoligen ISP-Anschluss, dabei sein.

MfG Spess

von Thomas E. (thomase)


Lesenswert?

spess53 schrieb:
> Beim JTAGICE MKII sollte eigentlich ein ISP-Adapterkabel, allerdings für
> den sechspoligen ISP-Anschluss, dabei sein.
Das ist das Teil mit dem bunten 5cm langen Flachbandkabel. Das wird auf 
die Platine am Ende des FPC-Kabels vom JTAGICE gesteckt. Die schwarze 
Buchse ist dann die Isp- und Debugwire-Schnittstelle. Ohne Adapter ist 
das die Jtag-Schnittstelle.
Wenn du den Adapter verbummelt hast, musst du dir den selbst bauen oder 
eine 10-polige Stiftleiste auf dein Board setzen und das entsprechend 
verkabeln.
Dabei handelt es sich dann aber nicht um die alte 10-polige 
Isp-Schnittstelle!

mfg.

von Werner W. (bj20)


Lesenswert?

Warum kann ich denn keinen 10-poligen verwenden??

von Werner W. (bj20)


Lesenswert?

Den Adapter hab ich gefudnen...

von Werner W. (bj20)


Lesenswert?

Hab das AVR STudio noch nicht installiert, kann ich dann die Pinbelegung 
in diesem Beitrag verwenden:
Beitrag "AVR JTAG zu ISP Adapter"

Danke, lG

von spess53 (Gast)


Lesenswert?

Hi

>Warum kann ich denn keinen 10-poligen verwenden??

Kannst du schon. Aber der 6-polige ist seit vielen Jahren 
ATMEL-Standard.

MfG Spess

von Werner W. (bj20)


Lesenswert?

Kann ich dann die Pins des 6-poligen Steckers auf der platine wie folgt 
mit dem µC verbinden:
1 -> MISO
2 -> Vcc
3 -> SCK
4 -> MOSI
5 -> RESET
6 -> Ground

?

von Thomas E. (thomase)


Lesenswert?

Werner Weinwurm schrieb:
> Kann ich dann die Pins des 6-poligen Steckers auf der platine wie folgt
> mit dem µC verbinden:
> 1 -> MISO
> 2 -> Vcc
> 3 -> SCK
> 4 -> MOSI
> 5 -> RESET
> 6 -> Ground
>
> ?

Ja.

mfg.

von Werner W. (bj20)


Lesenswert?

Super danke!

Ein kleine Frage noch zum SCK: Im Datenblatt des µC
http://www.atmel.com/Images/8183S.pdf
finde ich nur einen PIN mit der Bezeichnung USCK bzw SCL (PIN 9). Ist 
das der richtige für SCK?

DANKE!

von Cyblord -. (cyblord)


Lesenswert?

JA

Du übertreibst es ein bisschen oder?

von Patrick B. (p51d)


Lesenswert?

ja.

Übrigens: Ist dir der Begriff "Selbststudium" bekannt? Es scheint, als 
ob du hier eine Unterrichtsstunde erwartest

von Werner W. (bj20)


Lesenswert?

Hallo... tut mir leid, ist mein erstes Projekt...

Eine kleine Frage hätte ich trotzdem noch: Wie ist das nun mit dem 
Debuggen während der Laufzeit, wenn ich mit dieser Methode programmiere?

THX

von spess53 (Gast)


Lesenswert?

Hi

>Eine kleine Frage hätte ich trotzdem noch: Wie ist das nun mit dem
>Debuggen während der Laufzeit, wenn ich mit dieser Methode programmiere?

Der ATTiny84A hat DebugWire. Das läuft über den gleichen Steckverbinder.

MfG Spess

von Werner W. (bj20)


Lesenswert?

Dankesehr :)

von Werner W. (bj20)


Angehängte Dateien:

Lesenswert?

Hallo...

Ich habe noch ein Problem: Verwende jetzt doch AVR STudio 4 mit dem 
alten JTAGICE (grau) mit serieller Schnittstelle...

Die 6 Pins hab ich wie oben besprochen herausgeführt. Dabie ist SCK, 
MOSI, MISO und RESET direkt herausgeführt, für VCC und GND hab ich nicht 
direkt das Signal vom µC genommen, sondern allgemeine VCC und GND punkte 
auf der Platine. Ist das ein PRoblem, dass die beiden Pins VCC und GND 
nicht DIREKT mit der Schnittstelle verbunden sind?? Ich bekomm nämlich 
beim Verbindungsversuch immer eine Fehlermeldung (siehe Anhang)

Hat jemand eine Idee, woran das liegt?

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.