Attiny25/45/85 FW Development Thread

Ohh - never did it that way - I'll try.

I usually do fuses separate out of habit, since you don’t necessarily need to change them each time. If different fuses aren’t called for then I don’t do fuses when flashing a new hex.
Just tested flashing fuses on my half populated board. Flashed and verified without error.

The problems I have had with not being able to flash the MCU on a board have been components, in particular capacitors. In my case the capacitor has been enough to screw up the flashing process. Took me a while to figure this out, but once that capacitor was removed I could flash fine.

So what components do you have on what pins? AMC7135s don’t appear to interfere with the flashing process, I’ve been able to have them on any pin, but not so with capacitors.

I have a 85V on a bare board - no components at all, accept the MCU, and it won't flash. The bare board is a wight FET+1 driver.

^

When reading about how to make ground plane polygons, one reference said certain configs can create capacitance in the PCB. I think wight used ground plane polys in some of his later boards. Not saying this is the issue, but it might be something to consider. I seems unlikely though as we all should be having the same issue (assuming our programming and computer equipment are working about the same).

I guess you could set your DMM to measure capacitance and then measure between pins. If you do this, short the pins (without power connected) to discharge and any stored charges that may be in the PCB before taking each measurement.

EDIT: Corrected typo

Ok, I "think" I fixed the problem. I'm not too excited cause time will tell... The apparent big major problem is the pinouts of the USBASP V2.0 is not as documented, maybe... flashlightwiki seems to be wrong, at least not matching my USBASP. Also the Protostack "AC-PG-USBASP USBASP AVR Programmer" manual seems to have it wrong, even though that's where I bought the USBAVR from! Also, the ProtoStack doc and flashlightwiki don't match each other for pins #3 and #4. Ground pins are #8 and #10, pins #3 and #4 are something else -- 8 and 10 check for continuity, #3 doesn't. Both my USBASP's are labeled Lcsoft Studio, one bought from FastTech, one from ProtoStack.com, and both show no ground continuity on pins #3 or pin #4.

Ok, so change the ground pin from #3 on the dongle to #10 -- all flash programming issues seemed to have gone away. So far I haven't bricked any MCU's also, and it works multiple times without a hitch. What I'm doing now is setting the fuses separately from doing firmware dnld - two different batch files, ala Halo (thanks!). This in itself though did not help, did not fix the problem, but somehow it recovered an 85V I thought might have been bricked (no longer programmed in air).

Someone please confirm, or not, this insanity -- if we all have been wiring this up wrong and getting away with it for the 13A's...

I'm really, really hoping this is legit. WinkSmileCool

I can confirm, no ground on pin 3 of my blue LC Technology version. Pin 10 and 8 are ground. By the way pin 4 is suppose to be txd, goes along with pin 6 rxd on the LC Technology / LCsoft version. It was broken out for future use or alternative use of the board.

Did a little more searching, and in Hoop's useful thread on how to flash a Nanjg (https://budgetlightforum.com/t/-/30672), he references the flashlightwiki page, which I have to assume is wrong for the USBASP's we are buying now, but in his Post #1 he lays out the wiring for ground to go to the proper pin #10 in one set of pics/info (the clearest defined one), so maybe lots of guys have it right. Back when I started, we used flashlightwiki as the ultimate guide/ref.

Here: http://www.protostack.com/accessories/usbasp-avr-programmer, is a link to Users Guide that shows pin #3 as ground, pin #4 as TXD, but it seems clearly the doc is wrong about pin #3.

Protoshack, $18 for a usbasp clone?! At least double check and fix your pinout for $18.

Yes - I bought mine before I knew of FastTech, and the "Perfect Modes" thread and flashlightwiki were the only sources of info, so it was posted there ProtoStack had them. I got my latest AVRDude version from their site - drivers that work under Win 10. They actually have manuals, support, etc. , but after we found them on FastTech for cheap, we all got them from there. My FastTech one though has a bent USB connector - poor mount on the board.

This is great btw... I'm off writing code, testing, debugging, etc. Already re-dnlded 3-4 times without a hitch !!

I’m cheap, I like searching ebay and now aliexpress. They sometimes have better prices than FT / BG. Plus it’s easier to get a refund on ebay if the item never arrives or is doa.

Ok - got my 8 * 2 * 2 mode configurations working. Didn't take long once I could dnld. Works awesome so far - 8 sets of modes in lo->hi or hi->lo order, and mode memory or not. Just under 2K of code space.

I like how it works so far. I can add a couple more options now.

Nice!
Are you running at 8mhz on the tiny85? Have you tried 4mhz? I think 4mhz should increase reliability for the tiny85 (non-v) at lower voltages than it’s official 2.7v min. Then we can use the cheaper non-v 85s.

I don’t know if there reallyis the need, I mean is anyone going to want a LVP cutoff below 2.7v anyway? And official specs are usually conservative anyway, jeelabs sells atmel boards that run outside of specs and have never had a problem. But still I’d idea of helping to keep it reliable at lower voltages, just in case.

Yes - 8 Mhz. No, didn't try 4, but tried 6.4 Mhz, and even though I set F_CPU for 6.4, the timing of _delay_ms() was way off, like a factor of 5 times slower. Not sure why...

Nice to see you’re on track again!

Making some progress myself. I’ve now got the off time cap, voltage monitoring and the E-switch all working on the same pin, and the temperature sensor working also. It requires quite a lot of adaption in the code to do things this way, so porting my 84 firmware to the 85 will be a bit more time consuming. But happy that it works though.

Great to hear Tom E. I recall one wire not being right per the wiki back when I first set up, but I don't recall which one.

It could be just my imagination, but I find the light output at the lower levels seems more pleasant with this MCU. The output seems more "solid". They all are running at 8 Mhz.

That’s brilliant, freeing up pins for extra features like voltage indicator LEDs or extra sets of 7135s. Nice work!!

Yes - this is sounding real nice! Nice work Mike!! I think PWM's though will still be restricted to just two pins? Is that still true with this setup?

Thanks. Basically what I’ve done is do a voltage check on startup for off time, start the watchdog interrupt to highest 16ms, in the watchdog interrupt I do a temp check, restart ADC and then do a voltage check which covers E-switch and cell voltage. If the voltage is 0 (or very close to it) the the E-switch is pressed because it shorts to ground.

With the voltage divider resistors high enough and with very different values there is a measurable difference between the caps charge time and discharge time, allowing me to get off time readings on startup that are much lower than voltage readings during normal operation. R2 of the voltage divider works as a bleed resistor to the off time cap, so it has to be pretty high. I’m using 1500K as R1 and 300K as R2. I have to delay the normal voltage check slightly after each E-switch press in order to wait for the cap to be fully charged again or the cell voltage reading is too low.

I’ve got more testing to do to see high this works with lower voltages when the cells are nearing depletion, and also maybe temperatures will screw it up further. A few quick tests on difference voltage levels seems ok, but haven’t tried out under high temps. Looks good so far though, and requires no additional components, only higher values on the voltage divider resistors. Accuracy for off time measuring isn’t as good but so far I’ve been able to reliably detect quick off and medium quick consistently, so it appears good enough.

I’ve been reading this thread for a while and my understanding is you guys are trying to make
ATTiny 85 based driver with actual temperature detection (no more turbo timers), e-switch support,
accurate button press timing and possibly more modes (ramping?) and options due to more resources
85 provides?

Please excuse my ignorance. :slight_smile: