AVR Attiny44A als 1Wire Slave konfiguierbar DS2423/DS18BS20/DS2408/DS2413/DS2450

Begonnen von ritchie, 11 April 2014, 17:34:27

Vorheriges Thema - Nächstes Thema

ak323

Zitat von: habeIchVergessen am 01 April 2017, 20:54:16
Wie bekomme ich das hex-File auf den ATtiny44a? Hatte jemand ein paar Tipps für mich?

... den Tipp hätte ich auch gerne ...
RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, diverse HomeMatic, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401, DS2423 ATTiny) über DS9490R#, Waterkotte Ai1QE (WWPR) Wärmepumpe über Modbus, WH1080 über Signalduino, 433MHz Funksteckdosen, WiFi RGBWW via Tasmota, ...

Tobias

Ist relativ einfach. Entweder nimmst du eine gekaufte programmerplatine wo du den artiny aufstecken kannst, oder programmiert ihn über einen programmer deiner Wahl per ISP

Gesendet von meinem Leap mit Tapatalk

Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

habeIchVergessen

#92
habe ein arduino nano mir arduinoISP geflasht und mit avrdude ein hex-file geflasht


avrdude -p attiny44 -c avrisp -P\\.\COM22 -b 19200 -U flash:w:DS2408_29.a30000000001.78.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.05s

avrdude: Device signature = 0x1e9207 (probably t44)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "DS2408_29.a30000000001.78.hex"
avrdude: input file DS2408_29.a30000000001.78.hex auto detected as ELF
avrdude: writing flash (2358 bytes):

Writing | ################################################## | 100% 4.52s

avrdude: 2358 bytes of flash written
avrdude: verifying flash memory against DS2408_29.a30000000001.78.hex:
avrdude: load data flash data from input file DS2408_29.a30000000001.78.hex:
avrdude: input file DS2408_29.a30000000001.78.hex auto detected as ELF
avrdude: input file DS2408_29.a30000000001.78.hex contains 2358 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 2.71s

avrdude: verifying ...
avrdude: 2358 bytes of flash verified

avrdude: safemode: Fuses OK (E:FF, H:DC, L:E2)

avrdude done.  Thank you.


device wird nicht erkannt. Mache ich etwas falsch?

Nachtrag: zum Test habe ich das Device, das funktioniert, neu geflasht (owid geändert). Fuse habe ich verglichen und angepasst. Bootloader auch neu geflasht.
ATtiny aus dem Sockel genommen und auf Breadboard geflasht. Wird nicht zuverlässig erkannt.
mit dem Austausch der ATtiny's hat sich auch die Zuverlässigkeit bei der Erkennung geändert. Scheint also ein Platinenproblem zu sein.

die BAT43 (D1) ist defekt.

habeIchVergessen

Kann mir jemand eine Überblick über den DS2408 geben?
Bei mir funktioniert eigentlich nur Channel Access Write, Read PIO Registers und Activity Latch Reset.
Wie kann ich die Ausgänge steuern (In- vs. Output)?

juergs

Zu den ATtiny-Flashproblemen:
Ich arbeite viel mit dem ATtiny 85 und 841. (z.B. hier )
Die ATtiny werden mit avrdude auch nicht erkannt. Da liegt meiner Meinung
nach an der Standard-Bitclockeinstellung, da die Fuses initial ja auf CLK, intern, geteilt durch 8
eingestellt sind. Avrdude verwendet dann 1.5 MHz als Bitclock, was doch etwas zuviel ist.
Die ATtinies waren dann nur mit 32KHz Bitclock zum Ansprechen zu bewegen (USBasp + avrdude).

Hier eine Beispiel-Einstellung auf 32KBit:
-c usbasp -p t841 -P usb -B 20.96 -e -U flash:w:"C:\Users\Jürgen\AppData\Local\Temp\arduino_build_220080\sketch_841_Led_Blink_D7.ino.ino.hex":a
Parameter -B 20.96 hinzufügen....

Für Win + Raspi unter Mono kann ich mit der Kombi   USBasp-Programmer und GUI: AVRDUDESS
empfehlen.

Grüße,
Jürgen


habeIchVergessen

mit dem zusätzlichen Parameter -B habe ich keine Veränderung beim Flashen festgestellt.

hat jemand ein DS2408 im Einsatz (ich habe die Platine von locutus; die große!!!)?

wenn ich zwei DS2423 auf einem Bus habe, dann werden beide nicht erkannt.
Wird jeweils nur einer angeschlossen, dann wird dieser erkannt. Das spätere Hinzufügen des zweiten resultiert aber nicht in dessen Erkennung (Reihenfolge ist egal).
Haben andere vergleichbare Probleme?

eldrik

Zitat von: habeIchVergessen am 10 April 2017, 11:51:36
wenn ich zwei DS2423 auf einem Bus habe, dann werden beide nicht erkannt.
Wird jeweils nur einer angeschlossen, dann wird dieser erkannt. Das spätere Hinzufügen des zweiten resultiert aber nicht in dessen Erkennung (Reihenfolge ist egal).
Haben andere vergleichbare Probleme?

Haben die DS2423 Emulationen unterschiedliche 1Wire IDs geflashed bekommen?

Greetz
Eldrik


eldrik

