Forum: Mikrocontroller und Digitale Elektronik AtTiny2313 Flashproblem


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Michael E. (mieb)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich flashe mit dem ehajo ateval (bisher immer den AtTiny45) und jetzt 
bin ich aufgrund mangelnder Pins auf den AtTiny2313 umgestiegen.

Im Assembler Code hab ich sowohl
1
.include "2313def.inc"

als auch
1
.include "tn2313def.inc"

ausprobiert.

Wie auch immer ich es reinschreibe es geht nicht.
Ansonsten kann ich am Controller alles machen (löschen, fuses 
programmieren), nur wenn ich mein Programm flashen will bricht das Atmel 
Studio ab.

Hat da wer ne Idee?

Viele Grüße
Michael

von strohhalm (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Michael E. schrieb:
> Hat da wer ne Idee?

Versuch mal tn2313Adef.inc

Wenn das auch nicht geht und keine weiteren Infos zur Verfügung stehen, 
wirst du wohl damit leben müssen.

von c-hater (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Michael E. schrieb:

> .include "tn2313def.inc"

So muss das aussehen für einen Tiny2313.

> Wie auch immer ich es reinschreibe es geht nicht.

Was heisst "geht nicht" denn genau? Vermutlich eigentlich: "läßt sich 
nicht assemblieren".

Das ist wäre ziemlich normal, wenn man (schlechten) Code von einem 
Tiny45 verwendet. Zwischen den beiden Tinys gibt es doch recht 
erhebliche Unterschiede.

> Ansonsten kann ich am Controller alles machen (löschen, fuses
> programmieren), nur wenn ich mein Programm flashen will bricht das Atmel
> Studio ab.

Das findet wohl einfach nichts zum flashen, weil schon das Assemblieren 
fehlgeschlagen ist. Wie wäre es denn, wenn du einfach mal die Ausgabe 
beim Assemblieren liest. Da wird drinstehen, was ihm nicht passt.

Es kann aber auch noch an etwas anderem liegen: Nämlich den 
Einstellungen der Programmersoftware. Der muss man extra mitteilen, dass 
das Ziel nunmehr ein Tiny2313 ist und kein Tiny45. Und nein: die 
Programmersoftware weiss rein garnix davon, was im Quelltext steht. Die 
kennt nur das Hexfile und sogar dessen Inhalt ist ihr weitgehend 
Wurscht.

von Michael E. (mieb)


Bewertung
0 lesenswert
nicht lesenswert
Hab ich jetzt mal probiert ändert aber nichts am Ergebnis.

Die Fehlermeldung an sich ist auch nicht besonders hilfreich...

"Could not read from libusb0 connection: libusb0-dll:err 
[_usb_reap_async] timeout error"

von Michael E. (mieb)


Bewertung
0 lesenswert
nicht lesenswert
c-hater schrieb:
> Das ist wäre ziemlich normal, wenn man (schlechten) Code von einem
> Tiny45 verwendet. Zwischen den beiden Tinys gibt es doch recht
> erhebliche Unterschiede.

Der Code um den es geht ist speziell für den Tiny2313 geschrieben und 
keine Portierung oder sowas.

Das Assemblieren läuft problemlos durch.

Hier der ganze Code um anderweitige Fehler auszuschließen.
1
; Erstellt: 01.03.2017 15:17:52
2
; Version: 3.0
3
;
4
; Autor : Michael Ebel
5
;
6
; Mikrocontroller: AtTiny2313
7
;                                    ______     ______
8
;                                   |      \___/      |
9
;                 (RESET / dW) PA2 =|                 |= VCC
10
;                                   |                 |
11
;                        (RXD) PD0 =|                 |= PB7 (UCSK / SCK / PCINT7)
12
;                                   |                 |
13
;                        (TXD) PD1 =|                 |= PB6 (MISO / DO / PCINT6)
14
;                                   |                 |
15
;                      (XTAL1) PA1 =|                 |= PB5 (MOSI / DI / SDA / PCINT5)
16
;                                   |                 |
17
;                      (XTAL2) PA0 =|                 |= PB4 (OC1B / PCINT4)
18
;                                   |                 |
19
;         (CKOUT / XCK / INT0) PD2 =|                 |= PB3 (OC1A / PCINT3)
20
;                                   |                 |
21
;                       (INT1) PD3 =|                 |= PB2 (OC0A / PCINT2)
22
;                                   |                 |
23
;                         (T0) PD4 =|                 |= PB1 (AIN1 / PCINT1)
24
;                                   |                 |
25
;                  (OC0B / T1) PD5 =|                 |= PB0 (AIN0 / PCINT0)
26
;                                   |                 |
27
;                              GND =|                 |= PD6 (ICP)
28
;                                   |_________________|
29
30
; Taktart: Interner Oszillator
31
; Taktfrequenz: 8MHz
32
; Taktgenauigkeit +/- 10%
33
;
34
; Brown-out Detection: 2,7V
35
36
.include "tn2313def.inc"        ; Definitionsdatei für den AtTiny2313
37
38
.def temp = r16
39
40
;------------------------------- Interruptvektortabelle --------------------------------
41
.org 0x0
42
  rjmp RESET    ; Adresse 0x0000 (Reset Handler)
43
  rjmp INT0_ISR  ; Adresse 0x0001 (External Interrupt0 Handler)
44
  reti      ; Adresse 0x0002 (External Interrupt1 Handler)
45
  reti      ; Adresse 0x0003 (Timer1 Capture Handler)
46
  reti      ; Adresse 0x0004 (Timer1 Compare A Handler)
47
  reti      ; Adresse 0x0005 (Timer1 Overflow Handler)
48
  reti      ; Adresse 0x0006 (Timer0 Overflow Handler)
49
  reti      ; Adresse 0x0007 (USART0 RX Complete Handler)
50
  reti      ; Adresse 0x0008 (USART0, UDR Empty Handler)
51
  reti      ; Adresse 0x0009 (USART0 TX Complete Handler)
52
  reti      ; Adresse 0x000A (Analog Comparator Handler)
53
  reti      ; Adresse 0x000B (Pin Change Interrupt Handler)
54
  reti      ; Adresse 0x000C (Timer1 Compare B Handler)
55
  reti      ; Adresse 0x000D (Timer0 Compare A Handler)
56
  reti      ; Adresse 0x000E (Timer0 Compare B Handler)
57
  reti      ; Adresse 0x000F (USI Start Handler)
58
  reti      ; Adresse 0x0010 (USI Overflow Handler)
59
  reti      ; Adresse 0x0011 (EEPROM Ready Handler)
60
  reti      ; Adresse 0x0012 (Watchdog Overflow Handler)
61
62
RESET:
63
64
  ; I/O Konfiguration
65
  sbi DDRD, DDD0
66
67
  ldi temp, (1 << PORTA2) | (1 << PORTA1) | (1 << PORTA0)
68
  out PORTA, temp
69
70
  ldi temp, (1 << PORTB7) | (1 << PORTB6) | (1 << PORTB5) | (1 << PORTB4) | (1 << PORTB3) | (1 << PORTB2) | (1 << PORTB1) | (1 << PORTB0)
71
  out PORTB, temp
72
73
  ldi temp, (1 << PORTD6) | (1 << PORTD5) | (1 << PORTD4) | (1 << PORTD3) | (1 << PORTD2) | (1 << PORTD1)
74
  out PORTD, temp
75
76
  sbi PORTD, PORTD0
77
78
  loop:
79
  rjmp loop
80
81
INT0_ISR:
82
  reti

von Paul B. (paul_baumann)


Bewertung
0 lesenswert
nicht lesenswert
Michael E. schrieb:
> "Could not read from libusb0 connection: libusb0-dll:err
> [_usb_reap_async] timeout error"

Da liegt der Fehler in der Kommunikation mit dem Programmiergerät, nicht 
in dem Quelltext des Programmes.

MfG Paul

von c-hater (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Paul B. schrieb:

> Da liegt der Fehler in der Kommunikation mit dem Programmiergerät, nicht
> in dem Quelltext des Programmes.

Genau so ist das.

von Michael E. (mieb)


Bewertung
0 lesenswert
nicht lesenswert
@Paul
Das befürchte ich leider auch...
Aber das merkwürdige ist, dass es mit den Tiny45 einwandfrei klappt -_-

von Paul B. (paul_baumann)


Bewertung
0 lesenswert
nicht lesenswert
Michael E. schrieb:
> Aber das merkwürdige ist, dass es mit den Tiny45 einwandfrei klappt -_-

Hast Du denn in der Programmiersoftware auch den richtigen Typ 
Kontroller, nämlich nun den Attiny2313 statt des Attiny45 eingestellt?

Sind die Leitungen (Mosi, Miso, Sck, Reset und GND) auch richtig 
beschaltet?

MfG Paul

: Bearbeitet durch User
von Michael E. (mieb)


Bewertung
-1 lesenswert
nicht lesenswert
In der Atmel Studio Flash Oberfläche ist der Tiny2313 ausgewählt

und da ich ja den Ateval 
(https://www.ehajo.de/bausätze/bedrahtete-bausätze/ateval-atmel-evaluationsboard.html) 
verwende kann ich gar nichts falsch beschalten

Viele Grüße
Michael

von Karl M. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,

naja so ein AVR läuft erstmal mit dem RC Oszillator mit 1:8 Vorteiler.
Hast Du deshalb auch die ISP Geschwindigkeit angepasst ?

von Michael E. (mieb)


Bewertung
0 lesenswert
nicht lesenswert
Ist alles geprüft ja.

Die Fuse konnte ich ja sogar programmieren.
Der läuft mit dem inernen RC bei 8MHz ohne Prescaler

von c-hater (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Karl M. schrieb:

> naja so ein AVR läuft erstmal mit dem RC Oszillator mit 1:8 Vorteiler.
> Hast Du deshalb auch die ISP Geschwindigkeit angepasst ?

Das ist hier sicher nicht das Problem. Die Fehlermeldung besagt, das 
bereits die Kommunikation zwischen Programmer-Software und Programmer 
nicht klappt. Dafür spielt die Kommunikation zwischen Programmer und 
Target noch absolut keine Rolle.

Das Problem wird in der Hardwareschaltung liegen. Vermutlich wird das 
Target vom Programmer versorgt, verbraucht aber viel mehr Strom, als 
dieser liefern kann, wodurch der Programmer selber nicht mehr genug 
Spannung hat, um korrekt arbeiten zu können.

-> Irgendwo ist da in der Schaltung des Target ein Kurzschluss. Oder es 
braucht einfach wirklich mehr Strom, als der Programmer zu liefern 
vermag, also eine eigene, hinreichend leistungsfähige Stromversorgung. 
Dann muss aber die Einspeisung über den Programmer abgeschaltet werden.

von Patrick J. (ho-bit-hun-ter)


Bewertung
0 lesenswert
nicht lesenswert
Hi

Nicht, daß ich dort ein wirkliches Problem sehe:
Michael E. schrieb:
> ;                      (XTAL1) PA1 =|                 |= PB5 (MOSI / DI
> ;                      (XTAL2) PA0 =|                 |= PB4 (OC1B /
>   ldi temp, (1 << PORTB7) | (1 << PORTB6) | (1 << PORTB5) | (1 <<
> PORTB4) | (1 << PORTB3) | (1 << PORTB2) | (1 << PORTB1) | (1 << PORTB0)
>   out PORTB, temp
Wenn Du die Geräte an PB4/5 versuchsweise abklemmst?


Dann noch eine Frage, rein Interesse halber:
>   ldi temp, (1 << PORTD6) | (1 << PORTD5) | (1 << PORTD4) | (1 <<
> PORTD3) | (1 << PORTD2) | (1 << PORTD1)
>   out PORTD, temp
>
>   sbi PORTD, PORTD0
Warum setzt Du das Port 0 separat?

MfG

von Michael E. (mieb)


Bewertung
0 lesenswert
nicht lesenswert
Wer hat etwas von Geräten an PB4/5 gesagt??

Hab das nochmal extra gesetzt weil das der einzige Ausgang is den ich 
momentan benutze und den erst auf HIGH setzen will, wenn die gesamte 
restliche Konfiguration abgeschlossen ist...
Aber das tut eigentlich wenig zur Sache gerade

Viele Grüße
Michael

von Patrick J. (ho-bit-hun-ter)


Bewertung
0 lesenswert
nicht lesenswert
Hi

Da PB4/5 in Deinem Code explizit benutzt werden, ging ich davon aus, daß 
Du damit nicht nur Speicherplatz belegen willst - somit war meine 
Vermutung, daß dort angeschlossene Gerätschaften Dir die 
Programmier-Signale verfälschen - wobei ich solche Probleme bei mir noch 
nicht beobachten konnte - buche es unter 'externer Lösungsansatz' ab.

Letzteres war auch nur rein interessehalber und nicht auf das Problem 
bezogen, wunderte mich nur, da diese Zeile durch die zwei Zeilen drüber 
ebenfalls entfallen könnte.

MfG

Michael E. schrieb:
> Aber das tut eigentlich wenig zur Sache gerade

dito ;)

: Bearbeitet durch User
von Kurt P. (kurtcontroller)


Bewertung
0 lesenswert
nicht lesenswert
Hi,

nach meinen Erkenntnissen liegt es an der Stromversorgung.

Hänge den Programmer an an aktiven HUB - da sollte es funktionieren.


c-hater schrieb:
Oder es braucht einfach wirklich mehr Strom, als der Programmer zu 
liefern ..

Ich nutze das Evaluationsboard am Notebook nur mit einem USB3 Hub.
Ohne Hub - Probleme!!!

Gruß
Kurt

von Michael E. (mieb)


Bewertung
0 lesenswert
nicht lesenswert
Es wird jeder Pin des Controllers benutzt...

Das aktiviert einfach nur überall die Pull-Ups, damit die nicht alle 
etwas unvorhersehbares tun :D

von Thomas E. (Firma: Thomas Eckmann Informationst.) (thomase)


Bewertung
0 lesenswert
nicht lesenswert
Du hast es auch mit einem anderen Tiny2313 getestet und es gibt den 
gleichen Fehler? Es soll ja schon vorgekommen sein, daß ein Controller 
einfach eine Macke hat. Ja, ich bin mir sicher, daß das schon 
vorgekommen ist.

Genauso wie der Ehajo einen Fehler haben kann. Daß der Sockel für den 
45er funkioniert, lässt zwar erwarten, daß die anderen Sockel das auch 
tun, garantiert ist das aber nicht. Schon gar nicht, wenn du das Ding 
selbst zusammengelötet hast und den 2313-Sockel heute zum ersten Mal 
testest.

: Bearbeitet durch User
von Michael E. (mieb)


Bewertung
0 lesenswert
nicht lesenswert
Habs mit meinem zweiten Tiny2313 auch getestet => selber Fehler
Selbst zusammengelötet is es ja...

Was für originale Programmer kann man momentan empfehlen?

Viele Grüße
Michael

von Patrick J. (ho-bit-hun-ter)


Bewertung
0 lesenswert
nicht lesenswert
Hi

Um den Platinen-Fehler bestimmen oder ausschließen zu können, kannst Du 
doch die Programmier-Anschlüsse der ATtiny45 abgreifen und auf einem 
Breadbord den Tiny2313 damit testen.
Wenn's hier funktioniert, hast Du wohl ne kalte Lötstelle oder so was in 
der Beschaltung des Sockel.
Wenn nicht, hast Du immerhin schon zwei kaputte Steinchen :/

MfG

von Karl M. (Gast)


Bewertung
0 lesenswert
nicht lesenswert

von Thomas E. (Firma: Thomas Eckmann Informationst.) (thomase)


Bewertung
0 lesenswert
nicht lesenswert
Michael E. schrieb:
> Was für originale Programmer kann man momentan empfehlen?

Die empfehlenswerten Programmer sind nach wie vor die Originale von 
Atmel.

Aber nur nicht gleich die Flinte ins Korn werfen.

Ob es nun wirklich an dem Ehajo liegt, wissen wir ja gar nicht. Die 
Erfahrung zeigt nur, daß man im Fehlerfall nichts ausschließen darf. 
Nach dem Motto: Wenn das geht, muß das andere auch gehen. Abgehakt. 
Nein, das ist nicht so!

Ich würde als erstes den Sockel des Ehajo nachlöten. Manchmal gibt es 
"unsichtbare" Lötspritzer, die Kurzschlüsse verursachen, nichtmal 
richtige Kurzschlüsse, sondern nur "mittelohmige" Verbindungen. Mit 
Nachlöten kriegt man die mit ziemlicher Sicherheit weg. Eventuelle kalte 
Lötstellen werden auf diesem Weg gleich mit beseitigt.

von Michael E. (mieb)


Bewertung
0 lesenswert
nicht lesenswert
Okay das hat mich jetzt doch sehr verwundert :D
Ich habe das Board einfach mal an einen anderen USB-Port angeschlossen 
und dann hat der ganz ohne meckern geflasht.

Danke für die Mühe an alle, manchmal lösen sich Probleme ganz von selbst

Grüße
Michael Ebel

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.