AtTiny2313 Flashproblem

#4921117
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
Gast #4921237
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.
#4921296
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
Gast #4921579
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.
#4921703
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
#4921714
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
#4921738
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 ;)
#4921744
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
#4921767
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.
#4921787
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
#4921857
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren