ATTiny13 nach einmal Flashen nicht mehr beschreibbar

Gast #3639673
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
Gast #3639748
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
Gast #3639959
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
Gast #3640000
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ß
#3640010
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!)
#3640049
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()
Gast #3640051
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
Gast #3640127
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
#3640133
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.
Gast #3640195
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
Gast #3640200
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.
#3640204
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
#3640212
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.
Gast #3640255
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
(Firma: Nisch-Aufzüge) Persönliche Seite #3640277
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
#3640305
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?
Gast #3640327
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
#3640374
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
Gast #3640441
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
Gast #3640480
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
Gast #3640529
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.
Gast #3640569
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
#3640775
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.
Gast #3640850
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
(Firma: Nisch-Aufzüge) Persönliche Seite #3641119
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.
Gast #3641618
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?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.