Forum: Mikrocontroller und Digitale Elektronik ATTiny13 nach einmal Flashen nicht mehr beschreibbar


von sonicfan (Gast)


Lesenswert?

Hallo an alle,

nachdem ich in LunaAVR meinen ATTiny 13 programmiert habe, wird er von 
AVRDude nicht mehr erkannt.

Folgend fängt mein Programm an:
avr.device = attiny13
avr.stack = 7

SoftUart.PinRXD = PortB.1
SoftUart.PinTXD = PortB.2
SoftUart.Baud = 1200
#define Oscillator as PortB.4
Oscillator = 1
Oscillator.mode = output,high
#define LED as PortB.3
LED = 1
LED.mode = output,high

Der uC macht, was er bis dahin machen soll, allerdings lässt er sich 
nicht mehr erkennen, garnichts. Dabei bin ich noch garnicht fertig ;-). 
Ein zweiter hat sich genau so verhalten. Es wird kein externer Quarz 
benutzt.

Als Programmer nutze ich diesen hier: 
http://www.simpleavr.com/avr/vusbtiny
Liegt es vielleicht daran?

Ich bedanke mich für eure Zeit und Antworten.

Gruß
sonicfan

von holger (Gast)


Lesenswert?

Hast du an den Fuses herumgespielt?

von sonicfan (Gast)


Lesenswert?

Hallo Holger,

nein, das Ding tut wie gesagt ohne Quarz. Habe mit einem HV-Programmer 
die Fuses auf Urzustand gesetzt, trotzdem komme ich nicht drauf.

Gruß
sonicfan

von g457 (Gast)


Lesenswert?

> Habe mit einem HV-Programmer die Fuses auf Urzustand gesetztf

Wie sind die Fuses denn jetzt ∗genau∗?

von sonicfan (Gast)


Lesenswert?

Hallo nochmal,

die Fuses sind auf Standardwerten. Ich sagte ja bereits, der bisherige 
Programmablauf tut auch. Ich habe noch was dazu gemacht und kann den 
Chip nicht mehr erkennen.

Gruß
sonicfan

von toralf (Gast)


Lesenswert?

In vielen "Fällen" sind abgerissene Programmerleitungen, Kurzschlüsse 
zwischen den Drähten oder defekte Lötstellen, die beim Bewegen der 
Schaltung entstehen, die Hauptursache solchen Verhaltens.
Gruß

von Peter R. (pnu)


Lesenswert?

Die Signatur des Chips per ISP zu lesen erfordert nicht nur, dass der 
atiny13 betriebsfähig ist, sondern auch, dass die ISP-Signale zwischen 
atiny und progger ungestört ausgetauscht werden können.

Zunächst mal sollte man die Leitungen der ISP-Schnittstelle 
(B0,B1,B2,B5) beim Leseversuch der Signatur von Fremdbeschaltung 
freihalten.

Wegen der Zeilen mit "UART"  und "LED" im Programm vermute ich, dass das 
nicht der Fall ist. (Schaltbild zeigen!)

von Peter D. (peda)


Lesenswert?

sonicfan schrieb:
> Habe mit einem HV-Programmer
> die Fuses auf Urzustand gesetzt

Und der HV-Programmer konnte ihn erkennen, d.h. die Signatur stimmte?

von Uwe (de0508)


Lesenswert?

Zum Programm, es enthält Fehler.
Hier ist eine korrigierte Version
1
avr.clock = 1000000
2
avr.device = attiny13
3
avr.stack = 8
4
5
#if 0 ' unbenutzt
6
SoftUart.PinRXD = PortB.1
7
SoftUart.PinTXD = PortB.2
8
SoftUart.Baud = 1200
9
#endif
10
11
#define Oscillator as PortB.4
12
13
Oscillator.mode = output,high
14
15
#define LED as PortB.3
16
LED.mode = output,high
17
18
halt()

von sonicfan (Gast)


Lesenswert?

Hallo an alle,

ich programmiere das Ding innerhalb des oben gezeigten Programmers, also 
nicht in der Schaltung, sondern komplett frei davon.

Ob der HV-Programmer es retten konnte kann ich nur beurteilen, da ich 
einen verfust hatte. Den hab ich dann auf Standard gesetzt, mit meinem 
Hex bebrannt. Der Code läuft dann, aber drauf komme ich nicht mehr.

