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
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
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
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ß
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!)
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
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
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.
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
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.
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 ?
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
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.
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
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
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?
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
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
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
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.
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
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?
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.
Ü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.
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
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.
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?