Forum: Mikrocontroller und Digitale Elektronik SPI Raspberry


von Thomas (Gast)


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


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)


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


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)


Lesenswert?

Hallo Stefanus,

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

von Stefan F. (Gast)


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)


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


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)


Lesenswert?

gibt es eine Möglichkeit den Fehler aus den Logfiles des Raspberrys 
herauszufinden?

von Stefan F. (Gast)


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)


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)


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


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)


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


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)


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)


Lesenswert?

Hat keiner eine Idee?

von Joachim B. (jar)


Angehängte Dateien:

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


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)


Lesenswert?

den genauen Schaltplan hat doch niemand, also raten wir nur.

von Thomas (Gast)


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)


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)


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)


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)


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)


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)


Lesenswert?

habe einen avrispmkII. Kann nicht sagen warum diese Meldung kommt

von Bru (Gast)


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)


Lesenswert?

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

von Fragezeichen (Gast)


Lesenswert?

Mal ganz doof gefragt...
Wieso diese Umstandskrämerei mit dem Pi?

von Bru (Gast)


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)


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

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.