Als Fuse-Resetter habe ich das hier verwendet: 
http://www.simpleavr.com/avr/hvsp-fuse-resetter
Das hat funktioniert.

Ich verstehe absolut nicht was das Verhalten soll... liegts daran dass 
ich noch keine Oszillatorfrequenz definiert habe? Einen habe ich noch 
da, aber den will ich nicht auch noch verballern.

Gruß
sonicfan

von sonicfan (Gast)


Lesenswert?

Uwe S. schrieb:
> Zum Programm, es enthält Fehler.

Hallo Uwe,

inwiefern wirken sich diese Portbelegungen auf meine Problemstellung 
aus? Das SoftUART wird später im Programmcode noch genutzt, es folgt auf 
diese Initialisierungen eine do Loop.

Gruß von
sonicfan

von Uwe (de0508)


Lesenswert?

Hallo sonicfan,

dann solltest Du uns den realen Code zeigen.

Ich sehe, wie die anderen auch, sonst keiner Probleme.

Mit einem Reset muss der attiny per ISP erreichbar sein.

Evtl. ist dein Programmer mit seiner Versorgungsspannung das Problem.

von sonicfan (Gast)


Lesenswert?

Hallo Uwe,
anbei der bislang unverändert auf dem Prozessor laufende Code. Es 
funktioniert auch soweit. Mit später bezüglich des SoftUART meinte ich, 
dass ich genau darauf nun eingehen wollte, aber nicht mehr flashen kann.

Gruß & Danke
sonicfan


avr.device = attiny13
avr.stack = 7

SoftUart.PinRXD = PortB.1
SoftUart.PinTXD = PortB.2
SoftUart.Baud = 1200
#define Oscillator as PortB.4
Oscillator = 1
Oscillator.mode = output,high
#define LED as PortB.3
LED = 1
LED.mode = output,high

Dim Dit as Int8
Dit = 13

Dim Morse as Long
Dim MO as Boolean
Dim Length as Int8
MO = true
Morse = 1033
Length = 4

Dim I as Int8
Dim Temp as Long

Dim Waittime as UInt16
Waittime = 0
Dim J as UInt16
For J=0 to Waittime
   wait 1
Next

do
   if MO then
      Key(2, true)
      Key(3, true)
   end if

   Temp = Morse
   For I=0 to Length - 1
      if not Temp mod 10 = 0 then
         if I mod 2 = 0 then
            Key(Temp mod 10, true)
         else
            Key(Temp mod 10, false)
         end if
      end if
      Temp = Temp / 10
   Next
   waitms Dit * 4
loop


procedure Key(times as Int8, stroke as boolean)
Dim i as Int8
For i=1 to times
   Oscillator.toggle
   LED.toggle
   waitms Dit
   if stroke then
      waitms Dit * 2
   endif
   Oscillator.toggle
   LED.toggle
   waitms Dit
Next
waitms Dit * 2
endproc

von stefanus (Gast)


Lesenswert?

Hast du einen Kondensator am Reset Pin? Wenn ja, wie groß? Manche 
Programmer können große Kondensatoren nicht schnell genug entladen. In 
diesen Fall hilft es, den Reset Pin mittels Taster oder Brücke dauerhaft 
zu aktivieren.

von Uwe (de0508)


Lesenswert?

Danke schön.

eine CW Coder - nett habe ich auch mal veröffentlicht.

einige Dinge sind unschön und evtl. so nicht gewollt.

Variable von Typ int8 diese sind mit 8 Bit Vorzeichen, ist dir das 
bewusst ?

Wie lange läuft diese Schleife ?
1
For J=0 to Waittime
2
   wait 1
3
Next

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

wenn du den Reset_Pin umschaltest und als IO nutzt ist die ISP nicht 
mehr erreichbar siehe Datenblatt dann geht nur mehr JTag wenn du den 
auch ausschaltest bist du draußen! for ever

von Uwe (de0508)


Lesenswert?

Winfried J. schrieb:
> wenn du den Reset_Pin umschaltest und als IO nutzt ist die ISP nicht
> mehr erreichbar siehe Datenblatt dann geht nur mehr JTag wenn du den
> auch ausschaltest bist du draußen! for ever

JTag bei einem attiny13 - geht'S noch ?

PB5 wird doch gar nicht angefasst, also am Ziel vorbei geraten.

von Uwe (de0508)


Lesenswert?

Hallo,

wie stefanus schon vermutet kann es an der Außenbeschaltung des attiny 
liegen.

