Forum: Mikrocontroller und Digitale Elektronik SPI Raspberry


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Thomas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich benutze einen Raspberry Pi Zero W und einen ATmeag32L nun würde ich 
gerne den Mikrocontroller mithilfe der SPI Schnittstelle des Raspberry 
programmieren.
Ich habe mich nach folgender Anleitung gehalten:
http://www.holgerschurig.de/de/raspi-atmega/

Wobei ich anstatt eines 16Mhz Quarz einen 8Mhz Quarz verwende. Sobald 
ich die SPI Schnittstelle am Raspberry aktiviere, stürzt er ab, es 
scheint, als hätte ich einen Kurzschluss.

den ATMega betreibe ich mit 3,3V


Hardware habe ich schon 20X kontrolliert.

hat vielleicht noch jemand eine Idee, an was es liegen könnte?

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Bei dem ATmega sollst du AVCC und den rechten GND Anschluss nicht 
unbeschaltet lassen.

Gemäß Table 117 "External Clock Drive" darf der Chip bei 3,3V mit 
maximal 8MHz getaktet werden.

von Thomas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Bin 31 ist nicht beschaltet :-( (rechter GND)
warum ist dieser so wichtig? kann ich diesen mit Pin 11 brücken? (linker 
GND)

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Thomas schrieb:
> warum ist dieser so wichtig?

Weil er für Teile des Mikrocontrollers das bezugspotential festlegt. 
Alle GND Anschlüsse müssen miteinander verbunden werden.

Und wie gesagt darfst du AVCC nicht unbeschaltet lassen. Das dann 
passiert ist nämlich nicht spezifiziert, also kann dann alles Mögliche 
komische passieren, bis hin zur Beschädigung des Chips.

von Thomas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Stefanus,

am "rechten" GND lag es nicht, AVCC ist beschaltet. Sonst noch eine 
Idee?

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Thomas schrieb:
> Hallo Stefanus,
>
> am "rechten" GND lag es nicht, AVCC ist beschaltet. Sonst noch eine
> Idee?

Immer noch die Taktfrequenz.

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
Thomas schrieb:
> Wobei ich anstatt eines 16Mhz Quarz einen 8Mhz Quarz verwende.

wie kommst du auf 16MHz?

ist die Fuse schon programmiert?
ist schon ein bootloader drauf?

Absturz vom PI kann ja nur an der Verschaltung oder der Programmierung 
liegen.

default werden die ja mit 8Mhz intern geliefert und clk/div8 gesetzt 
also 1MHz.

genaueres sagt dir das Datenblatt.

Stefanus F. schrieb:
> Immer noch die Taktfrequenz.

keiner weiss was der ATmeag32L schon in den Fuse gesetzt hat oder im 
Bootloader und oder Flash als Programm steht.

Eines ist klar, der Atmel ist in den Ports stärker der kann den PI in 
die Knie zwingen.

: Bearbeitet durch User
von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Ach er verwendet einen 8MHz Quarz!
Ich Schaltplan steht 16MHz, deswegen hatte ich das moniert.

Also vergiss das, trifft ja nicht zu:
> Immer noch die Taktfrequenz.

von Thomas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
gibt es eine Möglichkeit den Fehler aus den Logfiles des Raspberrys 
herauszufinden?

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Thomas schrieb:
> gibt es eine Möglichkeit den Fehler aus den Logfiles des
> Raspberrys
> herauszufinden?

Was steht denn drin?

cd /var/log
ls -ltr

von Thomas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

das ganze hat nun doch noch geklappt.
Ich habe einen anderen Controller genommen. Vielleicht hatte dieser ein 
Problem...

Das Programm kann ich leider immer noch nicht übertragen, da ich keine 
Signature bekomme, siehe Fehlermeldung.

muss ich da in der /etc/avrdude.config noch was eintragen?


pi@raspberrypi:~/Desktop/Test/Release $ sudo avrdude -c linuxspi -p m32 
-P /dev/spidev0.0 -e -U flash:w:Test.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 
0.00s

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 
0.00s

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 
0.00s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

von Thomas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
die /etc/avrdude.conf habe ich wie folgt angepasst:
programmer
  id = "linuxspi";
  desc = "Use Linux SPI device in /dev/spidev*";
  type = "linuxspi";
  reset = 25;
  baudrate=200000;
;

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Anscheinend funktioniert die Kommunikation nicht.

Passen die Fuses im AVR zu seiner Beschaltung (Taktquelle)?

Du kannst LED's anschließen, um zu sehen, ob sich überhaupt etwas tut:
1
            1k   
2
Reset o----[===]---|<|---o VCC
3
4
MISO  o----[===]---|>|---| GND
5
6
MOSI  o----[===]---|>|---| GND
7
8
SCK   o----[===]---|>|---| GND

von Thomas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
da dies ein neuer MIkrocontroller ist, kann ich nicht sagen wie die 
Fuses gesetzt sind.
kannst du mir sagen wie diese gesetzt sein müssen?

hast du mir einen Link?

vielen Dank im vorfeld

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Thomas schrieb:
> da dies ein neuer MIkrocontroller ist, kann ich nicht sagen wie
> die
> Fuses gesetzt sind.
> kannst du mir sagen wie diese gesetzt sein müssen?
>
> hast du mir einen Link?
>
> vielen Dank im vorfeld

Steht im Datenblatt. Der Fuse Calculator könnte auch hilfreich sein: 
http://www.engbedded.com/fusecalc/

von Thomas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich bin´s nochmals :-)

