Forum: Mikrocontroller und Digitale Elektronik 1-Wire Programmer funktioniert nicht


von The SphereX (Gast)


Angehängte Dateien:

Lesenswert?

Hi Leute !!!

Da ich bei einem ATTiny45 auch den Reset-Pin als I/O nutzen möchte, habe 
ich mir den Fastboot Bootloader entsprechend angepaßt, kompiliert und 
auf den µC übertragen. Für den Programmer nutze ich die von Peter 
Dannegger vorgegebene Schaltung (Siehe Anhang!), wobei ich statt der 
4750 Ohm Widerstände, 4700 Ohm und statt der 1N4148 Dioden, 1N4002 
genommen habe. Die Bauteile hatte ich halt noch vorrätig und nach 
Auskunft hier im Forum, sollte es damit eigentlich auch funktionieren. 
Das Ganze ist dann über einen USB2TTL-Konverter (PL2303HXA Chip) mit dem 
PC verbunden. Unter Windows 7 sind die entsprechenden Treiber von 
Prolific installiert. Als Benutzeroberfläche für die Datenübertragung 
zum µC nutze ich den UpdateLoader.

So, bis dahin also keine Probleme. Nur scheitert das weitere Vorgehen 
dann leider schon am Verbindungsaufbau:

---------------------------------------------------
Firmware-Datei geladen (Test.hex)
Firmware-Update gestartet (170 Byte)
Fehler beim Firmware-Update, Ausführung abgebrochen

COM-Port öffnen
Verbindungsaufbau...
Fehler aufgetreten, Update abgebrochen!
---------------------------------------------------

Tja .... :-(

Der UpdateLoader führt also bei aktivierter "1-Wire Erkennung" die 
eingestellte Anzahl an Verbindungsversuchen durch und bricht dann ab.

Aber wo fange ich jetzt mit der Fehlersuche an? Es existieren hier ja 
eine ganze Menge Stellschrauben, an denen man drehen kann, angefangen 
beim Bootloader selbst, wobei ich mir da ziemlich sicher bin, daß dieser 
richtig konfiguriert ist, über die Schaltung bis hin zu den 
Einstellungen im UpdateLoader und dem Konfigurationsmenü des 
USB2TTL-Konverters im Gerätemanager (Baudrate, Datenbits, Parität, 
Stoppbits, Flusssteuerung, FIFO-Puffer).

Ich hoffe, daß mir hier jemand weiterhelfen kann.

Grüße,
The SphereX

von chris (Gast)


Lesenswert?

The SphereX schrieb:
> Baudrate, Datenbits, Parität,
> Stoppbits, Flusssteuerung, FIFO-Puffer).

wenn du direkt mit TTL-Pegeln arbeitest, musst du RX und TX des Adapters 
invertieren (ka ob deiner das kann, der FT232 kann es). Die Dioden 
brauchst du garnicht.
Ich habe gestern das gleiche Problem gehabt:
www.mikrocontroller.net/topic/345199

von chris (Gast)


Lesenswert?

keine Ahnung warum der Link nicht geht, hier nochmal:
Beitrag "Re: Fastboot (PeDa) OneWire Modus mit TTL Pegel"

von The SphereX (Gast)


Lesenswert?