Zeig uns bitte einige Bilder vom realen Aufbau.

von sonicfan (Gast)


Lesenswert?

Hallo Uwe - ich programmiere das Teil direkt in dem oben gezeigten 
Programmer. Der Schaltplan ist auf der Webseite gezeigt, direkt dort 
habe ich den AVR angeschlossen ohne weitere Periepherie. Reichen die 5V 
USB nicht? Liegt es nicht oben an der fehlenden Oszillatorangabe.
Die Schleife am Anfang soll mittels UART in den EEProm gespeichert 
werden können. Noch bin ich nicht soweit. Das dient als Vorlauf, bis der 
Sender anfängt zu senden.
Bitte sieh dir kurz den Link oben zu dem Programmer an.

Winfried:
Wenn man den Threadverlauf liest, wird man lesen können, dass ich einen 
Fuse Resetter habe, mit dem ich jedes mal, wenn ich den RST als IO 
nutze, diesen zurücksetzen kann. Soviel kannst du mir zutrauen ;-) .

Gruß
sonicfan

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

Sorry,

sich aussperren und nicht  wissen wie wieder reinkommen ist 
üblicherweise eine Anfängernummer.

verzeih das ich den Floß übersprungen habe zumal du zum gegenwärtigen 
zustand derFuse nur wage sags du habest sie in  den Standardzustand 
gebraucht. peters frage hingegen hast du nicht beantwortet.

Für eine nicht funktionierende ISP gibt es außer HW_Problemen und 
Fuse_Problemen sonst nur noch Taktprobleme als mögliche Ursachen.


Wenn du so toll bist habe ich fertig.

Namaste

: Bearbeitet durch User
von Klaus I. (klauspi)


Lesenswert?

sonicfan schrieb:
> funktioniert auch soweit. Mit später bezüglich des SoftUART meinte ich,
> dass ich genau darauf nun eingehen wollte, aber nicht mehr flashen kann.

Was meinst Du damit im Detail, gibt es vielleicht Fehlermeldungen usw. 
Den Hinweis von stefanus hast Du gelesen?

Zeig uns Bilder vom Deinem realen Aufbau und keinen Link.

> #define Oscillator as PortB.4
> Oscillator = 1
> Oscillator.mode = output,high
> #define LED as PortB.3
> LED = 1
> LED.mode = output,high

Sollt man hier nicht zuerst konfigurieren bevor man einem Wert zuweist 
oder übersiche ich da etwas. IMHO kannst Du Dir die Zeilen mit LED = 1 
sparen. Aber dieser Code läuft ja?

von sonicfan (Gast)


Lesenswert?

Hallo Klaus,

die Hinweise mit dem Kondensator habe ich gelesen - ich habe sogar schon 
per Kabelbrücke den RST auf GND gezogen vor dem Flashvorgang. Tut 
trotzdem nicht.

Meine Programmer habe ich 1:1 nach dem Schaltplan aus dem Link 
aufgebaut. Ich habe ihn auf Lochraster und damit unten nichts kaputt 
geht mit Epoxid eingegossen - darum kann ich selbst nichts vorweisen. 
Bitte entschuldigt dies.

Gruß
sonicfan

von sonicfan (Gast)


Lesenswert?

EDIT:
Ja Klaus, der Code läuft.

von Uwe (de0508)


Lesenswert?

Hallo,
1
#define LED as PortB.3
2
LED = 1
3
LED.mode = output,high

setzt den Pullup des Eingangs von PortB3 und wird dann auf Ausgang 
geschaltet und das Bit B3 gesetzt.

Siehe Datenblatt des atTiny13 S.50f
10.2.3 Switching Between Input and Output

von sonicfan (Gast)


Lesenswert?

Hallo an alle,

also ich habe eine 5V Spannungsquelle versucht und auch RST auf 
dauerhaft GND. Der AVR lässt sich nicht ansprechen. Ein frischer AVR 
wird anstandslos gefunden. Was kann das sein? Die Fuses kann ich 
ausschließen.

Gruß
sonicfan

von Klaus I. (klauspi)


Lesenswert?

Klaus I. schrieb:
> Was meinst Du damit im Detail, gibt es vielleicht Fehlermeldungen usw.

von sonicfan (Gast)


Lesenswert?

Hallo Klaus,

sorry, überlesen bzw irgendwie vergessen.

rc=-1
Double Check Connections and try again.