Bin nun einen Schritt weiter gekommen. Das Problem lag daran, dass die 
Ausgänge vom Mikrocontroller beim Syystemstart auf "1" wechselten. Der 
Raspberry hatte damit natürlich ein Problem und ging in die Knie.

Nachdem ich dieses Problem behoben hatte, fuhr mein Raspberry auch hoch.

Wenn ich den SPI teste, dann kommt folgende Meldung:

pi@raspberrypi:~ $ sudo avrdude -c linuxspi -p m32 -P /dev/spidev0.0

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 
0.00s

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 
0.00s

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 
0.00s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.


Leider bekomme ich immer noch keine Signature. Muss ich da irgendwo noch 
was einstellen?

bitte um kurze Rückantwort

vielen Dank

von Thomas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hat keiner eine Idee?

von Joachim B. (jar)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Thomas schrieb:
> Hat keiner eine Idee?

viele,
ISP Programmer kaufen
bidir Pegelwandler mit FET
ATmega328p
Lochraster
oder
Arduino m328p an USB vom PI

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Mir leuchtet nicht ein, warum der Raspberyy Pi wegen einem Kurzschluss 
am SPI Anschluss ausfallen sollte. Hängt da etwa dessen SD Karte mit 
dran?

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
den genauen Schaltplan hat doch niemand, also raten wir nur.

von Thomas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
OK, ich Fang nochmals ganz von vorne an
1. testen ob die SPI Schnittstelle am Mikrocontroller funktioniert.
-> Wenn ich diesen Programmer anschließe, und mein Programm übertragen 
kann, dann müsste doch die SPI Schnittstelle am Mikrocontroller 
funktionieren:
https://www.microchip.com/developmenttools/ProductDetails/atavrisp2

oder nicht?

von Susanne (Gast)


Bewertung
0 lesenswert
nicht lesenswert
ok, das schein zu funktionieren:

thomas@thomas-Latitude-E5520:~/workspace/Test/Release$ sudo avrdude -c 
avrispmkII -p m32 -P usb -e -U flash:w:Test.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 
0.01s

avrdude: Device signature = 0x1e9502
avrdude: erasing chip
avrdude: reading input file "Test.hex"
avrdude: input file Test.hex auto detected as Intel Hex
avrdude: writing flash (122 bytes):

Writing | ################################################## | 100% 
0.04s

avrdude: 122 bytes of flash written
avrdude: verifying flash memory against Test.hex:
avrdude: load data flash data from input file Test.hex:
avrdude: input file Test.hex auto detected as Intel Hex
avrdude: input file Test.hex contains 122 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 
0.03s