Danke erst mal für den Hinweis, aber das Vertauschen von TX und RX hat 
leider auch nichts gebracht. Ich bekomme also nach wie vor keine 
Verbindung zum µC :-( .

Woran erkenne ich denn, ob sich hier überhaupt was tut? Wie gesagt, bei 
derartig vielen Stellschrauben, weiß man ja irgendwie gar nicht, wo man 
bei der Fehlersuche anfangen soll.

Ich habe einfach mal die Pegel am µC gemessen:

         --> ROT (5 V)       --> VCC
USB2TTL  --> SCHWARZ         --> GND
         --> WEISS RX (0 V)  --> PB2
         --> GRÜN TX (3,3 V) --> 10 kOhm --> PB2

> VCC: 4,90 V
> PB2: 3,62 V
> PB2: schwankend zwischen 3,47 V - 3,49 V während dem Verbindungsversuch

Läßt sich mit den Werten was die Problemlösung angeht evtl. etwas 
anfangen?

Grüße,
The SphereX

von Bernd K. (prof7bit)


Lesenswert?

> Woran erkenne ich denn, ob sich hier überhaupt was tut?

Häng das Oszi dran und schau Dir an was an dem Portpin ankommt und ob Du 
sehen kannst ob der Bootloader versucht zu antworten (und ob diese 
Antwort dann auch wieder ordentlich am RX-Pin der seriellen 
Schnittstelle ankommt und ob die Pegel eventuell invertiert sind [schau 
Dir ne funktionierende rs232 Kommunikation andernorts an zum Vergleich, 
versuche Ruhezustand (Mark, logisch 1) und Space (logisch 0) zu erkennen 
um ein Gefühl dafür zu bekommen wie sowas aussehen muss]).

von chris (Gast)


Lesenswert?

The SphereX schrieb:
> Danke erst mal für den Hinweis, aber das Vertauschen von TX und RX hat
> leider auch nichts gebracht.

nicht vertauschen! Die Pegel müssen invertiert werden - entweder 
pfriemelst du was mit Invertern zusammen oder du nimmst einen USB-UART 
Adapter bei dem man das einstellen kann wie z.B. den FT232

lg
Chris

von Chris R. (emigraen)


Lesenswert?

ich habe gerade in den Dateien zum Bootloader was geändert:
in der FASTLOAD.H sind die Makros definiert, die für die Pegel 
veranwtortlich sind. Ich habe das bei Onewire dann so geändert, dass es 
jetzt auch ohne Invertierung der Pegel direkt an einem USB-UART Adpater 
funktioniert.

Der letzte Abschnitt mit den Makros muss wie folgt aussehen (einfach 
ersetzen):

Anschließend muss natürlich der Bootloader neu assembliert werden
1
;-------------------------------------------------------------------------
2
;        Macros
3
;-------------------------------------------------------------------------
4
.if ONEWIRE
5
  .macro  IOPortInit
6
  sbi  STX_PORT, SRX    ; weak pullup on
7
  cbi  STX_DDR, SRX    ; as input
8
  .endmacro
9
  .macro  TXD_0
10
  sbi  STX_DDR, SRX    ; output
11
  cbi  STX_PORT, SRX    ; Pin low
12
  .endmacro
13
  .macro  TXD_1
14
  cbi  STX_DDR, SRX    ; input
15
  sbi  STX_PORT, SRX    ; Pullup on
16
  .endmacro
17
  .macro  SKIP_RXD_0
18
  sbic  SRX_PIN, SRX    ; low = 0
19
  .endmacro
20
  .macro  SKIP_RXD_1
21
  sbis  SRX_PIN, SRX    ; high = 1
22
  .endmacro
23
.else
24
  .macro  IOPortInit
25
  sbi  SRX_PORT, SRX
26
  sbi  STX_PORT, STX
27
  sbi  STX_DDR, STX
28
  .endmacro
29
  .macro  TXD_0
30
  cbi  STX_PORT, STX
31
  .endmacro
32
  .macro  TXD_1
33
  sbi  STX_PORT, STX
34
  .endmacro
35
  .macro  SKIP_RXD_0
36
  sbic  SRX_PIN, SRX
37
  .endmacro
38
  .macro  SKIP_RXD_1
39
  sbis  SRX_PIN, SRX
40
  .endmacro
41
.endif
42
;-------------------------------------------------------------------------

lg
Chris

von The SphereX (Gast)


Lesenswert?

Na das war jetzt aber fast schon Gedankenübertragung, denn meine nächste 
Frage hier wäre gewesen, ob man nicht einfach den Bootloader selbst so 
anpassen könnte, daß er auch nicht-invertierte Pegel akzeptiert.

Da warst Du wohl schneller ;-) ....

Ich werde Deine Modifikation heute gleich noch ausprobieren.

Grüße,
The SphereX

von The SphereX (Gast)


Lesenswert?

So, habe gerade den Bootloader mit den veränderten Macros neu kompiliert 
und einen weiteren Verbindungsversuch gestartet, leider wieder ohne 
Erfolg. Keine Ahnung, was da schief läuft!?

Der Bootloader + 1-Wire Hardware war eigentlich als schnell zu 
realisierende und vor allem kostengünstige Alternative zu einem "High 
Voltage Serial Programmer" gedacht und auch nur für den Fall, daß ich 
die Software auf einem 8-Pin Tiny mit Reset als I/O doch mal 
nachträglich verändern möchte. Dabei hatte ich natürlich nicht mit 
derartigen Komplikationen gerechnet. Und ich bin nach wie vor auch der 
Ansicht, daß sich die Fehlersuche hier sehr schwierig gestaltet.