Gehe drauf mit avrdude -c usbtiny -p t13

Die -B Option habe ich mit 10, 20, 60 usw. schon versucht. Ändert 
nichts.

Gruß
sonicfan

von Uwe (Gast)


Lesenswert?

Hallo sonicfan,

dein avrdude Aufruf ist nicht vollständig, der Programmer und der Port/ 
Zugriff auf diesen muss angegeben werden. Erst jetzt ist die 
Geschwindigkeit auf max. 250kHz zu setzen.

von sonicfan (Gast)


Lesenswert?

Hallo Uwe,

mit -B 32 habe ich leider keinen Erfolg - fehlt sonst noch was? Habe 
jetzt den letzten angebrochen und mal alle fragwürdigen Codezeilen 
entfernt - an irgendwas muss es ja liegen!

Gruß
sonicfan

von Uwe S. (Gast)


Lesenswert?

Hallo,

Du bist ja WinOS User, diese Programme geben Dir auf der Commandozeile 
ihre Parameter preis.

Aber auch im Netz findet man sie, evtl. nicht hast Du eine andere 
Version.

http://www.nongnu.org/avrdude/user-manual/avrdude_4.html

Dann Vergleiche das mit den von mir benannten fehlenden Parametern.

OK?

von Klaus I. (klauspi)


Lesenswert?

Mangels Bilder noch ein paar Schüsse ins Blaue:
Sitzt Du den Attiny13 direkt auf den Attiny45 des Programmers? Die Pins 
nach Anleitung isoliert? Spendier dem Teil noch einen richtigen 
Abblockkondensator 100nF DIREKT an den Pins VCC und GND.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Übrigens hat der interne RC-Oszillator des ATTiny 13 eine Grundfrequenz 
von 9,6MHz und nicht 8MHz. Da die CLKDIV8 Fuse im Grundzustand gesetzt 
ist, bleibt ein Systemtakt von 1,2MHz.

von sonicfan (Gast)


Lesenswert?

Hallo und guten Morgen,

ich habe mir eine extra Platine gelötet für alle möglichen Größen, die 
ich über das Kabel anschließe. Ich habe es jetzt geschafft, die zwei 
ausgesperrten ATTiny wiederzubeleben. Dazu habe ich nochmal die Brücke 
von GND nach RST gemacht. Wenn ich den Programmer einstecke, geht es so 
an die 10 Sekunden, dass ich Zugriff habe, danach erstmal nicht mehr und 
dann nur ganz sporadisch.

Keine Ahnung ob es an meinem Programm liegt, aber damit kann ich leben. 
Die Sache mit dem Abblockkondensator werde ich berücksichtigen.

Vielen Dank für eure Vorschläge und Hilfen
sonicfan

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

Das klingt schwer nach Deaktivierung des Reset_Pins zur Laufzeit
bei Powerup ist dann wieder Alles normal. Könnte ein Fehler auf dem 
Stack sein der zum Überlauf und damit unbestimmten Programmablauf führt. 
Eventuell
werden SFR überschrieben oder MCU Kontrollbits da würde ich mal das 
Hexfile aus einem solchen ATiny13 hohlen um es durch den AVR Studio 
Simulator.
das scheint ja eine Wundertüte zu sein. oder mal gleich das Hexfile 
durch den Simulator laufen lassen. Da kann man im Einzelschritt den Bits 
in den Registern bei der Arbeit zusehen oder auch mal etwas Vorspulen. 
Wenn der Fehler am Simulator reproduzierbar ist, dann ist der Hund im 
Programm sonst in der HW oder dem Programmiertiming zu suchen.

Was passiert wenn du den Rest dauerhaft auf low legst ( Reset gedrückt 
halten / Resetpin nicht in die Programmierfassung stecken und mit direkt 
GND verbinden)? Dann sollte das Programm nicht starten können und du 
endlos Zeit haben da der Programmiermodus nicht verlassen werden kann.

von stefanus (Gast)


Lesenswert?

Den Reset-Pin kann man auchfach mit Gnd verbinden, während der 
Programmer angeschlossen ist, denn die entsprechende Leitung des 
Programmer ist Open-Collector (zumindest sollte es so sein).

Ansonsten: Kurzschluss an einem einzelnen Pin schadet keinem AVR. Der 
Programmer besteht doch aus einem AVR, oder nicht?

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
Noch kein Account? Hier anmelden.