avrdude: verifying ...
avrdude: 122 bytes of flash verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

oder sehe ich das falsch?
also kann ich mir mal sicher sein, dass der Mikrocontroller funktioniert

kann mir jemand sagen, wie ich die SPI Schnittstelle am Raspberry teste?

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
Thomas schrieb:
> dann müsste doch die SPI Schnittstelle am Mikrocontroller
> funktionieren:
> https://www.microchip.com/developmenttools/ProductDetails/atavrisp2
>
> oder nicht?

im Prinzip ja, aber wenn du Fehler machst und dein Programm die Ports 
der SPI als SPI ausser Betrieb nimmst dann geht danach nichts mehr.

Der Reset kann ja dauerhaft als Ausgang geschaltet werden, dann kommt 
keiner mehr in den Programmiermodus.

Desgleichen wenn die Hardware durch falsches Design die Ports festhält 
oder den Port abschiesst.

: Bearbeitet durch User
von Susanne (Gast)


Bewertung
0 lesenswert
nicht lesenswert
als nächstes wollte ich die Fuses auslesen:

sudo avrdude -c avrispmkII -p m32 -U lfuse:r:-:b

leider kommt nun folgende Meldung:
avrdude: stk500v2_ReceiveMessage(): timeout

Ich muss gestehen, dass ich das noch nie gmeacht habe. Funktioniert das 
denn so?

von Thomas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das setzen der Fusebits funktioniert irgendwie auch nicht:

sudo avrdude -c avrpmkII -p m32 -U lfuse:w:0xe1:m -U hfuse:w:0x99:m
avrdude: stk500v2_ReceiveMessage(): timeout

kann es sein, damit meine Fuses verstellt sind und ich somit keinen 
Zugriff auf meinen Mikrocontroller habe?

aber warum kann ich dann das Programm übertragen?

von Max B. (citgo)


Bewertung
0 lesenswert
nicht lesenswert
Habt ihr, Susanne und Thomas, jetzt das gleiche Problem oder seid ihr 
dieselbe Person?

Ein frischer Atmega32 hat die Fuses so eingestellt, dass man auch ohne 
Quarz drauf zugreifen kann.

hast du jetzt das avrispmkII oder das STK500?

von Thomas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
habe einen avrispmkII. Kann nicht sagen warum diese Meldung kommt

von Bru (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Susanne schrieb:
> Autor:
>
>         Susanne (Gast)
>       Datum: 05.02.2019 08:54

Thomas schrieb:
> Autor:
>         Thomas (Gast)
>       Datum: 05.02.2019 09:07

Was soll das?
Bitte nur einen Namen im Thread benutzen.

von Thomas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Sorry, war vom PC meiner Schwester.
Ich bin nun zu der Erkenntnis gekommen, dass es am Raspberry liegen muss

von Fragezeichen (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Mal ganz doof gefragt...
Wieso diese Umstandskrämerei mit dem Pi?

von Bru (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Thomas schrieb:
> Ich bin nun zu der Erkenntnis gekommen, dass es am Raspberry liegen muss

Thomas schrieb:
> Sobald
> ich die SPI Schnittstelle am Raspberry aktiviere, stürzt er ab, es
> scheint, als hätte ich einen Kurzschluss.

Möglicherweise hast Du ihn Dir dabei zerschossen.

von Thomas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich habe eine Platine, mit einem ATMega32 außerdem ist auf dieser 
Platine noch ein Raspberr Pi Zero w installiert. das ganze hatte ich 
schoneinmal am laufen. HAt ohne Probleme funktioniert. Danach ist meine 
Platine gekommen, habe dann alles gelötet, nehme nun die Funktion in 
Betrieb....

zwischenzeitlich habe ich dann noch ein update und upgrade durchgeführt 
und natürlich ein halbes Jahr lang nichts mehr gemacht. Naja, leider 
funktioniert es nicht mehr. Finde das schon ne praktische sache, wenn 
man den Controller direkt programmieren kann über eine Kommandozeile...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.