[Gelöst] Falsche Fuse gesetzt, Atmega328P nicht mehr ansprechbar

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

TomMajor
Beiträge: 1790
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 175 Mal
Danksagung erhalten: 399 Mal
Kontaktdaten:

Re: Falsche Fuse gesetzt, Atmega328P nicht mehr ansprechbar

Beitrag von TomMajor » 14.05.2021, 00:25

stony hat geschrieben:
13.05.2021, 22:25
Hier auch nochmal die AVRDude Log. Jetzt wo ich nochmal genauer drauf schaue, ob ich beim Erstellen ja völligen Blödsinn geschrieben. Die low fuse habe ich auf 0xE0 gesetzt. "Ext. Clock; Start-up time PWRDWN/RESET: 6 CK/14 CK + 65 ms; " -> sagt euch das was? Ist mein Projekt noch zu retten? Ich bin ziemlich neu und recht unerfahren in dem Thema.
Wenn die Fuse auf "Ext. Clock" steht nützt der 8MHz quarz nichts. Du brauchst dann einen externen Takt an pin XTAL1.
Also entweder der erwähnte Takt-Out vom Diamex oder irgendwas anderes was zwischen 100kHz? und 8MHz schwingt - mit dem gleichem Spannungspegel mit dem auch der AVR betrieben wird.
z.B. eine Schaltung mit einem 555 oder irgendwas anderes was einen sauberen digitalen Takt hat.
http://www.learningaboutelectronics.com ... ircuit.php
Damit solltest du wieder auf den chip draufkommen und die Fuse ändern können.
Viele Grüße,
Tom

HMSteve
Beiträge: 537
Registriert: 20.08.2019, 06:23
Hat sich bedankt: 13 Mal
Danksagung erhalten: 95 Mal

Re: Falsche Fuse gesetzt, Atmega328P nicht mehr ansprechbar

Beitrag von HMSteve » 14.05.2021, 07:01

TomMajor hat geschrieben:
14.05.2021, 00:25
oder irgendwas anderes was einen sauberen digitalen Takt hat.
Falls Du keinen 555 etc, aber noch eine funktionierende Schaltung mit nen ATMega, z.B. einen Arduino, rumliegen hast, kannst Du auch deren clock an Pin PB0 abgreifen und XTAL1 des Patienten anschliessen, nachdem Du (vorsichtig :mrgreen: ) in der LFuse das CKOut-Bit auf 0 gesetzt hast. Im Standardfall mit angeschlossenem 8MHz Quarz waere dann LFuse=BFh.

Viele Gruesse,
Stephan

stony
Beiträge: 49
Registriert: 25.12.2014, 12:49
Hat sich bedankt: 6 Mal

Re: Falsche Fuse gesetzt, Atmega328P nicht mehr ansprechbar

Beitrag von stony » 14.05.2021, 17:45

TomMajor hat geschrieben:
14.05.2021, 00:25
Wenn die Fuse auf "Ext. Clock" steht nützt der 8MHz quarz nichts. Du brauchst dann einen externen Takt an pin XTAL1.
Also entweder der erwähnte Takt-Out vom Diamex oder irgendwas anderes was zwischen 100kHz? und 8MHz schwingt - mit dem gleichem Spannungspegel mit dem auch der AVR betrieben wird.
z.B. eine Schaltung mit einem 555 oder irgendwas anderes was einen sauberen digitalen Takt hat.
http://www.learningaboutelectronics.com ... ircuit.php
Damit solltest du wieder auf den chip draufkommen und die Fuse ändern können.
Super Hinweis, vielen Dank! :)
HMSteve hat geschrieben:
14.05.2021, 07:01
TomMajor hat geschrieben:
14.05.2021, 00:25
oder irgendwas anderes was einen sauberen digitalen Takt hat.
Falls Du keinen 555 etc, aber noch eine funktionierende Schaltung mit nen ATMega, z.B. einen Arduino, rumliegen hast, kannst Du auch deren clock an Pin PB0 abgreifen und XTAL1 des Patienten anschliessen, nachdem Du (vorsichtig :mrgreen: ) in der LFuse das CKOut-Bit auf 0 gesetzt hast. Im Standardfall mit angeschlossenem 8MHz Quarz waere dann LFuse=BFh.

Viele Gruesse,
Stephan
Ja, ich habe zumindest einen Arduino UNO hier und auch noch 2 Logik Wandler, um das Signal auf 3,3 V zu regeln. Also was genau muss ich an der LFuse vom Arduino Uno (oder meinst du später beim "Nano Patienten") für eine 0x?? Fuse setzen? Das mit LFuse=BFh verstehe ich gerade nicht, bin aber lernwillig :)

Ist das hier der "gute" Diamex mit 3,3 V SPI Spannung und externem Takt per PIN? https://www.diamex.de/dxshop/USB-ISP-Pr ... -Atmel-AVR

