SPI Raspberry

Gast #5722256
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?
Gast
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.
Gast
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.
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.
Gast
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.
Gast
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.
Gast
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;
;
Gast
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
Gast
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
Gast
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
Gast
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?
Gast
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?
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.
Gast
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?
Gast
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?
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?
Gast
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

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.