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.
Bin 31 ist nicht beschaltet :-( (rechter GND) warum ist dieser so wichtig? kann ich diesen mit Pin 11 brücken? (linker GND)
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.
Hallo Stefanus, am "rechten" GND lag es nicht, AVCC ist beschaltet. Sonst noch eine Idee?
Thomas schrieb: > Hallo Stefanus, > > am "rechten" GND lag es nicht, AVCC ist beschaltet. Sonst noch eine > Idee? Immer noch die Taktfrequenz.
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
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.
gibt es eine Möglichkeit den Fehler aus den Logfiles des Raspberrys herauszufinden?
Thomas schrieb: > gibt es eine Möglichkeit den Fehler aus den Logfiles des > Raspberrys > herauszufinden? Was steht denn drin? cd /var/log ls -ltr
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:
1 | 1k |
2 | Reset o----[===]---|<|---o VCC |
3 | |
4 | MISO o----[===]---|>|---| GND |
5 | |
6 | MOSI o----[===]---|>|---| GND |
7 | |
8 | SCK o----[===]---|>|---| GND |
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
Thomas schrieb: > Hat keiner eine Idee? viele, ISP Programmer kaufen bidir Pegelwandler mit FET ATmega328p Lochraster oder Arduino m328p an USB vom PI
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?
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.
:
Bearbeitet durch User
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:54 Thomas schrieb: > Autor: > Thomas (Gast) > Datum: 05.02.2019 09:07 Was soll das? Bitte nur einen Namen im Thread benutzen.
Sorry, war vom PC meiner Schwester. Ich bin nun zu der Erkenntnis gekommen, dass es am Raspberry liegen muss
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.