Dann werde ich mir wohl doch lieber einen "Fusebit Doctor" basteln, der 
mir dann ebenfalls eine Neuprogrammierung erlaubt.

http://mdiy.pl/attiny-fusebit-hvsp-doctor/?lang=en

Es sei denn, ich bekomme hier doch noch DEN entscheidenden Hinweis zur 
Problemlösung mit dem Bootloader.

Grüße,
The SphereX

von chris (Gast)


Angehängte Dateien:

Lesenswert?

Ich hatte mit dem UpdateLoader leider auch immer wieder 
Verbindungsprobleme mit den geänderten Dateien.
Mit Peters FBOOT.exe geht es jedoch problemlos. Ist halt leider ohne 
GUI, aber eine kleine Batch-Datei dazu ist ja auch kein Problem:

Die beiden Dateien und die zu flashende HEX-Datei in einen Ordner 
kopieren. Die hex-Datei in program.hex umbenennen (oder alternativ in 
der fboot.bat den Dateinamen anpassen). In der Batch ist COM2 
eingestellt, auch das ggf. anpassen. Passwort ist das standardmäßig 
eingestellte (Peda).
1
FBOOT.exe /C2 /Pprogram.hex /Vprogram.hex /iPeda

So funktionierts bei mir problemlos mit Atmega88 und Attiny13.

lg
Chris

von The SphereX (Gast)


Angehängte Dateien:

Lesenswert?

Ok, dann experimentieren wir halt doch noch ein bißchen herum. 
Normalerweise gebe ich in solchen Fällen ja eigentlich auch nicht so 
schnell auf ;-).

In dem Sinne, nach Eingabe von

FBOOT.exe /C3 /PTest.hex /VTest.hex /iPeda

erscheint Folgendes:

---------------------------------------

******* Push Reset Botton *******

COM 3 at 57600 Baud: -

---------------------------------------

Daraufhin verbinde ich kurz den Reset-Pin des ATTiny45 mit GND, aber es 
tut sich nichts. FBOOT wartet und wartet .... Irgendwo ist da der Wurm 
drin. Vielleicht fällt Dir an meiner Konfiguration ja noch was auf.

1. Fastboot
-----------

> Bootload.asm

--> .include "tn45def.inc"
--> .equ    STX_PORT        = PORTB
--> .equ    STX             = PB2
--> .equ    SRX_PORT        = PORTB
--> .equ    SRX             = PB2

> Fastload.h

--> .equ    XTAL            = 8000000
--> .equ    BootDelay       = XTAL / 3
--> Onewire Macro nach Deinen Vorgaben angepaßt


2. Kompilieren
--------------

> avrasm2 -fI BOOTLOAD.ASM

--> ohne Fehler


3. Fuses
--------

> 8 MHz internal oscillator
> Div8 disabled
> Selfprogramming enabled


4. Win7 Gerätemanager: Prolific USB-to-Serial Comm Port (COM3)
--------------------------------------------------------------

> Siehe Screenshots!


5. Schaltung
------------

> nach Deinem Hinweis:

         --> ROT (5 V)       --> VCC
USB2TTL  --> SCHWARZ         --> GND
         --> WEISS RX (0 V)  --> PB2
         --> GRÜN TX (3,3 V) --> 10 kOhm --> PB2


Grüße,
The SphereX

von chris (Gast)


Lesenswert?

Hi,

ich habe leider keinen Attiny45 da, sonst könnte ich dein Hex-File 
testen, um dort Fehler auszuschließen.
Attiny25 hätte ich allerdings da.
Ansonsten: Hast du einen Atmega8, Atmega88, Atmega328, Attiny13 oder 
Attiny44?
Dann kann ich dir ein funktionierendes HEX-File schicken zum Testen.

An der sonstigen Konfiguration passt ja eigentlich alles, im 
Geräte-Manager muss man eigentlich auch nichts ändern.

lg
Chris

von chris (Gast)


Lesenswert?

Nachtrag: Einen Attiny85 habe ich auch gerade noch gefunden ;)

von The SphereX (Gast)


Lesenswert?