Benutzeravatar
stan23
Beiträge: 2028
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 576 Mal
Danksagung erhalten: 335 Mal
Kontaktdaten:

Re: Falsche Fuse gesetzt, Atmega328P nicht mehr ansprechbar

Beitrag von stan23 » 14.05.2021, 18:13

stony hat geschrieben:
14.05.2021, 17:45
Ist das hier der "gute" Diamex mit 3,3 V SPI Spannung und externem Takt per PIN? https://www.diamex.de/dxshop/USB-ISP-Pr ... -Atmel-AVR
Ja, laut Anleitung Seite 2 kann der an Pin 3 den Takt ausgeben.
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

TomMajor
Beiträge: 1790
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 175 Mal
Danksagung erhalten: 399 Mal
Kontaktdaten:

Re: Falsche Fuse gesetzt, Atmega328P nicht mehr ansprechbar

Beitrag von TomMajor » 14.05.2021, 18:58

stony hat geschrieben:
14.05.2021, 17:45

Ja, ich habe zumindest einen Arduino UNO hier und auch noch 2 Logik Wandler, um das Signal auf 3,3 V zu regeln. Also was genau muss ich an der LFuse vom Arduino Uno (oder meinst du später beim "Nano Patienten") für eine 0x?? Fuse setzen? Das mit LFuse=BFh verstehe ich gerade nicht, bin aber lernwillig :)
Lies die LFuse beim Uno aus, gib den Wert beim AVR Fuse Calculator ein, Device ATmega328P, setze dann die CheckBox "Clock output on PORTB0; [CKOUT=0]", damit ändert sich der LFuse Wert, programmiere diesen Wert im Uno.
Danach sollte der Uno 8MHz mit 5V an pin 8 (PB0) ausgeben.
Diesen Clock über levelshifter auf den Patienten an XTAL1 geben und erneut versuchen zu programmieren.
Viele Grüße,
Tom

stony
Beiträge: 49
Registriert: 25.12.2014, 12:49
Hat sich bedankt: 6 Mal

Re: Falsche Fuse gesetzt, Atmega328P nicht mehr ansprechbar

Beitrag von stony » 14.05.2021, 20:57

TomMajor hat geschrieben:
14.05.2021, 18:58
stony hat geschrieben:
14.05.2021, 17:45

Ja, ich habe zumindest einen Arduino UNO hier und auch noch 2 Logik Wandler, um das Signal auf 3,3 V zu regeln. Also was genau muss ich an der LFuse vom Arduino Uno (oder meinst du später beim "Nano Patienten") für eine 0x?? Fuse setzen? Das mit LFuse=BFh verstehe ich gerade nicht, bin aber lernwillig :)
Lies die LFuse beim Uno aus, gib den Wert beim AVR Fuse Calculator ein, Device ATmega328P, setze dann die CheckBox "Clock output on PORTB0; [CKOUT=0]", damit ändert sich der LFuse Wert, programmiere diesen Wert im Uno.
Danach sollte der Uno 8MHz mit 5V an pin 8 (PB0) ausgeben.
Diesen Clock über levelshifter auf den Patienten an XTAL1 geben und erneut versuchen zu programmieren.
Ich habe einen Code gefunden, der an PIN 9 ein 8 MHz clock ausgeben soll: https://forum.arduino.cc/t/arduino-1-mh ... put/415947

Und gleichzeitig muss ich an meiner persönlichen Zurechnung zweifeln. Da mein Level Shifter nur 4 Signale (also 6 Pins, 4 Signale, Ground und VCC) wandeln kann, wollte ich meinen 2. nehmen. Habe 3 Stück bestellt und finde beide nicht.

habe mir also überlegt die Reset Leitung vom HM Sensor abziehen und das 8 MHz signal darüber zu shiften. Die LED vom HM Sensor blinkt wieder. So ca. 7-8x schnell hintereinander. Ich dachte mir, dass ich evtl. durch manuelles Drücken des Reset Buttons wieder mit dem HM Sensor reden kann. Leider nein :(

Ich befürchte also, dass der Reset am ISP Programmer bleiben muss. Tja nur habe ich ohne den 2. Level Shifter wohl aktuell pech. Oder kann ich die MCU mit "manuellem Reset Button drücken" zur Kommunikation überreden?

HMSteve
Beiträge: 537
Registriert: 20.08.2019, 06:23
Hat sich bedankt: 13 Mal
Danksagung erhalten: 95 Mal

Re: Falsche Fuse gesetzt, Atmega328P nicht mehr ansprechbar

Beitrag von HMSteve » 14.05.2021, 22:02

stony hat geschrieben:
14.05.2021, 20:57
habe mir also überlegt die Reset Leitung vom HM Sensor abziehen und das 8 MHz signal darüber zu shiften. Die LED vom HM Sensor blinkt wieder. So ca. 7-8x schnell hintereinander.
Hat die LED des Patienten waehrend des Anliegens des externen Taktes geblinkt? Sonst wuerde das jetzt gar keinen Sinn ergeben.
Falls ja: Statt aufwendigen level shifters geht fuer den Takteingang auch ein einfacher Spannungsteiler mit ein paar kOhm, Reset wieder anschliessen und versuchen, mit sem ISP dranzukommen.

stony
Beiträge: 49
Registriert: 25.12.2014, 12:49
Hat sich bedankt: 6 Mal

Re: Falsche Fuse gesetzt, Atmega328P nicht mehr ansprechbar

Beitrag von stony » 15.05.2021, 10:13

HMSteve hat geschrieben:
14.05.2021, 22:02
Hat die LED des Patienten waehrend des Anliegens des externen Taktes geblinkt? Sonst wuerde das jetzt gar keinen Sinn ergeben.
Falls ja: Statt aufwendigen level shifters geht fuer den Takteingang auch ein einfacher Spannungsteiler mit ein paar kOhm, Reset wieder anschliessen und versuchen, mit sem ISP dranzukommen.
Ja, die LED hat geblinkt. Perfekt, das war letzte fehlende Puzzlestück.

Der Patient lebt!!! Vielen Dank an euch alle, ihr seid die besten! Wirklich, ich freue mich gerade so sehr! :)

