Ich habe ein Notebook / Windows 7.32 / so einen billigen China USB-ISP Programmer / AVR-Studio 4 Extreme Burner einige Tiny13A. Das Alles funktioniert soweit auch wunderbar, aber... Flashe ich mein fehlerfreies Programm mit Extreme Burner in den Tiny zeigt er mir zwar keine Fehlermeldungen an, beim Auslesen des Tiny wird mein Pogramm aber um genau 32 Byte versetzt im Speicher angezeigt. Dies muss wohl nahe an der Wahrheit sein, denn... Ein superkleines Testprogramm (setzt in einer Endlosschleife alle Pins auf High und Low) funktioniert einwandfrei (Multimeter zeigt 2,2 V an). Speise ich ein Programm ein, dass nur wenige Byte größer ist gehen alles Pins auf Low und nichts regt sich mehr (habe viele Variationen ausprobiert). Alle Programme, die ich einspeise, werden vom AVR-Studio 4 als fehlerfrei angezeigt. Mit den Befehlen selbst und wie sie angeordnet sind scheint weder AVR-Studio-4 noch der Tiny13a Probleme zu haben (werden ohne Fehlermeldung verarbeitet). Dieser China-USB-ISP-Programmer gefällt mir, weil er USB hat, superklein und leicht verständlich ist. Möchte diesen weiternutzen. Extreme-Burner nutzer ich, weil ich hier nur auf Flashen drücken muss und das Programm alle notwendien Einstellungen von selbst macht. Ich hatte auch andere Programme ausprobiert, die aber auch einen Fehler beim Programmabgleich angezeigt haben. Die Tinys sind alle im Auslieferungszustand. Ich gebe nur mein Programm in den Flash-Speicher, sonnst nichts. Im Internet habe ich gelesen, dass wohl auch einige Andere haargenau das gleiche Problem haben, wie ich. Ich habe nur keine Lösung dafür gefunden. Kann jemand was dazu sagen? Grüße
Gast
#3530679
Hi
>Kann jemand was dazu sagen?
Poste mal das ausgelesene Hex-File.
MfG Spess
Das ausgelesene Hex-File habe ich grade leider nicht zur Hand. Ich habe es aber haarklein nachgeprüft. Es ist fehlerfrei mein Programm. Es ist im Ausgelesenem Hex-File nur um genau 16 Byte nach hinten versetzt. Nachtrag: Es sieht ungefähr so aus: 00000000 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 00000010 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF Ab 00000020 finde ich Byte für Byte mein Programm. Grüße
Marcel Kmiec schrieb: > um genau 32 Byte versetzt Marcel Kmiec schrieb: > um genau 16 Byte nach hinten versetzt Was denn nun?
Gast
#3531960
Das Programm ist um 32 Bytes (oder wieviel auch immer) versetzt. Das ist eine Feststellung, die erst mal garnix sagt. - In welche Richtung versetzt? - Läuft das Programm fehlerfrei? - ??? Könnte es sein, dass die Interrupt-Sprung-Tabelle einfach um die hinteren (ungenutzten) Sprünge verkürzt wurde? Wäre doch eine sinnvolle Optimierung...
Gast
#3532011
>Ich habe nur keine Lösung dafür >gefunden. Dann schmeiss die die Möhre weg. Es lohnt sich nicht sich wegen 5 Euro zu ärgern.
Gast
#3532019
Ich hatte mal was ähnliches mit einem Equinox Programmer. Beim programmieren war der EEprom auch versetzt. Es war auf Auto gestellt. Dann hab ich manuell den Startpunkt eingestellt. Sieh mal, ob du manuell einstellen kannst.
Gast
#3532065
Das Pogramm ist um 32 Byte versetzt. Ich hatte mich nur verzählt und konnte die 16 nicht mehr auf 32 ändern. Interrupts habe ich in den Testprogrammen nicht verwendet. Nur Schleifen, DDRB, PORTB und com bzw eor Befehle. Wir gesagt gebe ich nur wenige dieser Befehle ein funktioniert es (obwohl auch versetzt). Nur bei ein paar Befehlen mehr muckt es. Und nach den schlauen Antworten jetzt zur ernstgemeinten: Ich habe leider weder im Avr-Studio noch im Extrem-Burner eine Möglichkeit gefunden einen Startpunkt zu setzen. Der Extrem-Burner gibt bei der Verification aber auch einen Fehler aus. Dies sollte er denke ich aber nicht tun, wenn er der Meinung ist alles richtig gemacht zu haben. Ich glaube ehr das ist ein Problem an der Schnittstelle selber. Grüße
Gast
#3532084
Hat Dir da möglicherweise jemand eine leere Interrupttabelle untergejubelt? Normalerweise beginnen nur die Hardcore-Programmierer bei null.
Wenn das Programm läuft, dann steht es vermutlich richtig im Flash und entweder beim Auslesen oder beim Abspeichern ist was kaputt. Extreme Burner ... nie gehört. Klingt aber nicht vertrauenerweckend. Und Programmen die angeblich alles automatisch machen, traue ich nicht weiter als ich den Datenträger werfen kann. Probier halt mal ein anderes Flash-Tool und/oder einen anderen Programmer. Wobei es unwahrscheinlich ist, daß es an letzterem liegt. XL
Gast
#3532130
An seinem Programm oder dem Programmer liegt es nicht. Dachte ich. Aber ich hab noch mal gelesen. Marcel Kmiec schrieb: > Speise ich ein Programm ein, dass nur wenige Byte größer ist gehen alles > Pins auf Low und nichts regt sich mehr (habe viele Variationen > ausprobiert). Es muß im Programm selber ein Offset sein. Oder beim Programmieren des Chip.
Ein SW-Bug entweder im Programmer oder im Burner oder beide vertragen sich nicht. Daß Störungen auf dem SPI eine Addition durchführen können, halte ich für extrem unwarscheinlich.
Gast
#3532444
Mal einen anderen Chip auslesen, wo man weiß, was und wo drauf ist.
Als erstes muss mal das 'Stochern im Nebel' abgestellt werden. Es muss her: Das HEX-File, so wie es von der Entwicklungsumgebung kommt und in den Tiny gebrannt wird Das HEX-File, welches vom Tiny zurückgelesen wird. Diesen Versatz möchte ich in den beiden HEX-Files verifizieren können. Denn im Zweifel vertaue ich den Programmierern des Burner mehr, als einem Neuling, der in jedem 3.ten Satz betont, dass sein Programm fehlerfrei ist. Bei einem Neuling kann es schon sein, dass er ein HEX-File falsch liest, weil er nicht bedacht hat, dass nur weil ein HEX-File anders beginnt, es deswegen nicht unbedingt unterschiedlich sein muss. In jedem HEX-File Datenrecord steht die Adresse drinnen, an die die Daten im Speicher zu platzieren sind.
Gast
#3532714
Damit die Gemüter mal was runerkochen: Folgendes Programm habe ich als ersten Test geschrieben.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
Dabei kommt folgendes Hex-File raus.
1 | |
2 | |
Am Chip liegen 4,9 V an und an den Pins kann ich 2,2 V messen. Das Programm läuft offensichtlich. Beim flashen bekomme ich ein Verify Error. Beim Auslesen erhalte ich.
1 | |
2 | |
3 | |
Das andere Programm ist folgendes.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
Dabei kommt folgendes Hex-File raus.
1 | |
2 | |
3 | |
4 | |
5 | |
Beim flashen gibt es Verify Error und alle Pins gehen auf Low. Beim Auslesen erhalte ich.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
Ich habe mit vielen Variantionen dieser Programme versuche gemacht und komme auf keinen erfassbaren Fehler. Andere Flashprogramme geben auch ein Verify Error aus und noch mehr Fehlermeldungen. Alle meine 150 Tinys (auch andere Tiny-Typen) die ich habe sind neu und unbeschrieben. Ein Neuling bin ich auch nicht wirklich. Ich habe damals vor 20 Jahren den C64 in Assembler und Maschinenspache programmiert und wollte jetzt mit den Tinys wieder einsteigen. Grüße
Gast
#3532805
Hi
>c000 ef0f bb07 bb08 c000 9513 3f1f f009
Hast du an den Zeilen etwas verändert, weggelassen? Das übliche Format
ist Intel-Hex. Und da sieht eine Zeile so
:100000000C943E000C9446000C9447000C9448005D
aus.
MfG Spess
Gast
#3532932
Hi, nur so ne idee, Ich hab nen noch billigeren Programmer (marke Eigenbau nach Fishl.de) auch mit USb, und nutze ebenfalls den extrem burner. Allerdings muß ich beim ersten Flashen eines tiny den Programmer auf einen langsmen mode umstellen, da der tiny einen vorteiler von 1/8 eingestellt hat, und dann möglicherweise nicht mitkommt. (Tiny läuft im Urzustand mit 500Khz (4Mhz/8)) Könnte mir vorstellen, dass da bei der Adressierung über ISP was durcheinander gerät? Hast Du schon mal versucht als erstes die Fuse bits zu setzen,und CKDIV8 zu deaktivieren?
Gast
#3533093
An Nobi Das was ich hier habe ist auch so ein Fishl-kompatibles Teil. Ich habe die Fusebits mal ausgelesen. Sie stehen auf: Low 6a High ff Extend ff Lock ff Laut Beschreibung ist dies 9,6 Mhz / 8. Laut der Beschreibung für den Fishl-Programmer soll der alles über 1 Mhz locker mitmachen. Ich habe nun auch keine Lücken im Vergleich vorher und hinterher. Es ist nur versetzt. Aber... Laut Beschreibung hat der Tiny13a eine Start-Up-Time von 14CK plus 64 ms, wo ich jetzt ehr drauf tippen würde. Aber... Von den Attiny13A (DIP) habe ich nur 10 zum experementiren und kapputspielen. Die anderen 100 Attiny13a (Soic) sind für ein Projekt fest verplant. Ich möchte also nicht allzu leichtsinnig irgendwo rumklicken und was zerstören. Laut Beschreibungen im Internet kann man so einen Tiny am leichtesten mit den Fusebits vernichten. Ich müsste also schon recht genau wissen was ich da an- und ausschalte. Grüße
Gast
#3533157
Hi Lass die Fuses in Ruhe. Daran liegt es nicht. Aber noch mal: >Dabei kommt folgendes Hex-File raus. >c000 ef0f bb07 bb08 c000 9513 3f1f f009 Der AVR-Assembler des 4er Studios erzeugt so etwas nicht. Willst du uns veräppeln? MfG Spess
Gast
#3533184
Wenn ein Programm funktioniert, heißt das nicht unbedingt, dass alles in Butter ist. Eine Tüte voll FFFF am Programmanfang macht, den Atmels zumindest, nichts aus. Interessant wird es erst, wenn Unterbrechungen im Spiel sind.
Gast
#3533214
An Spess53 Nein ich bin Windows-Nutzer. Zwinker... Erstes Programm vorher von Avr-Studio-4
1 | |
2 | |
3 | |
Erstes Programm hinerter von Extreme-Burner
1 | |
2 | |
Zweites Programm vorher von Avr-Studio-4
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
Zweites Programm hinter von Extreme-Burner
1 | |
2 | |
3 | |
So wie ich es oben notiert habe zeigt es mir Extreme-Burner im Hauptfenster an. Nur, dass da noch die Adressen davor stehen (beginnend mit oben-links bei 0). Grüße
Gast
#3533218
An Amateuer Das sehe ich ganz genauso wie Du. Ich denke das erste kleinere Programm läuft nur, weil er zwar immer zu "den" ersten FF springt, aber ohnehin immer nur die gleiche Schleife durchfährt und bei den FF eben einfach nichts macht (wie Befehl NOP). Ändert aber grade nichts an der Sache... Grüße
Gast
#3533241
HI Ist zwar nicht wahrscheinlich, aber lösche doch mal mal den Extended Segment Address Record (:020000020000FC) aus dem original Hex-File. Evtl. kommt den Brennprogramm damit nicht zurecht. MfG Spess
Gast
#3533278
An Spess Ich denke ich habe grade gelernt, dass Hex-Code nicht das gleiche ist wie Maschinen-Code. So wie du oben den Maschinen-Code nicht lesen kannst, kann ich den Intel-Hex-Code nicht lesen. Ich kann aber eine Ascii-Datei aufmachen, sie mit der Datei-Erweitung "Hex" versehen und versuchen sie in das Flash-Programm zu speisen. Du brauchst mir nur sagen was drin stehen soll. Grüße
Marcel Kmiec schrieb: > An Spess > > Ich denke ich habe grade gelernt, dass Hex-Code nicht das gleiche ist > wie Maschinen-Code. So wie du oben den Maschinen-Code nicht lesen > kannst, kann ich den Intel-Hex-Code nicht lesen. Der ist leicht zu lesen. Ausserdem gibt es Doku dazu
1 | |
mal in die Felder aufgedröselt
1 | |
2 Datenbytes, Adresse 0, Satztyp 2 (=Extended Address), Daten: 0 und Prüfsumme D.h. da steht: setze die Extended Address auf 0
1 | |
in die Felder aufgedröselt
1 | |
0C Datenbytes, Datenadresse: 0, Satztyp 0 (=Daten), die Daten selber und wieder die Prüfsumme. D.h. da steht im Klartext: Beginnend ab der Speicheradresse 0, kommen die Datenbytes 0F EF .... Bei dem was du ausgelesen hast, steht
1 | |
in die Felder aufgedröselt
1 | |
10 Bytes Daten, Datenadresse 20, Satztyp 0 (=Daten), die Daten und wieder eine Prüfsumme. D.h. im Hex-File steht tatsächlich drinnen, dass er die Daten von der Adresse 0x0020 geholt hat. (*) Nur warum ist mir nicht klar. Ich hab den Extreme Burner auch schon benutzt. Aber sowas ist mir noch nie untergekommen, dass er beim Brennen eigenmächtig einen Versatz um 0x20 Bytes eingebaut hätte. (*) und genau darum ging es. Ob im Hex-File schon die falsche Adresse eingetragen ist, wo die Bytes hinzubrennen sind.
Gast
#3533300
Hi >Ich denke ich habe grade gelernt, dass Hex-Code nicht das gleiche ist >wie Maschinen-Code. So wie du oben den Maschinen-Code nicht lesen >kannst, kann ich den Intel-Hex-Code nicht lesen. Wieso? Geht doch im AVR Studio. Einfach im linken Fenster (Project) den Zweig 'Output' aufklappen und Doppelclick auf das Hex-File. Und schon hast du das im Editor. MfG Spess
Gast
#3533339
Marcel Kmiec schrieb: > Ich denke ich habe grade gelernt, dass Hex-Code nicht das gleiche ist > wie Maschinen-Code. So wie du oben den Maschinen-Code nicht lesen > kannst Oh, ich denke, denn kann Spess sehr wohl lesen. Vielleicht nicht flüssig (nur unter Zuhilfename eines Disassemblers oder in Handarbeit mit der "instruction set reference") aber lesen kann er ihn auf jeden Fall. Ich selber müßte übrigens auch zu einem der genannten Hilfsmittel greifen... Wie auch immer, genau so, wie wir zu Hilfsmitteln greifen können, kannst du das auch. Eine (für das vorliegende Problem durchaus hinreichende) Beschreibung des "Hex"-Dateiformats kannst du schon in der Wikipedia finden. Ich persönlich vermute aber eine ganz andere Sache als Ursache des Problems. Auch Spess glaubt ja nicht wirklich an Probleme bei der Interpretation des Hex-Formats, das hat er in seinem Posting deutlich zu erkennen gegeben. Es ist also mehr so ein Schuß in's Blaue, um einfach abzuklärende Sachen auf die Schnelle ausschließen zu können. Er hatte wohl nicht damit gerechnet, daß es IRGENDEINEN AVR-Programmierer geben könnte, der nicht weiß, wie Hexfiles funktionieren... Wie auch immer, meiner Meinung nach liegt ein rein physikalisches Problem vor. Entweder in der Verbindung zwischen Programmer und Controller oder bei der Energieversorgung des Controllers während des Flashens. Ersteres halte ich für deutlich wahrscheinlicher. Deswegen wäre meine erste Aktion, die drei SPI-Leitungen auf ihren Durchgangswiderstand zu prüfen und zwar nicht irgendwo, sondern jeweils direkt vom Pin des Programmer-IC zum entsprechenden Pin des Controllers. Ich könnte fast wetten, daß eine der Leitungen hochohmig ist...
Gast
#3533390
Es war nicht meine Absicht jemanden auf den Schlipps zu treten. Ich komme aus einer Zeit, wo es keine Hex-Files gab. Ich kann aber den Maschinen-Code anhand meiner eingegebenen Befehle lesen (um mich mal auf das Glatteis zu wagen). Lässt man alle Labels weg sind in fast allen Fällen die Befehle und die Werte 1:1 zusammengehörig (war zumindest damals so). Ich messe jetzt mit angeschlossenem Programmer und Tiny-Chip (Usb ausgestöpselt) folgende Leitungen: VCC 10 - 24 Ohm (schwankt bei der Messung) GND 13 Ohm MISO 3 Ohm SCK 3 Ohm RST 3 Ohm MOSI 3 Ohm Grüße
c-hater schrieb: > Ich könnte fast wetten, daß eine der Leitungen hochohmig ist... Da wär ich mir nicht sicher. Das seltsame ist ja: Die Datenbytes an sich sind ja anscheinend korrekt im Flash. Nur eben an der falschen Stelle. Mysteriös.
Gast
#3533425
Das ist nicht nur Mystheriös. Das ist Scheisse...
Gast
#3533427
>Ich kann aber eine >Ascii-Datei aufmachen, sie mit der Datei-Erweitung "Hex" versehen und >versuchen sie in das Flash-Programm zu speisen. Du brauchst mir nur >sagen was drin stehen soll. Dann flash halt mal die HEX im Anhang und zeig uns was ausgelesen wird.
Gast
#3533434
Marcel maß: >Ich messe jetzt mit angeschlossenem Programmer und Tiny-Chip (Usb >ausgestöpselt) folgende Leitungen: >VCC 10 - 24 Ohm (schwankt bei der Messung) >GND 13 Ohm Das ist aber anständig viel... Kümmere Dich erst mal um den Leitungs- bzw. Kontaktwiderstand, sonst suchst Du Dir einen Wolf. MfG Paul
Gast
#3533457
An Holger Beim Lesen rausgekommen ist: :100020000FEF07BB08BB009508BBFDCFFFFFFFFF2D :00000001FF An Paul Baumann Mit der Stromversorgung habe ich keine Probleme.
Gast
#3533458
Paul Baumann schrieb: > Marcel maß: >>Ich messe jetzt mit angeschlossenem Programmer und Tiny-Chip (Usb >>ausgestöpselt) folgende Leitungen: > >>VCC 10 - 24 Ohm (schwankt bei der Messung) >>GND 13 Ohm > > Das ist aber anständig viel... Mal wieder Quark von dir. Die Messung ist einfach Mist.
Marcel schrub:
>Mit der Stromversorgung habe ich keine Probleme.
Na dann..
Gut -dann viel Glück beim Finden der Ursache.
MfG Paul
Gast
#3533469
Das stand in der HEX Datei: >:0C0000000FEF07BB08BB009508BBFDCF4D >:00000001FF und das wird gelesen: >:100020000FEF07BB08BB009508BBFDCFFFFFFFFF2D >:00000001FF Schon wieder dieser Offset drin. Es wird immer merkwürdiger.
Gast
#3533471
Marcel Kmiec schrieb: > komme aus einer Zeit, wo es keine Hex-Files gab. Dann mußt du noch deutlich älter sein als ich. Und ich bin schon ziemlich alt, viel zu alt für meinen Geschmack... > Maschinen-Code anhand meiner eingegebenen Befehle lesen (um mich mal auf > das Glatteis zu wagen). Lässt man alle Labels weg sind in fast allen > Fällen die Befehle und die Werte 1:1 zusammengehörig (war zumindest > damals so). Damals(tm) gab es mit Sicherheit noch keine AVR-Architektur. Und bei der AVR-Architektur sind längst nicht alle Codebestandteile so eingängig in den Opcodes wiederzufinden, wie du das (vielleicht von Z80 oder 6502?) so in Erinnerung hast. Lies' bitte die bereits erwähnte instruction set reference. Da ist auch die Codierung drin beschrieben. > VCC 10 - 24 Ohm (schwankt bei der Messung) > GND 13 Ohm > MISO 3 Ohm > SCK 3 Ohm > RST 3 Ohm > MOSI 3 Ohm Das ist ja sogar durchgängig völlig Scheiße. Der Durchgangswiderstand sollte sich bei derart kurzen metallischen Verbindungen ausnahmslos im Bereich weniger zehn mOhm bewegen. Ich würde mal behaupten, daß dein Multimeter nix taugt. Eventuell Batterie alle? Aber spannend sind trotzdem die Versorgungsleitungen, denn deren Widerstand unterscheidet sich zumindest erheblich von den restlichen Leitungen. Insbesondere GND ist sehr bedenklich...
Gast
#3533486
Wenn ich die Versorgungsspannung am Chip messe komme ich auf 4,9 Volt. Da alle Leds leuchten wird der Strom auch in Ordnung sein. Und zur Diskusion standen hier die Datenleitungen. Und... Ich habe an GND und VCC längere Leitungen verwendet, damit ich diese niemals mit den Datenleitungen verwechseln kann. Weiter ist das Offset konstant. Zu konstant für eine einfache Schwankung in den Leitungen, für mein Geschmack. Grüße
Gast
#3533506
Marcel Kmiec schrieb: > Wenn ich die Versorgungsspannung am Chip messe komme ich auf 4,9 > Volt. Das sagt exakt garnix. Mit einem Multimeter kannst du garnicht schnell genug messen. Hast du wenigstens die Batterie von dem Teil endlich getauscht? > Da alle Leds leuchten wird der Strom auch in Ordnung sein. Du bist entweder krass unwissend oder ein Troll. > Und zur > Diskusion standen hier die Datenleitungen. Sagt wer? > Und... Ich habe an GND und > VCC längere Leitungen verwendet Etliche Meter lang? > Weiter ist das Offset konstant. Zu > konstant für eine einfache Schwankung in den Leitungen, für mein > Geschmack. Du weißt nichtmal, wie man einfachste Größen korrekt mißt. Und jetzt willst du mir erzählen, du hast die Ursache des Offsets gefunden? Und das mußt du ja wohl, da du mögliche Ursachen konsequent ignorierst. Tipp: 32 Byte entspricht ziemlich genau der Größe einer Flashpage des Tiny13A... Aber egal, da du ja offensichtlich selbst die Ursache gefunden hast, können wir alle das Problem wohl als gelöst abhaken...
Gast
#3533516
An C-Hater Ich denke nicht, dass das verteilen von Beleidigungen in dieser Sache produktiv ist. Wenn du Vorschläge hast höre ich mir die gern an. Nur lass bitte dieses "sieh mal selber zu, ob du was machen kannst".
Gast
#3533537
Nu fetzt euch mal nicht so. Das bringt keinen weiter. Hast du mal die ISP Frequenz kleiner gemacht? Bei deinem zweiten ausgelesenen Programm fehlen grosse Teile.
Gast
#3533553
An Holger Das ist mir auch aufgefallen, wollte aber noch nichts sagen, um nicht was doofes von mir zu geben. Leider kann ich weder im Programmiergerät noch im Extreme-Burner etwas zur Geschwindigkeit einstellen. Deswegen wollte ich den ja haben. Der stellt alles selber ein. Verwende ich aber Khazama (Flashprogramm) bekomme ich zusätzlich die Fehlermeldung Synchonisation fehlgeschlagen (Sinngemäß wiedergegeben). Dieser versucht dann gar nicht erst zu flashen. Da habe ich noch geglaubt, dass ich im Khazama-Programm was falsch eingestellt habe. Grüße
Gast
#3533564
>Verwende ich aber Khazama (Flashprogramm) >bekomme ich zusätzlich die Fehlermeldung Synchonisation fehlgeschlagen >(Sinngemäß wiedergegeben). Das ist das beste Zeichen für eine falsche ISP Frequenz. Irgendwo muss man die bei deinem Prommer einstellen können. Wenn nicht taugt das Ding halt nichts.
Gast
#3533582
Da ich vorraussetzte, dass das Avr-Studeio-4 von sehr guter Qualität ist, die Flash-Programme Extreme-Burner und Khazama mindestens eine gute Qualität haben müssen und die Tinys mit Sicherheit sehr gute Qualität haben müssen, ist das schwächste Teil in der Kette der China-Fishl-Clone. Einstellen kann ich an dem Teil von außen definitiv nichts. Ich ging davon aus, dass das Teil vom Flash-Programm eingestellt wird. Was mich wundert ist, der Tiny13a und die Flash-Programme werden in der Kompatibilitätsliste aufgeführt. Im Internet kann ich aber lesen, dass auch Andere mit genau dieser Kombination die gleichen Probleme haben wie ich. Nichts desto Trotz: Ich habe auch schon nach anderen Programmiergeräten geschaut. Es gibt aber reichlich viele. Ich würde mich wenn für einen entscheiden der mit Avr-Studio-4 kompatibel ist und nach Möglichkeit wenig Geld kostet. Alles was ich dafür so in der Bucht finde ist aber auch nur nachgemacht. Grüße
Gast
#3533608
Hi >Ich habe auch schon nach anderen Programmiergeräten geschaut. Es gibt >aber reichlich viele. Ich würde mich wenn für einen entscheiden der mit >Avr-Studio-4 kompatibel ist und nach Möglichkeit wenig Geld kostet. Auch wenn letztere Bedingung nicht ganz erfüllt wird: Original AVR ISP MKII. Was bei Verwendung von so einem Chinakracher zusammen mit Second-Hand-Software herauskommt sieht man ja. MfG Spess
Gast
#3533630
In der Tat. Vorher weiss man sowas aber schlecht. Wo bekomme ich das Teil her und was kostet es?
Gast
#3533656
Gast
#3533683
Danke für alle Antworten. Grüße
Legste noch 12 euros für nen dragon drauf, kannste auch debuggen.
Marcel Kmiec schrieb: > Da ich vorraussetzte, dass das Avr-Studeio-4 von sehr guter Qualität > ist, die Flash-Programme Extreme-Burner und Khazama mindestens eine gute > Qualität haben müssen und die Tinys mit Sicherheit sehr gute Qualität > haben müssen, ist das schwächste Teil in der Kette der > China-Fishl-Clone. Bla bla. > Einstellen kann ich an dem Teil von außen definitiv > nichts. Ich ging davon aus, dass das Teil vom Flash-Programm eingestellt > wird. So ist das. Anständige Flash-Programme (ich beuge mich jetzt mal aus dem Fenster und nenne avrdude als Referenz) melden sich auch, welche Frequenz sie eingestellt haben oder ob sie dabei ein Problem hatten. Denn in der Tat sind die usbasp Clone aus China dafür berüchtigt, daß sie mit einer urururalten Firmware ausgeliefert werden, die die softwaremäßige Umstellung der ISP-Frequenz noch nicht unterstützt. Jetzt kann man entweder das zehnfache ausgeben und ein AVR ISP MK2 kaufen, oder man macht ein Firmware-Upgrade auf dem usbasp. Dafür braucht man allerdings zumindest einmalig einen zweiten ISP-Programmer, weil der usbasp keinen Bootloader hat. Als temporäre Notlösung sollte auch auf dem China-Clone irgendwo ein Lötjumper "slow ISP" oder so ähnlich sein, mit dem man hardwaremäßig den ISP-Takt auf Minimum zwingt. Augen aufmachen! XL
Nachtrag: apropos Extreme Burner ... wenn der wirklich den µC trotz fehlgeschlagener Synchronisierung brennt und/oder eine fehlgeschlagene Einstellung der ISP-Frequenz nicht wenigstens als Warnung anzeigt, dann ist das ein Fall für die Tonne.
Marcel Kmiec schrieb: > Ich > komme aus einer Zeit, wo es keine Hex-Files gab Das mag man wohl bezweifeln. Anno 1975 (als ich meinen ersten TMS9000) programmiert habe) gab es die schon.
Dann gab es die einfach in meinem Bereich nicht.
Gast
#3534045
Hi Marcell, das habe ich in meinem post auch gemeint, ich muss definitiv beim tiny die ISP frequenz kleiner machen, wenn Du ein fischl pendant als programmer hast, dann sollte dort ein jumper für genau diesen Zweck vorhanden sein. Wenn der programmer soweit funktioniert, dass du über die fuses die Taktferquenz höher schalten kannst, kannst Du auch wieder schneller flashen.
Ich mein so Veränderungen, im Sinne von Halbieren oder Achteln, sind ja schon ein recht weiter Sprung. Die Programme sind aber zumindest annähernd richtig im Speicher. Der Frequenzunterschied dürfte gar nicht all zu groß sein. Ich habe aber im Extreme-Burner unter den Fuses eine recht lange Hex-Zahl gefunden, die irgendwas mit der Tiny-Internen-Geschwindigkeit zu tun hat. Weiter Unten auch noch ein Button der mit Kalibrieren beschriftet ist. Aber wie gesagt: Sind Fuses. Da drücke ich nicht so leichtsinnig drauf. Grüße
Gast
#3534091
Die Jumper sind meist nicht eingelötet. Bohrungen dazu sind, zumindest bei meinen zwei Exemplaren, vorhanden.
Wenn du so ein Clone hast der zwei SMD-Leds (eine für Bereit eine für Aktivität) hast, dürfte die Jumperstelle direkt neben den Leds sein.? Wenn ich den Jumper schließe passiert was?
Du kannst mir gern mal eine Schritt-für-Schritt-Anleitung geben. Leider kann ich erst am Montag weiterlesen. Aber wenn das eine halbwegs sichere Methode ist, gebe ich gern ein/zwei Tinys für her. Grüße
Ich habe dieses Teil. Ich der denke der gesuchte (nichtvorhandene) Jumper ist die Stelle markiert als J2. http://www.pocketmagic.net/wp-content/uploads/2012/05/usbasp_4.jpg
Gast
#3534144
Jumper 1 neben den LED's ist die Selbstprogrammierung, J2 darunter für die Spannungsversorgung vom Programmierboard und J4 darunter für die Taktbegrenzung, wenn Augen und Ohmmeter mich nicht täuschen.
Gast
#3534148
Sehe gerade auf dem Bild, dass sich auch diese Nachbauten ständig verändern. Bei mir sitzt der AT nicht diagonal auf der Platte. Jumper für den Takt sollte aber einen Pin des IC's mit GND vom Wannenstecker verbinden.
Zu den Beschriftungen auf dem China-Clone: Möglicher Jumper ist nur die Stelle, die als J2 markiert wurde. Auf der anderen Seite der Leds ist ein 6-Pin-Baustein (ich denke Digital) der auch mit einem J markiert wurde. Weitere Markierungen mit J oder Möglichkeiten was anzulöten gibt es wohl nicht. Auf der Unterseite ist ein Datum aufgedruckt, das mit dem Datum der letzten Fischl-Firmware identisch ist. sind aber alles nur die Aufdrucke.
Oh schade. Ich dachte jetzt am Montag kann ich lesen wie ich was versuchen kann.
Gast
#3566070
Und weiter geht es... Nachdem ich mir jetzt einen beschissenen Dragon Modell C (Beschissen weil Defekt) und einen Dragon Modell D besorgt habe ist die Thematik mit dem Versetzem Programm immernoch die gleiche. Bisher sind mit dem Dragon D folgende Probleme aufgetreten: Dragon Modell C ist beim ersten Anschließen abgefackelt (Spannungsregler Defekt). AVR-Studio-4 konnte keine Verbindung zum Treiber aufbauen (Gelösst). Erfolgreich ein Upgrade vom Dragon Modell D über AVR-Studio-4 durchgeführt. Attiny13a mit dem ISP des Dragon verbunden (Sowohl Tiny als auch ISP werden über das VCC des Dragon versorgt). Im Studio kann ich erfolgreich die richtige Spannung auslesen. Beim ISP-Speed bekomme ich scheinbar nur bei 500 kHz eine Antwort ohne Fehlermeldung. Beim lesen der Signatur bekomme ich den ersten Fehler (0x01 0x03 0x05 passt nicht zum ausgewähltem Device). Beim Flashen bekomme ich die Meldung, dass mit den Flashen alles in Ordnung verlaufen ist. Beim Verify bekomme ich die Meldung, dass mein Programm an Adresse 0x01 steht anstatt an 0x00 "Warning: Flash byte address 0x0000 is 0x01 (should be 0x00). FAILED". Die Verkabelund habe ich fünf Mal mit verschiedenen Methoden überprüft. Beim ersten Versuch mit diesem Aufbau vor 10 Stunden habe ich sogar nur nullen als Antwort bekommen. Hex-File, das ich eingebe:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
Hex-File, das ich raus bekomme:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
Warum ist das so schwer ein Programmiergerät für AVR zu finden, das einfach nur funktioniert? Das Ärgert mich jetzt sehr, dass ich jetzt hier drei Programmiergeräte liegen habe und ich keins davon sinnvoll nutzen kann, aber dafür schon 100 € für hingeblättert habe.
Gast
#3566072
Ich habe jetzt einfach nur das USB-Kabel abgezogen und wieder eingesteckt. Jetzt funktioniert gar nichts mehr. Ich kann weder die Spannung auslesen noch das Device Setting hinter mich bringen. Die Leds des Dragon reagieren normal.
Gast
#3566075
Nach erneutem Firmwareupdate und ISP-Speed 250 kHz stimmt zwar die Signatur aber mein Programm ist auf 0x20 versetzt. Also Ergebniss wie ganz am Anfang. Das gleiche mit ISP-Speed 125 kHz. und auch bei 6,478 kHz. Nach erneutem Upgrade bekomme ich beim 250 kHz eine andere Signatur übergeben. Beim Flashen ist das Ergebnis das gleiche wie eben auch.
Gast
#3566083
Also das ist doch sehr auffällig, das Du in den verschiedensten Szenarien mit verschiedenen Programmern etcpp. immer auf dieses Phänomen triffst, auf das, soweit ich weiss, kein anderer trifft. (Das wäre mal eine Suche hier Wert). Das einzige was ich selbst davon kenne, ist, daß bei einem völlig neuen Projekt die Signatur, Verify usw. einige Male fehlschlagen und nachdem man an den Kabeln gewackelt und ihnen gute Worte gegeben hat, alles geht. Dann auch über Tage hinweg bis man wieder irgendwas Größeres verändert. Diese ganzen Clowns, - äh, Clone - sind mir dazu noch suspekt, obwohl man fairerweise sagen muss, dass viele hier, nach anfänglichen Schwierigkeiten, damit ganz gut klarkommen (oder sie wegschmeissen ohne hier weiter darauf einzugehen). Aber ein Versatz um 0x20 Bytes? Meine Vermutung ist, das Du irgendwas völlig anderes, aber grundsätzliches falsch machst und immer wieder falsch machst. Als vorletzte Maßnahme würde ich sehr gerne mal ein Foto von Deinem Aufbau sehen auf dem auch der PC, das Netztteil und so weiter zu sehen sind. Also mehr oder minder Dein ganzer Arbeitsplatz. Und dann noch ein Foto nur von der Zielplatine. Nenne hier auch mal die genaue Version von AVR-Studio 4 (ich hoffe ich habe da nichts übersehen) und poste vielleicht auch mal den kompletten Projektorder als ZIP. Vielleicht fällt einem hier etwas auf. Als letzte Maßnahme und um uns allen mal den Glauben wieder zu geben, würde ich Dir vorschlagen, hier freundlich zu fragen ob jemand aus Deiner Nähe mal mit seinem Laptop und einem Original STK500 oder einem Original-Dragon zu Dir kommt und auch eine kleine Platine mitbringt und dann mal Schritt für Schritt zu Deiner Konfiguration übergeht. Irgendwo auf dem Weg muss der Haken auftauchen.
Und bitte mal die Signatur von dem ATtiny13A auslesen und posten.
Gast
#3566136
Ich gebe dir gern mal vorab eine Möglichst allumfassende Beschreibung. Notebook: Ist ein Asus EeePC 1201HA mit Original-Netzteil und der Akku ist fit. Die beiden USB-Anschlüsse auf der linken Seite sind dem Powermanagment am nächsten und ich habe schon oft USB-HDDs dran betrieben. Studio: AVR-Studio-4.19 (habe aber mit USBAsp und Extreme Burner das gleiche Ergebnis gehabt) Dragon: Ist Modell A08-0396.D und augenscheinlich ein Originalteil vom Fachhändler, für 60€. Tiny: 10 Stk Attiny13a DIL. Das Problem tritt stichprobenartig bei allen auf. Target: Ein einfaches kleines Breadbord mit zugehörigen Stiftkabeln (für die Daten verwende ich die Kurzen, für GND und VCC je ein Langes). Der Tiny ist direkt auf den Breadboard und die Stiftkabel gehen in Flachbandkabel, die mit den Dragon verbunden sind. Zu ISP führt ein 6Pol 10cm Kabel und zu VCC ein 10Pol 30cm Kabel. Verbindungen: ISP 1 zu Tiny Pin 6 ISP 2 zu VCC 6 ISP 3 zu Tiny Pin 7 ISP 4 zu Tiny Pin 5 ISP 5 zu Tiny Pin 1 ISP 6 zu VCC 5 VCC 3 zu Tiny Pin 4 VCC 4 zu Tiny Pin 8 Ich habe auf dem Breadboard auch eine Led mit 500 Ohm zwischen VCC und GND, als Indikator. Mit oder ohne ist es das gleiche. Wenn ich vom Dragon eine Antwort bekomme die nicht 0x00 lautet, bekomme ich die Signatur 0x01 0x03 0x05. Jetzt in wenigen Versuchen habe ich mehrmals eine Signatur bekommen, von der AVR-Studio sagt sie währe richtig. Was ich viel phänomenaler finde ist, dass sich das Verhalten vom Dragon ändert, wenn ich ein Firmwareupgrade mache.
Gast
#3566139
Nachtrag: An den Kabeln gewackelt habe ich lange genug (mit der LED als Indikaator). Da ist kein Wackler drin. Und Dragon misst glatte 5V am ISP.
Mir fehlen in der Beschreibung noch die 100nF...
Gast
#3566152
In der Bedienungsanleitung stand nichts von einem Kondensator. Laut der Beschreibung eines anderen Nutzers ist ihm Sein nagelneuer Dragon mit einem Kondensator racketenschnell abgeraucht (hat dannach nur noch nullen zurück gegeben).
Meine Frage bezog sich auf die keramischen 100nF zwischen VCC und GND des ATtiny. Poste mal bitte schnell ein Bild des Aufbaus- bevor hier die Blockkondensatordiskussionen wieder losgehen.
Gast
#3566384
Bild 1 So ähnlich sieht das alles aus. Bild 2 So sitzt der Tiny auf dem Board. Bild 3 Und ich denke du meinst so einen Kondensator. Von dem habe ich auch gesprochen.
Tiny10Nutzer schrieb: > Und ich denke du meinst so einen Kondensator. Von dem habe ich auch > gesprochen. Ja. Und ohne diesen hat der ATtiny das Recht, jeden Blödsinn zu machen, den er will. Und auf dem Steckbrettaufbau fehlt er. Oft macht er es nicht. Aber das Recht dazu hat er.
Gast
#3566404
Grrr.... Rate aml was ich grade nicht zur Hand habe. Warum ist der nicht im VCC des Dragon drin?
Tiny10Nutzer schrieb: > Warum ist der nicht im VCC > des Dragon drin? Das würde Dir nichts nützen. Blockkondensatoren müssen immer unmittelbar an den Versorgungsanschlüssen jedes Digital-ICs sitzen. Es werden sogar welche drin sein. Aber zu weit weg. Hast Du keine 33nF-220nF, die Du quer drüberstecken oder -löten kannst?
ich könnte mir vorstellen das der Programmer die Interrupttabelle frei läßt und dahinter erst mir dem Programm anfängt. Keine Ahnung wieviele Interrupt Einsprungadresse der Attiny13a hat du könntest aber mal aus dem Datenblatt die vollständige Tabelle eintragen und dann mal schauen ob dein Programm immer noch an der gleichen Stelle anfängt. bein Tiny26 wäre das z.B. .CSEG .ORG 0x00 rjmp RESET ; Reset handler reti ; rjmp EXT_INT0 ; IRQ0 handler reti ; rjmp PIN_CHANGE ; Pin change handler reti ; rjmp TIM1_CMP1A ; Timer1 compare match 1A reti ; rjmp TIM1_CMP1B ; Timer1 compare match 1B reti ; rjmp TIM1_OVF ; Timer1 overflow handler reti ; rjmp TIM0_OVF ; Timer0 overflow handler reti ; rjmp USI_STRT ; USI Start handler reti ; rjmp USI_OVF ; USI Overflow handler reti ; rjmp EE_RDY ; EEPROM Ready handler reti ; rjmp ANA_COMP ; Analog Comparator handler reti ; rjmp ADC ; ADC Conversion Handler mit der Adresse nach dem .ORG kannst du auch mal experimentieren ob du damit das Programm woanderst hinbekommst.
Gast
#3566419
Im Moment habe ich überhaupt keine Kondensatoren da. Meine Lötausrüstung habe ich auch grade verliehen. Sonnst hätte ich mir die Kondensatoren schon so kombiniert, dass es passt. Was ist mit dem Kollegen dem sein Dragon wegen genau so einem Kondensator weggeraucht ist? Die Dragons scheinen insgesammt aussergewöhnlich empfindlich zu sein. Mein Modell C ist ja auch schon beim Einschalten verdampft.
also ich habe einen Dragon der ersten Stunde und da ist noch nichts abgeraucht, liegt vielleicht daran das ich in der Wohnung ohne Schuhe rumlaufe und dem Teil noch keinen Funken gegönnt habe außerdem prüfe ich die Anschlüsse zur Platine immer nochmal durch bevor ich Saft drauf gebe.
Die meisten Dragon sind sicher sowieso nur abgeraucht, weil sie in der Packung blieben und das leitfähige Schaumzeug noch drunter war.
Gast
#3566517
Na dann schenke ich dem Dragon doch noch etwas Vertrauen. Aber der Bug im Spannungsregler des C ist wohl allgemein bekannt und wurde von AVR nur zu Beginn für Privatanwender ausgetauscht. Der Chip der Buggy ist, ist derart empfindlich, dass eine kurze Berührung mit dem Finger ausreicht um den Bug auszulösen. Wie auch immer... Ich werde der Frage nach den Interrupttabellen mal sehr genau nachgehen, habe aber selber dazu noch Fragen: In den meisten Beispielprogrammen finde ich nie komplette Interrupttabellen, zu Begin des Programms. Werden die vom Compiler nicht von selbst ergänzt bzw. vom Chip einfach ignoriert, wenn diese nicht explizit angegeben werden? Ich kann im Tiny13 nur 512 Befehle insgesamt eingeben. Da möchte ich mir natürlich jeden Befehl sparen, wie ich nur kann. Wenn diese Interrupts in den Beispielprogrammen angegeben werden, werden diese mit Symbolen eigegeben. Heißt das nicht, dass diese in einem anderen Speicherbereich (außerhalb des Programms) stehen?
ich programmiere mit .asm da muss man es per Hand machen, aber nur wenn man die Interrupts auch verwendet. Wenn also ein Interrupt auslöst springt das Programm an die entsprechende Stelle holt sich dort die Sprungadresse zu Interruptroutine die dort stehen sollte(Sprungbefehl) die Interruptroutine sollte dann auch wieder mit reti beendet werden oder man schreibt statt eines Sprungbefehles direkt reti dort hin dann bewirkt der Interrupt keine falsche Verzweigung im Programm. Ich weiß aber nicht wie der C Compiler das macht und ob man es verstellen kann. Evtl. wird es nur bei Interrupt Nutzung oder immer. Diese Tabellen sind in jeden Datenblatt bei den AVR enthalten.
Gast
#3566546
Na ich programmier jetzt auch in Assembler. Dort werden sie aber in den Beispielen mit Symbolen angesprochen (und in den Symbolen mit Sprungbefehlen beladen). Ich denke mal, dass die Symbole in den Include-Dateien definiert werden. Ich habe jetzt auch Beispielprogramme gesehen in denen beispielsweise der Reset-handler in Adresse 0x00 geschrieben wird (.org 0x00 rjmp main). Aber wie gesagt werden derartige Angaben ehr selten bzw. schonmal gar nicht vollständig gemacht (laut Beispiele). Was mich noch mehr wundert ist, dass ja bei "nichtangeben" der Interrupttabellen mein Programm an Adresse 0x00 stehen müsste. Das kann ja gar nicht sein und gar nicht funktionieren. Warum funktioniert das in den Beispielen dann trotzdem?
ob es reset oder main heist spielt keine Rolle. Ich nenne es bei mir immer Reset und in dieser Routine initialisiere ich den Stackpointer, setzte die Ein- und Ausgänge usw. bevor es dann weitergeht meinetwegen mit main: Ich vermute mal das eine leere Flashzelle als nop intepretiert wird, also macht es sich beim Programmablauf nicht bemerkbar da diese Speicherstelle einfach überflogen wird. in einer Includedatei habe ich folgendes gefunden
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
ist also nur ein Symbol für die Adresse, an die Adresse selber gehört dann aber der Sprungbefehl oder reti
Tiny10Nutzer schrieb: > Warum funktioniert > das in den Beispielen dann trotzdem? Es wurde schon mehrfach gesagt: Poste eines deiner Problemkinder hier, aber komplett. Dann kann dir geholfen werden.
Gast
#3566598
Meine Vermutung ist grade. dass die Interrupttabelle gar nicht im Flash-Speicher ab 0x00 steht, sondern in einem anderen Speicherbereich. Mit Gewissheit kann ich das natürlich nicht sagen. Ist dem aber so, hat das Nichtangeben der Interrrupts keinen Einfluss auf mein Programm.
Tiny10Nutzer schrieb: > Meine Vermutung ist grade. dass die Interrupttabelle gar nicht im > Flash-Speicher ab 0x00 steht "Vermuten" heißt "nicht wissen". Die Interrupt Vektoren liegen unten ab 0 im Flash. Warum sollten sie auch woanders liegen?
Hallo Marcel, Tiny10Nutzer schrieb: > Was mich noch mehr wundert ist, dass ja bei "nichtangeben" > der Interrupttabellen mein Programm an Adresse 0x00 stehen müsste. Das > kann ja gar nicht sein und gar nicht funktionieren. Warum funktioniert > das in den Beispielen dann trotzdem? Beim Reset springt der Attiny an Adresse 0x00 und führt den Code dort aus. Dort kann ein Sprungbefehl stehen, oder auch gleich dein Programm. Wenn dein Programm so in der Interrupt-Tabelle steht, kannst du natürlich keine Interrupts verwenden, aber es funktioniert bestens. Ob Assembler oder nicht, die erzeugte Hex-Datei beginnt ab Adresse 0x00, und sollte also genau so auch im Attiny-Flash gespeichert werden. Die Programmierung kann da nicht die Ursache des Fehlers sein. Ich habe gerade anhand deiner Fotos (gute Qualität übrigens) mal die Verkabelung nachvollzogen, und keine Fehler entdeckt. Mir scheint der Widerstand aber Braun-Grün-Braun zu sein (also 150 Ohm und nicht 500 Ohm), aber das sollte auch nicht das Problem sein. Ich kann mir auf dieses Phänomen keinen Reim machen. Du machst alles richtig, es geht nur nicht. Leider habe ich keinen Attiny13A zur Hand (nur Attiny85) und kann dein Problem daher nicht nachbauen. Vielleicht solltest du wirklich noch einen 100nF nah am Attiny zwischen VCC und GND anbringen (ich glaube aber eher nicht dass das die Ursache ist). Hast du ansonsten einen USB-Hub mit Netzteil? Eventuell ist der USB-Port etwas schwachbrüstig ... Probier auch noch einmal einen anderen Platz im Breadboard. Manchmal sind die Federn schon so ausgeleiert, dass kein guter Kontakt zustandekommt. Ach, und ändere die ISP-Geschwindigkeit auf kleiner als 250kHz. Das Datenblatt verlangt weniger als 1/4 der Taktfrequenz, also ist 1/4 der Taktfrequenz zu schnell. Versuch bitte auch die Fuses auszulesen, um zu sehen ob da was schief steht. LG, Sebastian
Note: AVR Dragon must sense the target voltage at pin 2 on the ISP header in order to set up the level-converter. For on-board targets, the voltage must be supplied from pin 2,4,6 on the VCC header (5V) into pin 2 (VTG) on the ISP header. When using off-board targets there should be no connection between VCC header and pin 2 of the ISP header. So wie ich es sehe fehlt dir eine Verbindung von VCC zu VTG wird anscheinend gebraucht wenn man seine Schaltung vom Dragon versorgen läßt, damit der Dragon die Spannung einstellen kann, weil er sonst keine Rückmeldung hat. Ich versorge mein Board immer extern und belaste den Dragon nicht für meine Schaltung.
Thomas O. schrieb: > So wie ich es sehe fehlt dir eine Verbindung von VCC zu VTG Nein, die Verbindung ist da. ISP VTG ist mit Dragon VCC pin 2 verbunden (Kabel hin, Kabel her), Attiny13A VCC pin 8 mit Dragon VCC pin 4. Zumindest sehe ich das auf den Fotos so. LG, Sebastian
Gast
#3566800
@Sebastian Ich staune grade Bauklötze. Ich sehe nur sehr sehr selten eine so professionelle Antwort in einem Forum. Daumen hoch. Das Breadboard ist neu und ich habe auch ein Zweites (gleiches). Auf dem sieht die Sache auch nicht anders aus. Es ist ja auch so, dass die Störung bei verschiedenen Progern ähnlich ist. Die Farben des Resitor sind nicht ganz originalgetreu. Es sind zwar keine ganzen 500 Ohm. Ich glaube aber mich zu erinnern, dass es 460 Ohm sein müssten (kanns aber grade nicht mehr genau sagen). Ohne Led ändert sich jedenfalls nichts. Ich werde das Alles nochmal an meinen Arbeitsrechner (am Montag) ausprobieren. Dieser USB-Anschluss stellt 8ß Watt bereit. Wie gesagt betreibe ich aber auch USB-HDDs am aktuellen Anschluss. Laut Betriebssystem sind ganze 500 mA auf dem Port bereit. Laut Datenblatt braucht der Dragon mindestens 100 mA und 300 mA empfohlen. Für den Kondensator brauche ich eine Weile. Nach Augenmass der Led kommen am Chip Spannung und Strom satt an. Was aber im nicht sichtbaren Bereich abgeht kann ich natürlich nicht sagen. Um nochmal kurz Offtopic zu gehen: Deine Erklärung zu den IRQs war einfach Klasse und sehr leicht verständlich. Nach deinen Angaben muss ich, wenn ich irgendeinen IRQ in Anspruch nehme, den Reset-Handler (0x00) angeben, da sonnst bei Reset der erste aufkommende IRQ angesprungen wird, ohne ausgelösst worden zu sein. Im Umkehrschluss bedeutet dies aber auch, wenn ein IRQ ausgelösst wird, ohne dass ich diesen mit ".ORG RJMP ??" einen Sinn gegeben habe (und statt dessen Sinnloserweise einfach mein Programm dort steht) wird der IRQ dann zu einer bestimmten Stelle meines Programms (unkontrolliert) springen und ein wenig Chaos verursachen. Ich hoffe die Sätze sind nicht zu lang geworden. Aber sag mal bitte ob ich das so richtig verstanden habe. Grüße
Gast
#3566820
Nachtrag: Ich konnte mit den USBAsp noch alle Bits auslesen. Die Tinys sind alle definitiv im Auslieferungszustand. Attiny13a Anwählen http://www.engbedded.com/fusecalc
Gast
#3566904
Das mit den 100nF ist eher wichtig als unwichtig. Es kann gehen, sollte aber, gerade bei Problem, ungefähr das erste sein, was man ergänzt. Auch, das das Problem bei verschiedenen Programmern das selbe ist, deutet darauf hin, das es ursächlich nicht an den Programmern liegt. Ich möchte noch einmal, diesmal etwas dringender, dazu raten, das Du hier mal das komplette Projekt postest, bei dem dieser Fehler auftritt. Zu dem abgerauchten Dragon: In dem Artikel hier http://www.mikrocontroller.net/articles/AVR-Dragon unter dem Punkt "Empfindliche Hardware " ist klar beschrieben, das dies ein bekanntes Problem ist. Halte Dich damit erstmal nicht auf. Zu den Interrupt-Vektoren. Solange keine Interrupts aktiviert werden sollte die tatsächliche Position (unter gewissen Bedinungen) keine Rolle spielen. Diese "gewissen" Bedingungen kannst Du herstellen, wenn Du den Tiny definitiv vorher löschst. Denke auch daran, die Fues nach dem Löschen wieder zu setzen. Es kann allerdings sein, dass Dir der Zusammenhang zwischen Interrupt-Vektoren und der org-Anweisung nicht in aller Konsequenz deutlich ist. So das Du einen eigentlichen Programmfehler nun irrigerweise einer fehlerhaften Annahmen über die Position des Codes zuschreibst. Hier ist glaube ich, die Bemerkung angebracht, das die Vermutung, dass Du Fehler gemacht hast, nicht als ehrenrührig gedacht ist. Wir machen alle Fehler. Das ist OK so. Soweit ich erkennen kann, hast Du Dir nach Deinen Fähigkeiten alle Mühe gegeben. Das ist mehr als man von manch anderem hier sagen kann, der hier "dumme" Fehler gemacht hat. Da aber sonst niemand dieses Problem hat, ist es wahrscheinlich, das ein "Facepalm" dabei rauskommt. Die große Mühe die Du Dir gegeben hast, die fast überwältigende Menge an Details die Du hier schreibst, die aber keinerlei Hinweis auf die Ursache enthält, macht es wahrscheinlich, das es sich wirklich um was eher - ähem, scheinbar selbstverständliches - handelt. Aber, wiegesagt: da Du hier wirklich bemüht mitarbeitest, wird Dir das vermutlich keiner übelnehmen. Und nochmal die dringende Bitte, den kompletten Projektordner, bei dem das Problem auftaucht, als ZIP zu posten. (Das ist doch ein kleiner Kritikpunkt, das Du darauf so garnicht eingehst). Falls Du mal ungefähr schreibst, wo Du wohnst, lässt sich vielleicht einer breitschlagen Dir einen 100nF Kondensator zu spenden. Da ich mittlwerweile neugierig bin, was die Ursache ist, wäre ich dazu unter Umständen auch bereit.
Gast
#3566907
Ich würde auch mal alles "Überflüssige" entfernen. In Deinem Fall die LED. Man kann ja nie wissen.
Gast
#3566913
Was mir auch gerade noch auffällt ist, das Du Dich als "Tiny10"-Nutzer bezeichnest, das Problem aber für den Tiny13 schilderst. Hast Du in den Projekteinstellungen wirklich den Tiny13 eingestellt? Wiegesagt. Poste mal den kompletten Projektordner als ZIP. Das ist das allerdringendste, denke ich.
Gast
#3566915
Ach, noch was: Du schreibst Du benutzt Windows 7. Ich selbst benutze das nicht zuhause. Hatte aber mal auf Arbeit damit zu tun. Ich will jetzt keinen Flamewar provozieren, aber es lohnt sich vielleicht es mal mit einem XP zu probieren. Hast Du noch einen weiteren Rechner?
Gast
#3566920
>Nach deinen Angaben muss >ich, wenn ich irgendeinen IRQ in Anspruch nehme, den Reset-Handler >(0x00) angeben, da sonnst bei Reset der erste aufkommende IRQ >angesprungen wird, ohne ausgelösst worden zu sein. Im Umkehrschluss >bedeutet dies aber auch, wenn ein IRQ ausgelösst wird, ohne dass ich >diesen mit ".ORG RJMP ??" einen Sinn gegeben habe (und statt dessen >Sinnloserweise einfach mein Programm dort steht) wird der IRQ dann zu >einer bestimmten Stelle meines Programms (unkontrolliert) springen und >ein wenig Chaos verursachen.
Gast
#3566923
Sorry. Zu früh auf abschicken gedrückt. Ich wollte dazu noch schreiben: Das klärt sich alles, wenn wir den Code sehen. An sich ist das fehlen der IRQ-Vektoren solange kein Problem, solange Du den Chip immer löschst. Falls Du ein .org verwendest, das hinter der Tabelle liegt, stehen da nämlich NOPS. Falls Du aber kein .org verwendest, steht Dein Code eben genau "auf" der Vektortabelle. Das schadet aber auch nicht, solange Du im Code keine spezifischen Interrupts freigibst.
Tiny10Nutzer schrieb: > Für den Kondensator brauche ich eine Weile. Nach Augenmass der Led > kommen am Chip Spannung und Strom satt an. Was aber im nicht sichtbaren > Bereich abgeht kann ich natürlich nicht sagen. Die Abblockkondensatoren erfüllen zwei Aufgaben. In so einem Attiny stecken jede Menge Feldeffekttransistoren. Wenn deren Gates umgeladen werden fliessen kurzfristig (Nanosekunden oder kleiner) recht hohe Ströme in die Gatekapazitäten. Längere Zuleitungen der Versorgungsspsnnung (mehrere Zentimeter) haben Widerstände, so dass diese kurzen Stromstöße die Spannung einbrechen lassen. Aufgabe eines Abblockkondensators ist es, diese Spannungseinbrüche zu verhimdern, damit a) der Attiny weiter mit einer sauberen Spannung arbeitet, und b) die Spannungsabfälle auf der Versorgungsleitung nicht als Funkmüll (EMI - elektromagnetische Interferenzen) abgestrahlt werden. Diese Effekte kann men aber mit einer LED nicht sehen. Bitflüsterer schrieb: > Was mir auch gerade noch auffällt ist, das Du Dich als "Tiny10"-Nutzer > bezeichnest, das Problem aber für den Tiny13 schilderst. Hast Du in den > Projekteinstellungen wirklich den Tiny13 eingestellt? Tatsächlich gibt es im Atmel Studio die Auswahl Attiny13 und aber auch Attiny13A. Ein Fehler an diese Stelle kann sehr wohl die beschriebenen Auswirkungen haben! Bitflüsterer schrieb: > Ach, noch was: Du schreibst Du benutzt Windows 7. Ich benutze Windown 8.1 und Atmel Studio 6.1, und es funktioniert soweit alles. LG, Sebastian
Gast
#3566958
>Ich benutze Windown 8.1 und Atmel Studio 6.1, und es funktioniert soweit >alles. Das ist schön und gut. Aber wir reden hier von Windows 7 und AVR-Studio 4. Ich sage ja nicht, das das die Ursache ist, aber das es mit W8 und AS6 bei Dir geht, heisst ja nicht, dass nicht durch die Verkettung unglücklicher Umstände die Kombination W7 und AS4 bei dem TO nicht gehen könnte. Es wäre jedenfalls kein Fehler das mal gegenzuprüfen. Was den Tiny angeht: Full Ack. Es muss völlig klargestellt werden um welchen Typ es sich genau handelt. Tiny13 oder Tiny13A oder was auch immer. (Ich war da etwas wurschtig indem ih von Tiny13 schrieb.)
Gast
#3566960
Einen Sockel mit Kondensator habe ich Bestellt. Kommt im Laufe der Woche bei mir dann an. Ich habe unter der Woche und am Wochenende verschiedene Wohnadressen und habe offengesagt nicht so gern Besuch. Ob die Led dran oder weg ist verändert nichts. Das Löschen des Tiny versuche ich auch immer zuerst. Nur ich bekomme jetzt mit dem Dragon nicht mal eine Verbindung zum Tiny. Da bringt auch Löschen nichts. Das Thema der IRQs war Offtipic. Ich habe in meinen Testprgrammen keine IRQs oder .ORGs verwendet (Siehe Assembler-Programme am Anfang). Ich verwende bis jetzt immernoch die gleichen beiden Testprogramme. Macht kein Sinn weiter zu Programmieren, solange ich mein Problem nicht gelösst bekomme. Ich kann euch gern den Projektordner als ZIP bereit stellen. Ich frage mich nur grade was ihr dann seht. Ich habe Probleme damit das Hex-File in den Tiny zu bekommen bzw. überhaupt eine sinnvolle Verbindung zum Tiny zu bekommen. Stehen darüber Informationen im Programmverzeichnis?
Gast
#3566961
Aus dem ersten Post: einige Tiny13A. >Es muss völlig klargestellt werden um >welchen Typ es sich genau handelt. Frage beantwortet.
Gast
#3566968
>Ich kann euch gern den Projektordner als ZIP bereit stellen. Ich frage >mich nur grade was ihr dann seht. Eine Erklärung, was man alles darin erkennen kann würde hier zu umfangreich. Es ist einfacher sich auf das zu beschränken, was wir dann, nach Ansicht, als problematisch bezeichnen. Bitte stelle nicht als Bedingung das wir das jetzt erstmal genau erklären. Poste einfach genau den Stand mit dem Du das Problem reproduzieren kannst.
Gast
#3566972
Na mal ganz cool Freunde. Ich habe mich Tiny10Nutzer genannt, weil ich vier davon habe (unbenutzt) und ich die Dinger Klasse finde. Ich nutze sie aber "NOCH" nicht. Ich habe AtTiny13A. 10 in DIP (DIL) und 200 in SOIC. Das der Tiny13 nicht das gleiche ist wie der Tiny13A habe ich schon von selbst gemerkt und habe auch in allen Flash-Programmen auf die richtige Einstellung geachtet.
Gast
#3566983
Bitte Meister.
Tiny10Nutzer schrieb: > Einen Sockel mit Kondensator habe ich Bestellt. Kommt im Laufe der > Woche bei mir dann an. Ich benuzte im Breadboard immer diese Tht-Kondis, noch von Maria (marsch-elektronik.de). LG, Sebastian
Gast
#3567007
Ich hab mir jetzt gedacht, wenn näher dran besser ist, dann direkt im Sockel drin. Ich habe jetzt den Sockel bestellt der im Bild oben (von mir) zu sehen ist. Sollte nicht so verkehrt sein. Und dürfte sich bequem weiterverwenden lassen. @sebastian. kannst du mir noch schnell sagen ob ich in meinem Denken von den IRQs (siehe Offtopic oben) richtig oder falsch liege?
Gast
#3567012
> ... ob ich in meinem Denken von den IRQs (siehe Offtopic oben) richtig > oder falsch liege? Nanu? Ist Dir doch schon beantwortet worden. Beitrag "Re: Programm ist im Tiny versetzt." Also, in dem Projekt kann ich nichts auffälliges feststellen, das einen Zusammenhang mit dem Problem haben könnte. Schade. Warten wir mal ab, was der Kondensator bringt.
Gast
#3567013
>kannst du mir noch schnell sagen ob ich in meinem Denken von den IRQs >(siehe Offtopic oben) richtig oder falsch liege? Das ist völlig Wurst. Du kannst 1,2,3,4,5 in den Tiny ab Adresse Null brennen. Das ist zwar kein funktionierendes Programm, aber das musst du so auch wieder auslesen können. Ohne einen Offset von 32. Alles andere hier ist sinnloses Gelaber.
Gast
#3567023
Eins ist allerdings doch auffällig an dem was Du schreibst. >Wenn ich vom Dragon eine Antwort bekomme die nicht 0x00 lautet, bekomme >ich die Signatur 0x01 0x03 0x05. Jetzt in wenigen Versuchen habe ich >mehrmals eine Signatur bekommen, von der AVR-Studio sagt sie währe >richtig. Das ist aber nicht die Signatur vom ATiny13a. Die sollte 0x1E 0x90 0x07 sein. Hat AVR Studio die Signatur nun als richtig bezeichnet, als Du 0x01 0x03 0x05 zurückgelesen hast oder als Du 0x1E 0x90 0x07 gelesen hast?
Gast
#3567033
Sorry. Ihr beide versucht grade krampfhaft einen Fehler in meinem Tun zu finden. Und vieleicht habe ich auch einen oder mehrere gemacht. Aber wenn ich einen gemacht habe, hat ihn noch keiner hier gefunden. Ich habe vom Dragon drei Signaturen als Antwort bekommen. Eine war 0x00 0x00 0x00. Eine war 0x01 0x03 0x05. Und an der dritten habe ich mir nur gemerkt, dass ABR-Studio-4 sie als richtig markiert hat. Ob es die von dir genannte ist, kann ich jetzt grade nicht sagen. Und ich müsste jetzt stundenlang rumdoktoren um die Signatur nochmal angezeigt zu bekommen. Helfen tut mir das Rumdoktoren dann aber auch nicht weiter.
Gast
#3567038
>Sorry. Ihr beide versucht grade krampfhaft einen Fehler in meinem Tun zu >finden. Und vieleicht habe ich auch einen oder mehrere gemacht. Aber >wenn ich einen gemacht habe, hat ihn noch keiner hier gefunden. Sicher. Solange man den Fehler nicht gefunden hat, hat man ihn nicht gefunden. Das ist eine Tautologie. Fehlersuche besteht eben gerade darin, das man Widersprüche klärt und Annahmen und Tatsachen miteinander vergleicht. Wo Du da eine "krampfhafte" Vorgehensweise siehst, verstehe ich nicht. Auch hat das mit Dir persönlich nichts zu tun. Aber gut. Dann sieh' eben alleine zu wie Du weiterkommst. Viel Erfolg noch.
Gast
#3567051
Ich bin für jede Hilfe dankbar. Und ich finde es auch richtig die Fragen zu stellen, die vorher noch keiner gestellt hat. Und ich bin mir auch der Tatsache sicher, dass hier fast jeder in Sachen AVR mehr drauf hat als ich. Nur kann man auch Leute die ein Problem nicht selbst gelösst bekommen vorverurteilen. Und selbst jetzt nachdem du so auf die Schnelle keinen Fehler bei mir gefunden hast, werde ich das Gefühl nicht los als wolltest Du mich für Dumm verkaufen. Es soll Leute geben die fühlen sich bei sowas auf den Schlipps getreten. Wie gesagt: Wenn du einen Fehler findest bin ich ganz Ohr. Nichts für ungut.
Gast
#3567096
>Sorry. Ihr beide versucht grade krampfhaft einen Fehler in meinem Tun zu >finden. Und vieleicht habe ich auch einen oder mehrere gemacht. Aber >wenn ich einen gemacht habe, hat ihn noch keiner hier gefunden. Hab grade nochmal von Anfang an gelesen. Ich meine mit "Ihr beide" nur einen. Wie gesagt: Nichtgs für ungut.
Wenn du mal und mal nicht die Signatur angezeigt bekommst, dann hast du entweder ein Verbindungsproblem oder aber deine Stromversorgung stimmt nicht. Hast du mittlerweile die Abblockkondensatoren drinnen? Anfangs dachte ich auch immer das ist doch quatsch, weil es auch ohne lief, bis die ersten Ungereimtheiten aufkamen. Wie stand es weiter oben? Er hat das Recht sich merkwürdig zu verhalten.
Gast
#3567121
Eigentlich ist es nicht auszuhalten, wie du wahllos in dem Problem rumstocherst. Such dir jemanden, bei dem das funktioniert und dann der Fehler eingekreist wird. Es ist nicht die Hardware. Auch die Diskussion uber IRQ und Sprungtabelle ist sinnlos. Die muß das File sowieso enthalten. Dann mußt du dir klar werden über das Fileformat. Wahrscheinlich liegt wie schon mehrfach erwähnt der Fehler. Es gibt .bin, das sind Files die das beinhalten, was du im Programmerfenster findest. Es gibt auch solche, die sich .hex nennen, aber eigentlich .bin sind. In letzter Zeit ist Intel-Hex zum Standard geworden. Es gibt aber noch andere, wo die Speicherorganisation mit enthalten ist. Man kann aber die Typen leicht konvertieren. Ich hab mal den extreme Burner installiert. Der will Intel-Hex. Also lade mal die Datei nochmal hoch, die du brennen willst. Vielleicht kann dein Problem nachvollzogen werden.
Hallo Marcel, programmieren, hex flashen, fuses auslesen und so weiter machen keinen Sinn, solange die Signatur nicht gelesen werden kann. Das Lesen der Signatur ist die Bestätigung, dass die Kommunikation zwischen Progger und Attiny funktioniert. Wenn die Signatur nicht korrekt gelesen wird, stimmt dort etwas grundsätzlich nicht, und muss als erstes behoben werden. Das erste Ziel sollte also zunächst nur darin bestehen, reproduzierbar die korrekte Signatur (0x1E9007) lesen zu können. Dazu in Atmel Studio erst mal nur Tools -> Device Programming benutzen, und kontrollieren, ob dort auch wirklich AVR Dragon Attiny13_A_ ISP ausgewählt ist. Meine Bemerkung mit 125kHz von oben muss ich übrigens zurücknehmen. Der Attiny13A läuft js im Werkszustand mit 1.2MHz, 1/4 davon ist 300kHz, also sollte eine ISP-Frequenz von 250kHz in Ordnung sein. Ich würde an deiner Stelle jetzt auf HVSP umschwenken. Du hast ja einen Dragon, und der Aufwand ist nicht viel höher als ISP. Und als aller Erstes nur versuchen, die Signatur korrekt auszulesen. Alternativ: Den Aufbau noch einmal kontrollieren. Diese Breadboard-Kabel lösen sich manchmal von ihren Steckern ohne dass man das auf Anhieb erkennt. Also mit dem Multimeter noch einmal die Widerstände vom Beinchen (!) des Attiny bis zum Anschluss am Dragon durchmessen. Und dann noch einmal versuchsweise ein externes 1Mhz Rechtecksignal and pin 2 vom Attiny13A (CLKI) anlegen. Nach deinen Angaben sind die Fuses zwar im Werkszustand (low 0x6A, high 0xFF), aber in deiner Situation würde ich mich noch nicht auf das korrekte Auslesen der Fuses verlassen. LG, Sebastian
Gast
#3567131
Sebastian Wangnick schrieb: > programmieren, hex flashen, fuses auslesen und so weiter machen keinen > Sinn, solange die Signatur nicht gelesen werden kann. Das Lesen der > Signatur ist die Bestätigung, dass die Kommunikation zwischen Progger > und Attiny funktioniert. Wenn die Signatur nicht korrekt gelesen wird, > stimmt dort etwas grundsätzlich nicht, und muss als erstes behoben > werden. Eigentlich ist es Wurscht, ob die Signatur stimmt. Hauptsache, es kommt eine zurück. Das Programm kann man in jeden AVR brennen und zurücklesen. Ein Hardware-Versatz bei den AVR kann ich mir nicht vorstellen. Wenn im Fenster des Programmers das bei 0000H beginnt, dann ist es auch im Prozessor. Also nochmal, das File hochladen. Und nicht nur den Text posten.
Tiny10Nutzer schrieb: > Nach deinen Angaben muss > ich, wenn ich irgendeinen IRQ in Anspruch nehme, den Reset-Handler > (0x00) angeben, da sonnst bei Reset der erste aufkommende IRQ > angesprungen wird, ohne ausgelösst worden zu sein. So ungefähr. Wenn du einen IRQ aktivierst, dann springt der Attiny beim Auslösen des IRQ die Programmadresse (den "Vector") des IRQ an. Also beim Attiny13A zum Beispiel 0x0003 beim Überlauf des Timers, 0x0006 bei TIM0_COMPA, 0x0007 bei TIM0_COMPB und so weiter. Siehe Datenblatt, Tabelle 9-1. Normalerweise programmiert man an diese Adressen einen Sprungbefehl zur eigentlichen Interrupt-Routine, weil man ja nur zwei Bytes (ein Word) zur Verfügung hat (danach folgt ja gleich ein anderer IRQ-Vector) und dort eben sinnvoll nur ein Sprungbefehl hinpasst. Beim Reset springt der Attiny immer zu 0x0000. Wenn dort 0xFFFF steht (also NOP), dann führt er als nächstes den Befehl in 0x0001 aus. Wenn dort ebenfalls 0xFFFF steht, dann führt er als nächstes den Befehl in 0x0002 aus. Wenn dort auch 0xFFFF steht, aber dann in 0x0003 ein Sprungbefehl zu einr Interruptrouting für TIM0_OVF, dann springt er dann natürlich in diese Interruptroutine. Was du geschrieben hast stimmt also meistens. Man könnte aber, theoretisch, ein ganzes Anwendungsprogramm in den Adressen 0x0000-0x0007 unterbringen, und dann zum Beispiel zusätzlich noch eine WDT-Routine ab 0x0008 abspeichern. Wenn dann ein Reset statfindet springt der Attiny nach 0x0000 und führt fröhlich das Anwendungsprogramm aus, und wenn ein WDT-Interrupt auftritt wird nach 0x0008 gesprungen und dort weitergemacht. Also: Die Interrupt-"Vektoren" sind nichts anderes als vordefinierte Adressen im stinknormalen Programmspeicher, und wenn du sie nicht benutzt kannst du diesen Programmspeicher eben stattdessen als normalen Programmspeicher nutzen. > Im Umkehrschluss > bedeutet dies aber auch, wenn ein IRQ ausgelösst wird, ohne dass ich > diesen mit ".ORG RJMP ??" einen Sinn gegeben habe (und statt dessen > Sinnloserweise einfach mein Programm dort steht) wird der IRQ dann zu > einer bestimmten Stelle meines Programms (unkontrolliert) springen und > ein wenig Chaos verursachen. Ja, genau. LG, Sebastian
Michael_ schrieb: > Eigentlich ist es Wurscht, ob die Signatur stimmt. Hauptsache, es kommt > eine zurück. Nein, die Signatur muss erst mal stimmen, vorher kann man alles andere vergessen. Michael_ schrieb: > Also nochmal, das File hochladen. Und nicht nur den Text posten. Das hex-file ist doch schon oben in "Versandbereit.zip": :020000020000FC :1000000000C00FEF07BB08BB00C013951F3F09F0EE :10001000FCCF41E0042708BB10E023952F3F09F0F7 :10002000F4CF42E0042708BB20E033953F3F09F0BE :0C003000ECCF44E0042708BB30E0E7CF31 :00000001FF LG, Sebastian
Gast
#3567144
Sebastian Wangnick schrieb: > Das hex-file ist doch schon oben in "Versandbereit.zip": Kann sein, das es irgendwo schon mal war, aber bitte nochmal! Und nicht .ZIP. Es ist ja klein genug. Sebastian Wangnick schrieb: > Nein, die Signatur muss erst mal stimmen, vorher kann man alles andere > vergessen. Mindestens in meinem alten Programmer konnte man die Signaturabfrage abschalten. Ein Programm für einen 2313 kann man problemlos in einen 8515 brennen. Laufen tuts nicht. Adresse 0000H bleibt nunmal die Adresse 0000H!
Gast
#3567216
Ich habe im Flasher des Studio eingestellt: Attiny13a; ISP; Speed 250 kHz; Drücke auf Signatur lesen; Drücke auf löschen Beim Button Read-Speed bekomme ich am häufigsten 1.000 MHz. Hier habe ich zwischen 6 kHz und 8 MHz alles mit Write-Button ausprobiert. Er hats aber nicht immer angennommen. Die Ergebnisse waren sehr unzuverlässig und Flashen hat bisher kein einziges Mal richtig funktioniert. In der zweiten Karteikarte zum Flashen geht gar nichts (ist alles mit Fehlermeldungen verbunden). Weiter hinten bei HW wird mir 5V angezeigt. AVR-Studio-4 > Tools > Upgrade Dragon; funktioniert wunderbar. Auch AVR-Studio-4 > Tools > Programm AVR > Connect; funktioniert sofort und störungsfrei. Kondensator bekomme ich im Laufe der Woche. @Sebastian Danke für deine schnelle Antwort.
Gast
#3567244
Hallo Tiny10Nutzer! Ich bin Neueinsteiger in diesem Metier! Mir wurde erzählt, daß man vorm Flashen erst mal die Signatur d. Proz. auslesen soll. Wenn diese schon falsch gelesen wird, liegt meist mit der ISP-Übertragung etwas im Argen. Bei mir läuft alles einwandfrei bei einem Übertragungstakt v. 125 kHz. Bei deiner Betriebsspannungsversorgung + Verbindungen v. Programmer z. Breadboard blicke ich nicht recht durch. Warum zwei Kabel lt. Foto? Ich arbeite z. B. nur mit der 6-pol. ISP-Verbindung u. habe bei der 6 pol. ISP-Buchse den Pin 2 (+5V) nicht beschaltet, versorge das Testboard mit einem eigene 9 V-Netzteil mit nachgeschaltetem 5V-Regler (7805). Auf dem Testboard sitzt selbstverständlich der 0,1 µF-Stützkondensator nahe am Proz.-IC! Mein Programmer wird über das USB-Kabel v. PC versorgt. ISP-Verbindungen zum Testbord sind nur 5 Leitungen: Reset, MOSI, MISO, SCK, GND. Meine Konfiguration: XP, AVR-Studio 4.18, Diamax All AVR. --> http://www.reichelt.de/DIAMEX-ALL-AVR/3/index.html?&ACTION=3&LA=446&ARTICLE=110345&artnr=DIAMEX+ALL+AVR&SEARCH=diamax++all+avr Weitehin: Gutes Gelingen! fredl
Sebastian Wangnick schrieb: > Michael_ schrieb: >> Eigentlich ist es Wurscht, ob die Signatur stimmt. Hauptsache, es kommt >> eine zurück. > > Nein, die Signatur muss erst mal stimmen, vorher kann man alles andere > vergessen. > Richtig! Er kommt ja nicht mal so weit das, was auch immer er da brennen will, zu brennen, wenn er keine gescheite Verbindung zum uC hat.
vielleicht ist das Ding auch verfused (Taktquelle) dann wird er keine Signatur zurückbekommen
Gast
#3567357
Die 10 Dinger sind (bzw wahren) Werksneu und an den Fuses war ich nicht dran. @Fredl Wird berücksichtigt.
Gast
#3567364
@Fredl Am Dragon kommt am ISP keine %V raus. Das soll wohl nur eine Messleitung sein. Ich muss den Target aber von irgendwoher mit Strom versorgen. Dafür stellt der Dragon auf einem anderen Stecker 5V bereit, die ich aber auch auf den ISP-Port geben muss. So kommt die zweite Leitung zu stande. Du hast mich aber auf eine Idee gebracht. Aus dem Billig-China-Progger kommen doch auch 5V raus. Den werde ich nachher mal zur Stromversorgung verwenden. Grüße
Gast
#3568075
Grinst... Keine Fehlermeldung mehr. Die Led blinkt. Hex-File-In :020000020000FC :1000000000C00FEF07BB08BB00C013951F3F09F0EE :10001000FCCF41E0042708BB10E023952F3F09F0F7 :10002000F4CF42E0042708BB20E033953F3F09F0BE :0C003000ECCF44E0042708BB30E0E7CF31 :00000001FF Hex-File-Out :1000000000C00FEF07BB08BB00C013951F3F09F0EE :10001000FCCF41E0042708BB10E023952F3F09F0F7 :10002000F4CF42E0042708BB20E033953F3F09F0BE :10003000ECCF44E0042708BB30E0E7CFFFFFFFFF31 :00000001FF (Den Speicher der mit FF gefüllt ist habe ich hier mal gekürzt) Ich habe jetzt hier den Billig-China-Progger nur zur Stromversorgung und den Dragon nur zum Proggen verwendet (also gleiche Schaltung nur statt Dragon VCC den Fishl VCC). Es gab von Vorn bis Hinten direkt keine Fehlermelung. Signatur Stimmte; ISP-Speed wurde direkt erkannt; Löschen ging; Flaschen ging; Verify ging und Read ging. Und... Led blinkt. Mich wundert nur etwas, dass das Ende des Hex-File minimal abweicht.
Tiny10Nutzer schrieb: > Grinst... > > Keine Fehlermeldung mehr. Die Led blinkt. > Ich habe jetzt hier den Billig-China-Progger nur zur Stromversorgung und > den Dragon nur zum Proggen verwendet (also gleiche Schaltung nur statt > Dragon VCC den Fishl VCC). Es gab von Vorn bis Hinten direkt keine > Fehlermelung. Signatur Stimmte; ISP-Speed wurde direkt erkannt; Löschen > ging; Flaschen ging; Verify ging und Read ging. Und... Led blinkt. > > Mich wundert nur etwas, dass das Ende des Hex-File minimal abweicht. Herzlichen Glückwunsch! So ist das mit der Stromversorgung. Ist mir heute auch passiert, aber mit einem TDA2822. Hatte gestern noch damit getestet, für einen elektronischen Gehörschutz und heute funktionierte das nicht mehr. Nur dumm, dass ich alles raus gerupft hatte, ohne einen Schaltplan gezeichnet zu haben. Letztlich lag es am Steckbrett.
Tiny10Nutzer schrieb: > Mich wundert nur etwas, dass das Ende des Hex-File minimal abweicht. Dein Original File endet bei 0x3b. Das siehst du an dem verkürzten letzten Record. Beim Auslesen wird immer ein 16-Bytes Record gelesen. Wenn du vergleichst, siehst du, dass es am Ende deines Original Files mit 0xff = gelöschte Zelle weiter geht.
Gast
#3577494
Ich habe den Kondenstor jetzt mal ausprobiert. Es ist so wie Ihr es gesagt habt. Ich kann den Tiny jetzt ohne externe Stromquelle programmieren. Danke auf jeden Fall für all Eure Antworten. Grüße
Tiny10Nutzer schrieb: > Hex-File-In > :020000020000FC > :1000000000C00FEF07BB08BB00C013951F3F09F0EE > :10001000FCCF41E0042708BB10E023952F3F09F0F7 > :10002000F4CF42E0042708BB20E033953F3F09F0BE > :0C003000ECCF44E0042708BB30E0E7CF31 > :00000001FF Das original Hex (das identische wird mir vom Assembler in AVRStudio 4 ausgespuckt, wenn ich deinen Code kompiliere) enthält 'zur Sicherheit' ein Extended Segment Address Record (Typ 02), siehe http://de.wikipedia.org/wiki/Intel_HEX Irgendein Intel Hex Interpreter in deiner Programmierkette kommt mit diesem Record nicht klar und misinterpretiert die '02' als Startadresse des Codes, wobei er sich noch verhaspelt. Wenn du vor dem programmieren also immer die erste Zeile des HEX löschst, sollte es in Zukunft richtig klappen. Allerdings wird dieses Record evtl. mal nötig, wenn du mehr als 64k adressieren willst.
Matthias Sch. schrieb: > Irgendein Intel Hex Interpreter in deiner Programmierkette kommt mit > diesem Record nicht klar und misinterpretiert die '02' als Startadresse > des Codes, wobei er sich noch verhaspelt. Merksatz für dich: vor dem ersten Kaffee keine Posts schreiben! Das Problem ist längst gelöst. Es war der fehlende Abblockkondensator am Target. Traurig, daß man 130+ Posts braucht, um das fetzustellen. Allerdings habe ich die Hoffnung, daß der TE diese Erfahrung nicht vergißt. Und dann war es ja für etwas gut. XL
Axel Schwenke schrieb: > Es war der fehlende Abblockkondensator > am Target. Traurig, daß man 130+ Posts braucht, um das fetzustellen. > Allerdings habe ich die Hoffnung, daß der TE diese Erfahrung nicht > vergißt. Und dann war es ja für etwas gut. Dem kann man sich nur anschließen.
Axel Schwenke schrieb: > Das Problem ist längst gelöst. Es war der fehlende Abblockkondensator > am Target. Und es zeigt deutlich, zu welche merkwürdigen Ergebnissen ein Weglassen derselben führen kann. Obwohl ich gestehen muss, dass ich bei den Symptomen mit Sicherheit nicht an die Blockkondensatoren gedacht hätte.
Gast
#3578751
Nur mal so ganz nebenbei, hatte letztens ein ähnliches Problem mit einem ATmega8. Es kann sein, dass hier auch die Beschaltung (Kondensator) nicht korrekt lief. Jedenfalls hat das programmieren mit der kleinsten ISP-Frequenz (2kHz oder so) geklappt.. Wenn man Probleme beim programmieren hat, sollte man vielleicht zuerst die Frequenz so klein wie möglich einstellen...
Gast
#3578774
Der TE war ja resistent gegen jegliches methodische Vorgehen.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.



