Hallo zusammen,
langsam weiss ich nichtmehr weiter und würde mich über euren Rat freuen.
Ich habe einen neuen ATMEGA328P auf Platine mit ISP und ohne externen
Quarz.
Ein Arduino UNO dient als ISP.
Über die Arduino IDE konnte ich bisher noch garnicht auf den Mega
zugreifen (avrdude: Device signature = 0x000000 avrdude: Yikes! Invalid
device signature.), allerdings über AVRDUDE und AVRDUDESS (>>>:
avrdude.exe -c arduino -P COM3 -b 115200 -p m8
Detected 1e950f = ATmega328P).
Laut AVRDUDESS stehen alle Fuse-Bits auf 0x00. Soweit ich der Anleitung
des Mega entnommen habe, sollten diese auf L 0x62, H 0xD9, E 0xFF und LB
0xFF stehen.
Möchte ich diese jedoch programmieren, erhalte ich die Fehlermeldung:
>>>: avrdude.exe -c arduino -p m328p -P COM3 -b 115200 -U lfuse:w:0x62:m -U
hfuse:w:0x00:m -U efuse:w:0x00:m
Processing -U lfuse:w:0x62:m
Reading 1 byte for lfuse from input file 0x62
Writing 1 byte (0x62) to lfuse *** failed
Error: unable to write lfuse (rc = -1)
Habt ihr noch eine Idee was ich ausprobieren kann? Ich komme leider aus
der Welt der Arduinos mit fertigen Bootloadern...
Mike L. schrieb:> Ich komme leider aus der Welt der Arduinos mit fertigen Bootloadern...
Ich mag mich irren, aber ich denke, dass "-c arduino" eben genau dafür
da ist, über den Bootloader eines Arduino mit dem Chip zu reden.
Wenn du den Arduino als Programmiergerät benutzt, musst du ein "-c
<irgendwas>" entsprechend dem angeben, was die Firmware, die du auf dem
Arduino laufen hast, als Protokoll implementiert.
Ich denke er hat den UNO als Programmer der wie ein Arduino angesprochen
werden will?!
Mit -v AVRDUDE mal geschwätziger stellen. Ob das auch in der IDE geht,
weiß ich nicht.
Dann könnte man noch die Bitrate mit -B (??) etwas runterdrehen. Der
328P läuft ja nicht mit "full Speed".
Ich vermute, dass du nicht mit deinem Target sprichst, sondern mit dem
Bootloader des Arduino Uno. Der Bootloader spricht das gleiche Protokoll
(stk500) wie der ISP Sketch, allerdings ohne Zugriff auf die Fuses. Wenn
du als Target einen anderes ATmega Modell verwenden würdest, wäre das
sofort anhand der angezeigten Device-ID offensichtlich.
Das Problem kommt daher, dass der Arduino Uno beim Öffnen des virtuellen
COM Portes einen Reset macht und in der ersten Sekunde danach im
Bootloader Modus läuft.
Am einfachsten löst man das Problem, indem man einen Kondensator mit 10
µF oder mehr an Reset+Gnd des Arduino Uno anschließt. Dadurch wird der
kurze Reset-Impuls unterdrückt.
"The 10µF electrolytic capacitor connected to RESET and GND of the
programming board is needed only for the boards that have an interface
between the microcontroller and the computer's USB, like Mega, UNO,
Mini, Nano."
https://docs.arduino.cc/built-in-examples/arduino-isp/ArduinoISP/
Sherlock 🕵🏽♂️ schrieb:> Ich vermute, dass du nicht mit deinem Target sprichst, sondern mit dem> Bootloader des Arduino Uno. Der Bootloader spricht das gleiche Protokoll> (stk500) wie der ISP Sketch, allerdings ohne Zugriff auf die Fuses. Wenn> du als Target einen anderes ATmega Modell verwenden würdest, wäre das> sofort anhand der angezeigten Device-ID offensichtlich.
Hast recht gehabt, ich hab mein Target einmal abgeklemmt und bekomme das
gleiche Ergebnis...
Das mit dem Kondensator habe ich probiert, allerdings bekomme ich in
AVRDUDE dann bei 19200 Baud das gleiche Ergebnis und bei 115200 Baud
"not in sync".
Bei AVRDUDESS funktioniert mit Kondensator die Kommunikation
garnichtmehr.
Hast du den Reset Eingang des Targets mit Pin 10 des Arduino Uno
verbunden? Zeige Fotos vom Aufbau.
Nimm die niedrige Baudrate. Für 115200 Baud brauchst du einen Arduino
Uno mit Quarz, die meisten Board haben aber nur einen Keramik Resonator,
die sind dafür nur mit Glück präzise genug.
Sherlock 🕵🏽♂️ schrieb:> Den ISP Sketch hast du aber installiert, oder?>> Probiere einen viel größeren Kondensator.>> Hast du den Reset Eingang des Targets mit Pin 10 des Arduino Uno> verbunden?>> Nimm die niedrige Baudrate. Für 115200 Baud brauchst du einen Arduino> Uno mit Quarz, die meisten Board haben aber nur einen Keramik Resonator,> die sind dafür nur mit Glück präzise genug.
ISP Sketch ist installiert, das ist das Einzige was funktioniert, sonst
läuft nix...Reset Eingang ist verbunden - ich habe jetzt 10uF, 47uF und
100uF durch, bei allen das gleiche Ergebnis:
Using Port : COM3
Using Programmer : stk500v1
Overriding Baud Rate : 19200
AVR Part : ATmega328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page
Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages
MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------
----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0
3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256
4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0
4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0
4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0
4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0
4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0
0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0
0 0 0x00 0x00
Programmer Type : STK500
Description : Atmel STK500 Version 1.x firmware
Hardware Version: 2
Firmware Version: 1.18
Topcard : Unknown
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100%
0.02s
avrdude: Device signature = 0x000000 (retrying)
Reading | ################################################## | 100%
0.03s
avrdude: Device signature = 0x000000 (retrying)
Reading | ################################################## | 100%
0.02s
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.
Chip-Löschung fehlgeschlagen: Hochladefehler: exit status 1
Kann ich am uC Kontrollieren ob der überhaupt funktioniert? Spannungen
liegen an, aber das muss ja nix heißen. Habe mal gehört, dass der an
einem Pin ein Taktsignal ausgeben soll, sobald der mit Spannung versorgt
wird.
Mike L. schrieb:> Habe mal gehört, dass der an einem Pin ein Taktsignal ausgeben soll,> sobald der mit Spannung versorgt wird.
Nein, dazu müsste man ihn erst programmieren. Zur ersten Kontrolle liest
man die Device ID via ISP aus.
Vielleicht kaufst du dir besser einen fertigen ISP Adapter, dann hast du
nicht zwei Probleme gleichzeitig. Aber kaufe einen der 3,3V
unterstützt, bzw welche Spannung du brauchst.
Die billigen USBASP Sticks haben fast alle den Fehler, dass sie zwar
einen 3,3V Regler enthalten, aber die Signale haben trotzdem 5V.
Mike L. schrieb:> Stelle ich die Abfrage mit 19200
Ich hatte -B (Bitrate/Bitclock) nicht -b (Baudrate) gemeint (und
geschrieben).
Aber hat sich ja eh erledigt :)
Es ist länger her, hat aber meist problemlos funktioniert
Ich habe mit einem UNO als ISP nackte Chips incl. Bootloader gefläsht -
hierzu vor dem Flashen die Shift-Taste drücken?
Probleme mit 3,3V 5V und 8 16 MHz sind ausgeschlossen?
Hier eine gute ANleitung:
https://docs.arduino.cc/built-in-examples/arduino-isp/ArduinoISP/
Sind die 328P neu? Nicht das die evtl. auf externen Oszillator
umgestellt wurden? - hierfür gibt es dann auch einen speziellen
ISP-Sketch der den Takt zur Verfügung stellt
Sherlock 🕵🏽♂️ schrieb:> Vielleicht kaufst du dir besser einen fertigen ISP Adapter, dann hast du> nicht zwei Probleme gleichzeitig.
Wäre jetzt auch mein Vorschlag gewesen.
Hmm, soooo schlecht ist doch der Arduino als Programmer gar nicht. Bei
mir hier läuft ein STK500V2 seit Jahren problemlos.
So, ich gehe schlicht davon aus, dass der TO das Beispielsketch von
Arduino auf den UNO geladen hat. Dieser Sketch macht dann aus dem UNO
einen
- AVRISP - Programmer
- mit 19200 Bd
Um jetzt mit dem UNO einen Chip zu flashen muß man das dem AVRDUDE
sagen, dass der Programmer nun nicht mehr Arduino(bootloader) heißt,
sondern eben avrisp.
Verbindung Arduino zum zu flashenden ATmega328p
Also:
1
Arduino-Anschluss | ATmega328p (28pol)
2
------------------------------------------------
3
Arduino 13 (PB5 - SCK) => Pin 19 (PB5 - SCK)
4
Arduino 12 (PB4 - Miso) => Pin 18 (PB4 - Miso)
5
Arduino 11 (PB3 - Mosi) => Pin 17 (PB3 - Mosi)
6
Arduino 10 (PB2) => Pin 1 (reset)
7
8
An Pin 1 einen Widerstand 10kOhm nach +Vcc schalten
9
(Pop-Up Widerstand)
Aufruf von avrdude in der Kommandozeile dann:
avrdude -c avrisp -p atmega328p -P COM3 -b 19200 -B5
Danach sollte AVRDUDE das angeschlossene Target melden (oder im Falle
von AVRDUDE Version 8.0 beendet AVRDUDE sich selbst ohne eine weitere
Meldung)
Ralph S. schrieb:> oder im Falle von AVRDUDE Version 8.0 beendet AVRDUDE sich selbst ohne> eine weitere Meldung
Dagegen würde ein "-v" helfen, um mehr zu erzählen.
Jörg W. schrieb:> Dagegen würde ein "-v" helfen, um mehr zu erzählen.
:-) mache ich ja schon, ich hab nur noch nicht alle meine Scripts
umgestellt... und manchmal schaue ich erstaunt: was ist da denn los! Nur
um festzustellen: Nix ist los!
Ralph S. schrieb:> Nur um festzustellen: Nix ist los!
Tja, wenn es nichts zu erzählen gibt, kann man¹ ja auch einfach mal die
Klappe halten. :-)
¹ also AVRDUDE in diesem Falle – nicht, dass sich jemand auf die
Krawatte getreten fühlt …
Ralph S. schrieb:> Um jetzt mit dem UNO einen Chip zu flashen muß man das dem AVRDUDE> sagen, dass der Programmer nun nicht mehr Arduino(bootloader) heißt,> sondern eben avrisp.
Danke für den Tipp, so kann es natürlich nicht funktionieren, wenn ich
das nicht ändere.
Beim ersten ATMEGA328P habe ich dennoch avrdude: Device signature =
0x000000 erhalten.
Ich habe dann einen neuen eingelötet und nun erhalte ich:
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: lfuse reads as 62
avrdude: safemode: hfuse reads as D9
avrdude: safemode: efuse reads as FF
avrdude: safemode: lfuse reads as 62
avrdude: safemode: hfuse reads as D9
avrdude: safemode: efuse reads as FF
avrdude: safemode: Fuses OK (E:FF, H:D9, L:62)
Scheint also zu funktionieren. Wie geht es jetzt weiter? Ich würde mir
ungerne durch rumprobieren den zweiten auch zerschießen...
Mike L. schrieb:> Ich würde mir ungerne durch rumprobieren den zweiten auch> zerschießen...
Zerschossen ist der vermutlich nicht, du wirst nur durch das Aktivieren
des Bootloaders irgendwie nicht mehr die gewünschte Firmware drauf haben
oder sowas. Flash die doch mal neu.
"safemode"? Long since gone. Du könntest ja ruhig mal eine neuere
AVRDUDE-Version benutzen. Nicht dein eigentliches Problem, schon klar,
aber es sind auch Bugs gefixt worden …
Jörg W. schrieb:> "safemode"? Long since gone. Du könntest ja ruhig mal eine neuere> AVRDUDE-Version benutzen. Nicht dein eigentliches Problem, schon klar,> aber es sind auch Bugs gefixt worden …
Welche ist denn die aktuelle? Ich habe bisher 6.4. als aktuellste
gefunden.
Ich habe mir testweise folgendes auf den uC geladen, um die Funktion der
WS2812B-B/T zu kontrollieren:
strip.setPixelColor(0,strip.Color(255,0,0));// Setze die erste LED auf Rot
11
strip.show();// Anwenden der Änderungen
12
}
13
14
voidloop(){
15
// Nichts weiter machen
16
}
Data-Pin und Pixel sind angepasst, Übertragung läuft ohne Fehlermeldung.
Allerdings leuchten die LEDs nicht.
Versorgungsspannung (5V) liegt an den LED an, 3,3V am uC. Auf der
Datenleitung ist mit dem Oszi nichts erkennbar, daher vermute ich mal,
dass der uC noch nicht richtig läuft.
Mike L. schrieb:> Scheint also zu funktionieren. Wie geht es jetzt weiter? Ich würde mir> ungerne durch rumprobieren den zweiten auch zerschießen..
In der Arduino IDE mit der Maus auf "hochladen" - dann die Shifttaste
drücken
Der Text ändert sich von "hochladen" zu "hochladen mit Programmer"
Der vermeintlich defekte ist vermutlich nicht defekt sondern steht auf 8
/ 16MHz oder auf externer Oszilator
Ich würde statt der WS2812 über die serielle Schnittstelle schauen was
passiert - gibt genügend Programme wo hier was ausgeben
Mike L. schrieb:> Welche ist denn die aktuelle? Ich habe bisher 6.4. als aktuellste> gefunden.
Dann hast du einiges verpasst, inzwischen sind wir bei 8.0, und da
gibt's sogar eine GUI mit dabei. Die würde ich noch ein wenig als
experimentell bezeichnen, sollte aber grundsätzlich funktionsfähig sein
– im Gegensatz zu all den anderen GUIs versucht sie nicht, irgendwie das
Kommandozeilentool zu interpretieren, sondern sie setzt darunter direkt
auf der libavrdude auf.
Jörg W. schrieb:> im Gegensatz zu all den anderen GUIs versucht sie nicht, irgendwie das> Kommandozeilentool zu interpretieren, sondern sie setzt darunter direkt> auf der libavrdude auf.
Bei AVRDUDESS gefiel mir, dass die Kommandozeile für AVRDUDE mit
angegeben wird. Dann brauche ich nur schnell probieren für den richtigen
Parameter, wenn es mal klemmt beim manuellen Aufruf von AVRDUDE :)
Wenn das bei dem neuen GUI auch so ist, wäre das natürlich toll.
Ich nutze AVRDUDE in makefiles und die GUI halt wenn ich gerade keinen
makefile habe und keinen schreiben möchte.
Gegen die Lib spricht hingegen nichts. Allerdings die Trennung von GUI
und Programmer-Funktion ist schon gut.
Gerade unter Linux arbeiten ja viele Tools mit GUI so.
Mike L. schrieb:> #define PIN 30 // Pin für die WS2812B
Watt is datt?
Da wird ein Arduino Pin erwartet!
30 gibts beim m328p nicht.
Also darfst du auch keine Funktionalität erwarten.
900ss schrieb:> Wenn das bei dem neuen GUI auch so ist, wäre das natürlich toll.
Das ist bei allen (mir bekannten) Arduino IDEs der Fall.
Sieht manchmal anders aus, ist aber vorhanden-
Arduino F. schrieb:> Mike L. schrieb:>> #define PIN 30 // Pin für die WS2812B>> Watt is datt?> Da wird ein Arduino Pin erwartet!> 30 gibts beim m328p nicht.>> Also darfst du auch keine Funktionalität erwarten.
Hast recht, wäre der PD0, also Pin 0.
Was ich nicht verstehe ist, wenn ich eine -v Abfrage mache, erhalte ich:
AVR device initialized and ready to accept instructions
Device signature = 1E 95 0F (ATmega328P, ATA6614Q, LGT8F328P)
Möchte ich ein Sketch hochladen kommt:
AVR device initialized and ready to accept instructions
Device signature = 00 00 00 (retrying)
Device signature = 00 00 00 (retrying)
Device signature = 00 00 00
Error: invalid device signature
Error: expected signature for ATmega328P is 1E 95 0F
- double check connections and try again, or use -F to carry on
regardless
Mike L. schrieb:> Was ich nicht verstehe ist, wenn ich eine -v Abfrage mache, erhalte ich:> AVR device initialized and ready to accept instructions> Device signature = 1E 95 0F (ATmega328P, ATA6614Q, LGT8F328P)>> Möchte ich ein Sketch hochladen kommt:> AVR device initialized and ready to accept instructions> Device signature = 00 00 00 (retrying)> Device signature = 00 00 00 (retrying)> Device signature = 00 00 00> Error: invalid device signature> Error: expected signature for ATmega328P is 1E 95 0F> - double check connections and try again, or use -F to carry on> regardless
Ohne konkrete Kommandozeile ist das eine Null Aussage.
Mike L. schrieb:> Ich habe mir testweise folgendes auf den uC geladen, um die Funktion der> WS2812B-B/T zu kontrollieren:
Grundsätzlich:
Der ATmega328p ist nicht wirklich eine schnelle MCU. Um mit diesem
WS2812 Leuchtdioden zu betreiben sind unterschiedliche Autoren für die
Arduino-Libs den Weg über Assembler gegangen um die noch ansteuern zu
können.
Das ganze Arduino Framework in Verbindung mit AVR Controllern baut
darauf auf, dass die Controller mit 16 MHz betrieben werden.
Mike L. schrieb:> Ich habe einen neuen ATMEGA328P auf Platine mit ISP und ohne externen> Quarz.
Ohne externen Quarz ist die maximale Frequenz die mit einem Mega328
machbar ist eben nur 8 MHz (und ich glaube - ich weiß es nicht gaaaanz
genau - dass das für den Betrieb mit WS2812 Leuchtdioden nicht schnell
genug ist).
Zudem:
Wenn das ein fabrikneuer Mega328 ist und du die Fuses bisher in Ruhe
gelassen hast, dann läuft der im Moment mit 1 MHz und internem Takt =>
das ist definitiv zu langsam für den Betrieb mit WS2812.
Wie man die Fuses einstellt kannst du hier abfragen:
https://www.engbedded.com/fusecalc/
Dort wählst du deinen ATmega328p aus. Hier ist jedoch absolute Vorsicht
geboten, weil du mit falschen Einstellungen bei den Fuses du dir den
Zugang zum Controller sperren kannst und du den Controller nur mit einem
"Hochvolt-Programmer" wieder in den ISP-Modus bekommst. Namentlich
darfst du die Fuses mit der Bezeichnung:
- RSTDISBL
- SPIEN
nicht verändern. Tust du das, wirst du dich wie oben beschrieben
aussperren!
Zusätzlich, wenn du den Controller ohne Quarz verwenden willst, darfst
du bei der Taktquelle für CKSEL0 bis CKSEL3 keine Einstellung machen,
die einen externen Taktgeber oder Quarz erfordert! (und du dich dann
ebenfalls aussperrst)
Die Einstellungen der Fuses für 8Mhz interner Takt für den Mega328 sind
(je nach Startup-Time) bspw.:
-U lfuse:w:0xd2:m -U hfuse:w:0xd9:m -U efuse:w:0xff:m
Diese Einstellung setzt den 328er auf 6CK/14CK +4.1ms nach einem
Spannungsanlegen oder Reset.
Aufruf von AVRDUDE in der Kommandozeile ist dann:
avrdude -c avrisp -p com3 -P atmega328p -B 10 -b 19200 -U lfuse:w:0xd2:m
-U hfuse:w:0xd9:m -U efuse:w:0xff:m
Danach läuft dein 328er eben mit 8Mhz. Allerdings bezweifle ich, dass
das ausreichend für WS2812 ist (abgesehen davon dass die Libraries -wie
oben gesagt- von Arduino für 16MHz ausgelegt ist und ganz speziell bei
WS2812 das Timing der LED's durch Zählen der Dauer von Prozessortakten
in Assembler ist).
Sei also eher gnädig - wenn du mit Arduino spielen willst - und
spendiere deinem ATmega einen Quarz und 2 Lastkondensatoren (27pF wären
hier gut).
Die WS2812 leuchten mitlerweile auch, allerdings nicht wirklich nach dem
Programm...ich habe eher das Gefühl, dass der PD0 noch auf Kommunikation
konfiguriert ist und nicht als DO.
Mike L. schrieb:> Processing -U lfuse:r:-:h> Reading lfuse memory ...> Writing 1 byte to output file <stdout>> 0xe2> Processing -U hfuse:r:-:h> Reading hfuse memory ...> Writing 1 byte to output file <stdout>> 0xda> Processing -U efuse:r:-:h> Reading efuse memory ...> Writing 1 byte to output file <stdout>> 0xfd
Diese Einstellung ist schon mal für 8MHz interner Takt. Wenn das Flashen
nicht immer funktioniert liegt das entweder an deiner Kabelverbindung
oder aber der ISP-Takt ist zu schnell. Den kannst du heruntersetzen
indem du ein -B 5 in der Parameterliste von AVRDUDE hinzufügst.
Mike L. schrieb:> Die WS2812 leuchten mitlerweile auch, allerdings nicht wirklich nach dem> Programm...ich habe eher das Gefühl, dass der PD0 noch auf Kommunikation> konfiguriert ist und nicht als DO.
Dein Mikrocontroller fühlt mit dir ... (und macht trotzdem nicht das,
was du willst!)
Wie gesagt, die Arduino-Lib ist für 16MHz ausgelegt und dann
funktioniert das ganze nicht so wirklich !
Außerdem seh ich gerade:
Mike L. schrieb:> C:\Users\Dell 7200\Downloads>avrdude -c arduino -p m328p -P COM4 -b> 19200 -v -U lfuse:r:-:h -U hfuse:r:-:h -U efuse:r:-:h> Avrdude version 8.0> Copyright see https://github.com/avrdudes/avrdude/blob/main/AUTHORS> System wide configuration file is C:\Users\Dell> 7200\Downloads\avrdude.conf> Using port : COM4> Using programmer : arduino> Setting baud rate : 19200> AVR part : ATmega328P> Programming modes : SPM, ISP, HVPP, debugWIRE> Programmer type : Arduino> Description : Arduino bootloader using STK500 v1 protocol> HW Version : 2> FW Version : 1.18> Topcard : Unknown
Du verwendest jetzt als Programmer wieder einen Bootloader????? Hast du
deinem Mega328 einen 19200 Bd Bootloader geflasht und programmierst den
Chip jetzt nicht mehr über avrisp (Firmware des UNO's als "Chefe")
sondern direkt über eine serielle Schnittstelle ?
Ralph S. schrieb:> Du verwendest jetzt als Programmer wieder einen Bootloader????? Hast du> deinem Mega328 einen 19200 Bd Bootloader geflasht und programmierst den> Chip jetzt nicht mehr über avrisp (Firmware des UNO's als "Chefe")> sondern direkt über eine serielle Schnittstelle ?
Ne nicht gewollt, ich übernehme das aus versehen manchmal.
Dennoch bleibt mein Hauptproblem, dass ich nicht verstehe, warum die
Übertragung über ISP eine Zeit lang funktioniert und dann wieder nicht -
ich glaube ich warte echt bis morgen der ISP Programmer ankommt.
Einen Bottloader brauche ich nicht, da das Programm eh nur ein mal drauf
kommt und da nixmehr verändert werden soll.
Aktuell ist wieder nixmehr...
Das kam jetzt nachdem ich die Fuses wie von dir beschrieben ändern
wollte - sobald ich dran gehe, übernimmt der das ein Mal und dann ist
nixmehr....vielleicht habe ich ja auch aus Versehen die Fuses vom UNO
geändert...
Arduino F. schrieb:> Das ist bei allen (mir bekannten) Arduino IDEs der Fall.
Das weiß ich wohl.
Ich nutze Arduino allerdings, wenn ich sonst keinen Weg sehe oder wenn
ich glaube, ein einfacher Test von <platzhalter> geht dmit schnell.
Ich bin da kein Fan von um es mal freundlich auszudrücken.
Sherlock 🕵🏽♂️ schrieb:> Was ist mit der Spannung? Auf die Frage bist du nicht eingegangen.>> Laut Schaltplan läuft dein Board mit 3,3V aber der Arduino0 Uno hat 5V> Pegel.
Ja, das stimmt - nicht optimal, da gab es verschiedene Meinungen
zu...bei manchen hat es funktioniert (die Eingänge können das wohl ab),
bei anderen nicht. Den Programmer der die Tage kommt, kann 3,3V und 5V,
dann sollte das Thema erledigt sein.
Ich kann ja aktuell garnix einschätzen, da zu viele Baustellen.
Wenn du deinem 3,3V Mikrocontroller gewaltsam 5V rein drückst, wird
seine Stromversorgung instabil. Mich wundert nicht, dass einer schon
nicht mehr ansprechbar ist.
Was man auch bedenken sollte:
Die ESD Schutzdioden (die in dem Fall wirksam werden) sollen laut einer
Application Note von Atmel nur mit weniger als 1 mA belastet werden.
Dein Arduino Uno liefert aber mehr als das 20 Fache!
Spannungsteiler könnten helfen.
Sherlock 🕵🏽♂️ schrieb:> Spannungsteiler könnten helfen.
Kurioserweise gibt der UNO laut Oszi und Multimeter auf den Pins 11 und
12 (MISO, MOSI) nur ca. 2,7V im Maximum aus. Beim Multimeter hätte ich
jedacht naja, nicht schnell genug...
Spannungsteiler mit ca. 3MOhm und 6MOhm brachte auch nix - da bin ich
mir aber unsicher, ob die nicht zu groß waren.
Wie dem auch sei, andere Ardunios kann ich mit dem UNO als ISP und dem
Tipp von Arduino F ansprechen.
Bei meinen beiden erhalte ich nur:
Das anlegen von einem 8MHz Signal am TOSC2 bringt keinen Unterschied
(falls ich aus Versehen Fuses verstellt habe).
Mal sehen ob es mit dem richtigen ISP mit 3,3V anders aussieht, aber ich
glaube ich bestelle mir schonmal ein paar neue...
Mike L. schrieb:> Spannungsteiler mit ca. 3MOhm und 6MOhm brachte auch nix - da bin ich> mir aber unsicher, ob die nicht zu groß waren.
Auf jeden Fall sind die zu groß. Rechne mal durch mit einigen 10 pF
kapazitiver Last, was du da für Signalverzögerungen bekommst.
Nimm 3 und 6 kΩ.
Mike L. schrieb:> Kurioserweise gibt der UNO laut Oszi und Multimeter auf den Pins 11 und> 12 (MISO, MOSI) nur ca. 2,7V im Maximum aus.
Das ist in der Tat kurios, deutet auf eine fehlerhafte Stromversorgung
hin. Damit sind alle mögliche Fehlfunktionen denkbar. Alleine der
USB-UART Chip braucht schon ungefähr 5V. Der AVR kommt mit weniger aus,
aber stabil sollte die Spannung schon sein. Das ist sie vermutlich
nicht, denn du hast schließlich kein 2,7V Netzteil verwendet (oder?).
Instabile Stromversorgung kann durchaus auch dazu führen, dass Fuses
falsch gesetzt werden.
Vermutung:
Dein Arduino Board ist kaputt, es hat gar keine eigene
Spannungsversorgung mehr. Stattdessen wird es parasitär über die USB
Signale oder die ISP Signale deines Targets versorgt. Beide haben 3,3V
Pegel. Diese fließen durch die ESD Schutzdioden (vom USB-Chip oder AVR
auf dem Uno Board) nach VDD. An den Dioden fallen 0,6V ab, bleiben noch
2,7V übrig.
So sind die ESD Schutzdioden im AVR geschaltet:
1
+--|>|------- VDD (soll 5V, ist 2,7V)
2
|
3
3,3V Signal -----+------------ Port vom µC
4
|
5
+--|<|------- GND
> Spannungsteiler mit ca. 3MOhm und 6MOhm brachte auch nix
Das muss viel niederohmiger sein. Zum Beispiel 220 und 470 Ohm an den
drei Signalen vom Uno zum Target. MISO (vom Target zum Uno) darf keinen
Spannungsteiler haben, war schon klar, oder?
1
220Ω
2
5V ---[===]---+---------- 3,4V
3
|
4
|~|
5
|_| 470Ω
6
|
7
GND
Zeige mal Fotos vom Aufbau.
Messe die Versorgungsspannung (5V) des Arduino Boardes ohne Target.
Schließe das Target an und messe die Versorgungsspannung erneut, dieses
mal vom Uno und vom Target.
Wenn du ein Oszilloskop hast, messe beide Versorgungsspannungen vor und
während des Programmiervorgangs, und zeige uns die Bilder.
Mike L. schrieb:> andere Ardunios kann ich mit dem UNO als ISP und dem> Tipp von Arduino F ansprechen.
Möglicherweise ist ja der "betrachtete Arduino" defekt? Lötstellen etc.
Den würde ich aussortieren und für kleines Geld 1 oder mehrere andere
kaufen.
Ah Sherlock war schneller ...
Neue ATMEGA328P eingelötet und es läuft. Was es war kann ich nicht sagen
-ab Werk defekt?, 3,3V/5V Problematik (obwohl es aktuell so auch
funktioniert), im Reflow zu heiß geworden?...
Die WS2812 lassen sich für meinen Fall mit 8MHz gut ansteuern - für
Videobilder o.ä. kanns wohl aber zu langsam sein - in der neuen Platine
plane ich zumindest einen Quarz ein und dann kann man nachträglich
immernoch hochrüsten falls nötig.
Hab zwar noch ein Problem mit dem I2C aber dafür gibts einen neuen
Thread.
Frohes Fest euch.