Was habe ich gemacht? Da mein DS138 nur eine maximale Abtastrate von 1 MHz hat, konnte ich nicht genau verifizieren ob der Arduino nun einen 8 MHz Clock erzeugt. Mein Logic Analyzer (zumindest fand ich in Pulseview dafür keine Option) konnte mir zwar auch nicht anzeigen wieviel MHz erzeugt werden, aber mit 20 MSP Auflösung konnte ich halt viel "ein/aus" sehen.

Also habe ich mir einen 5 V auf 3,3 V Spannungswandler geschnappt. Da dieser nicht schnell genug schaltet, wurde das saubere Clock Signal ziemlich "zerstückelt" (auch sichtbar im Logic Analyzer). Also dachte ich hier erst an aufgeben. Durch HMSteve ermutigt habe ich trotzdem mal der "zerstückelte" Clock Signal an XTAL1 angeschlossen. Reset wieder an Reset vom Programmer. Und ich konnte tatsächlich die Fuses vom Chip auslesen. Diese habe ich gemäß der Anleitung gesetzt.

Da ich keine Pins für die serielle Schnittstelle angelötet habe, habe ich als nächstes in der Arduino IDE den Frequenztest in einer .hex Datei kompilieren lassen und diese aufgespielt. Nachdem die LED aufgehört hat zu blinken (hier musste ich natürlich hoffen, dass alles klappt, dann ohne Debugausgabe ist das nicht so einfach) den HM-PBI-4-FM Sketch von Jerome auch als .hex aufgespielt und danach einfach mal versucht das Gerät an der CCU anzumelden. Und es hat geklappt! Aktuell ist noch alle zum Test auf eine Breadboard, aber ich konnte sogar den Taster direkt mit meiner Deckenlampe verknüpfen und steuern :)
Dateianhänge
PXL_20210515_081500856.jpg

Benutzeravatar
stan23
Beiträge: 2028
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 576 Mal
Danksagung erhalten: 335 Mal
Kontaktdaten:

Re: [Gelöst] Falsche Fuse gesetzt, Atmega328P nicht mehr ansprechbar

Beitrag von stan23 » 15.05.2021, 13:47

Prima!

1 MHz Takt wäre auch okay gewesen, es muss nur einen Faktor schneller sein als der Takt des Programmers.
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

didik1968
Beiträge: 65
Registriert: 16.05.2018, 17:07
Hat sich bedankt: 1 Mal

Re: [Gelöst] Falsche Fuse gesetzt, Atmega328P nicht mehr ansprechbar

Beitrag von didik1968 » 01.09.2022, 13:50

Hallo,
ich hab bei meinem HMSensor-CR2032
aus versehen auch das Fuse-Bit für "Ext. Clock" gesetzt.
jp112sdl hat geschrieben:
13.05.2021, 21:53
Welchen Programmer nutzt du denn?
Der Diamex Prog-S2 hat einen Taktgeber, mit dem man sich aus versehentlich gesetztem ext. Takt wieder retten kann.
Da ich den beschriebenen Diamex habe hab ich Pin 3 mit pin XTAL1 verbunden und versucht mit Atmel Studio 7 die Fuses zu ändern.
Funktioniert aber leider nicht.
Auch mit AVRDudess bekomme ich keine Verbindung.
Diamex schreibt in der Anleitung
"Die Taktfrequenz kann mit ATMEL-Studio über die Funktion „Board-Setting – Clock Generator“ eingestellt werden."
Hab schon verschiedene Frequenzen ausprobiert.
Leider keinen Erfolg.
Hat noch jemand eine Idee?
Oder gibt es noch eine Einstellung die gemacht werden muss?

Danke schonmal

Gruß Dieter

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“