Weitere Sensoren am Bus?

Separate 5V Spannungsversorgung oder 5V direkt vom Busmaster? Spannungsversorgung durchgemessen?

Greetz
Eldrik


habeIchVergessen

1x DS18B20
separate 5V, 4,91V gemessen, 1-wire bus 4,66V von BusMaster, WemosD1 scheint nicht mehr zu liefern. Ggf. werde ich die Platine von hexenmeister noch um eine externe Spannungsversorgung ergänzen.

ak323

Zitat von: habeIchVergessen am 01 April 2017, 20:54:16
hatte mir vor einigen Monaten zwei DS2423 von locutus gekauft.
Nachdem sie ein Weile ungenutzt rumgelegen haben, hatte ich kürzlich ein Device ans Laufen bekommen.

Leider wollen jetzt beide nicht mehr mit mir reden.
Den Quellcode bekomme ich kompiliert (DS2423 + owid gesetzt).

Wie bekomme ich das hex-File auf den ATtiny44a? Hatte jemand ein paar Tipps für mich?

Nachtrag:
habe gerade die ISP-Pins mit dem Pinout vom ATtiny44a abgeglichen und siehe da. er geht wieder! Habe ich damit den gold cap entladen?
wäre arduinoISP das Mittel der Wahl gewesen?

Kann uns vielleicht bitte jemand ein HEX file für den DS2423 auf dem Attiny44 bereitstellen ?
Wie ich die .hex nun auf den Attiny bekomme ist geklärt ... (USBasp) ...

Danke.
RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, diverse HomeMatic, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401, DS2423 ATTiny) über DS9490R#, Waterkotte Ai1QE (WWPR) Wärmepumpe über Modbus, WH1080 über Signalduino, 433MHz Funksteckdosen, WiFi RGBWW via Tasmota, ...

habeIchVergessen

#101
unter Windows sieht ein make.cmd etwa so aus (avr-gcc ist in der Arduino IDE zu suchen)

@echo off

setlocal

set avrgcc="%UserProfile%\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.3-arduino2\bin\avr-gcc.exe"

del /Q /S owslave.hex owslave.o

%avrgcc% -v -std=c99 -Wall -Os -mmcu=attiny44a -o owslave.hex owslave.c


in owslave.c das entsprechende Device auswählen (#define DS24xx per Kommentar ändern; Sektion "// selection of the used")
danach owslave.hex per make erzeugen und flashen

ak323

Danke ! Ich habes in den ATTINY reinbekommen, allerdings scheinen die Zähler mit dieser Platine (https://forum.fhem.de/index.php/topic,22431.msg404229.html#msg404229) nicht richtig erfasst zu werden .. die LEDs gehen nicht an ..

Ist das HEX für diese Schaltung von locutus ?   ... müssten dann nicht insgesamt 4 counter in OWFS auftauchen ?

Danke für weitere Hilfe, ak323
RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, diverse HomeMatic, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401, DS2423 ATTiny) über DS9490R#, Waterkotte Ai1QE (WWPR) Wärmepumpe über Modbus, WH1080 über Signalduino, 433MHz Funksteckdosen, WiFi RGBWW via Tasmota, ...

habeIchVergessen

Die LEDs müssen expl. in owslave.c erlaubt werden (Default ist aus).
Nach meinem Wissensstand kann ein DS2423 nur 2 Counter liefern. Beim locutus-Device sind das IN 3+4.

ak323

OK, danke habeIchVergessen ...

Mein ATtiny44 zählt jetzt mit dem .hex welches Du gepostet hast, allerding nicht immer 1 mehr, sondern irgendwie undefiniertes Inkrement (mit einem Draht als Kontakt) .. ?! .. ich denke man sollte das eigentlich mit dem Poti einstellen können ? Flankensteilheit/Trigger ?
Ich will einen induktiven Näherungssensor zum Auslesen der Wasseruhr verwenden (https://forum.fhem.de/index.php/topic,44613.msg364285.html#msg364285).. hilft da ein Optokopper oder ein Schmitt-Trigger einzelne Impulse für die Eingänge bereit zu stellen ? ... gerne Vorschläge ...

Wozu ist denn "mincount" ? ... scheint sich nicht auszuwirken ... ?

Danke auch für die Erklärung wie man mit der Arduino IDE kompiliert ... hatte mir schon AVR Studio 7 runtergeladen .. ;-)
Habe den ATtiny überigens mit einem USBasp extern auf einem Breadboard geflashed ...

[Nachtrag 24.04.]
Cool !
... mit einem Temic K153P Fototransistor am Eingang zählt er nun die Impulse meines "intelligenten" Stromzählers .. mal sehen, ob er sich auch nicht verzählt ...  8)

[Nachtrag 25.04./06.05.]
Jetzt zählt der 2. Counter auch meinen Wasserverbrauch !
Optisch entkoppelt auch über einen K153P auf der LED des induktiven Näherungssensors ... CNY17 Optokoppler (funktioniert einfach stabiler).

ak323

RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, diverse HomeMatic, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401, DS2423 ATTiny) über DS9490R#, Waterkotte Ai1QE (WWPR) Wärmepumpe über Modbus, WH1080 über Signalduino, 433MHz Funksteckdosen, WiFi RGBWW via Tasmota, ...