Na das Angebot nehme ich doch gerne an. So nähern wir uns meinem Problem 
sicherlich am besten. Ich würde mich dann alternativ für den ATTiny13 
entscheiden. Davon habe ich noch ein paar vorrätig und könnte 
entsprechend Deinen Bootloader damit testen :-).

Grüße,
The SphereX

von chris (Gast)


Angehängte Dateien:

Lesenswert?

Optimal ;)
Bootloader Pin ist PB0.
Wie gesagt hats beim Attiny13 mit UpdateLoader 9 von 10 mal nicht 
geklappt. Mit FBOOT.exe aber problemlos.

lg
Chris

von The SphereX (Gast)


Lesenswert?

Danke Dir schon mal! Ich bräuchte dann vielleicht noch die Taktung. 
Werkseinstellung mit 1,2 MHz (9,6 MHz, CKDIV8) oder ohne Teiler 9,6 MHz?

Grüße,
The SphereX

von chris (Gast)


Lesenswert?

ohne Teiler mit 9,6 MHz

von The SphereX (Gast)


Lesenswert?

Alles klar :-) ....

Grüße,
The SphereX

von The SphereX (Gast)


Lesenswert?

So, weiter geht's im Programm .....

Ich habe also Deine Bootloader-Version auf einen ATTiny13 geschrieben, 
alles wieder verkabelt und dann zunächst weiter mit FBoot herumprobiert.

FBOOT.exe /C3 /B9600 /PTest.hex /VTest.hex /iPeda

Bei der Baudrate habe ich mehrere Werte ausprobiert (zwischen 1200 und 
11520). Bei den meisten Versuchen hat es dann wenige Sekunden bis 
mehrere Minuten (!) gedauert, bis dann folgende Meldung erschien:

----------------------------------------

******* Push Reset Botton *******

COM 3 at 9600 Baud: Connected (One wire)
Bootloader VFFFFFFFF.FF
Error, wrong device informations

----------------------------------------

Ein einziges Mal dachte ich dann schon, daß es funktioniert hat:

-----------------------------------------------------------

******* Push Reset Botton *******

COM 3 at 9600 Baud: Connected
Bootloader V2.1
Target: 1E9007 C:\FBOOT.DEF
Buffer: 32 Byte
Size available: 542 Byte
Program test.hex: 00000 - 00020 failed!
Program-Error

-----------------------------------------------------------

Aber zu früh gefreut. Hier scheint zwar der Bootloader erkannt worden zu 
sein, allerdings jedoch nicht die One-Wire-Connection, und genau so 
wenig der ATTiny13, denn der müßte ja eigentlich bei "Target:" hinter 
der Hex-Zahl stehen.

Naja, und mit dem UpdateLoader hat's natürlich auch weiterhin nicht 
geklappt.

Positiv ist aber immerhin, daß ich mit FBoot jetzt zumindest schon mal 
Anzeichen von "Aktivität", um's mal vorsichtig auszudrücken, feststellen 
konnte. Aber was fange ich jetzt mit dieser Erkenntnis an?

Grüße,
The SphereX

von The SphereX (Gast)


Lesenswert?

Aus lauter Verzweiflung habe ich gerade einfach noch mal den von Dir 
verwendeten 10 kOhm Widerstand durch die in der ursprünglichen Schaltung 
vorgesehenen 4700 kOhm ersetzt.

UND SIEHE DA: ES FUNKTIONIERT :-) !!!

Und zwar absolut problemlos sowohl mit FBoot, als auch mit dem 
UpdateLoader (hier allerdings nur bis max. 57600 Baud). Mit meinem 
ATTiny45 klappt's jetzt auch wunderbar. Es lag in meiner Schaltung also 
ganz offensichtlich tatsächlich nur am zu hohen Widerstand und 
softwareseitig natürlich an den invertierten Pegeln, die im 
ursprünglichen Fastboot-Code enthalten sind. Da wäre ich ohne Dich 
sicherlich nie darauf gekommen und würde entsprechend auch mit den 4700 
kOhm jetzt noch ziemlich ratlos dasitzen.

Also nochmals DANKE :-) !!!

Grüße,
The SphereX

von Chris R. (emigraen)


Lesenswert?

Schön zu hören dass es jetzt funktioniert ;)
Ich hatte allerdings mit den 10kOhm zum Glück keine Probleme. Mal schaun 
obs mit 4k7 dann auch mit Update Loader klappt bei mir

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.