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?
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.
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.
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.
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.
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;
;
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:
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
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/
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
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?
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.
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?
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?
Susanne schrieb:> Autor:>> Susanne (Gast)> Datum: 05.02.2019 08:54Thomas schrieb:> Autor:> Thomas (Gast)> Datum: 05.02.2019 09:07
Was soll das?
Bitte nur einen Namen im Thread benutzen.
Thomas schrieb:> Ich bin nun zu der Erkenntnis gekommen, dass es am Raspberry liegen mussThomas 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.
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...