Symbol library for AVR microcontrollers with Arduino pinout

I just wanted to announce that I’ve created a KiCad library of AVR microcontrollers with the Arduino pinout. The schematic symbols are marked with the Arduino pin numbers (D0, D1, … and A0, A1, …) in addition to the AVR pin names. This should make it easier when designing boards that are meant to be programmed with the Arduino tools.

The library has symbols for 8-pin, 14-pin, 28-pin, and 40-pin DIP AVRs. It also has symbols for 6-pin and 10-pin ISP headers, and the 6-pin FTDI header.

I also have templates for each size of AVR, with the minimal circuit necessary to make the AVR work.

3 Likes

Just an FYI, you’ve used symbolic links for some files, those don’t work on Windows.

That’s why I provided the zipfiles for individual templates. Each zipfile contains a complete copy of the symbol library and footprint library. (By default, zip follows symbolic links instead of archiving the link itself.) So if you use the zipfiles, you should be fine on Windows, since they do not contain symbolic links.

By using symbolic links in the repo, I can have a single copy of the libraries, but still have the libraries contained within each template. (So that when you instantiate a template, you get a local copy of the library, without having to set up paths and point to a copy of the library that is outside your project.)

What version of zip are you using? Most seem to zip up the link, not follow it. The zip provided by github with the “Clone or Download” button does not follow symlinks.

I can see why you did it, but this trick is not portable and you did not mention that anywhere. Even if we know what we are doing, there might be less knowledgeable users who clone or download the repo to get all the templates, and then find they don’t work. Or if someone forks the repo to make changes, it can make it more difficult to work with.

$ zip --version
Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.
This is Zip 3.0 (July 5th 2008), by Info-ZIP.

Is there a better way to achieve the same result?

Maybe reverse your symlinks? Have the actual file(s) in your local repo, and where you have KiCad configured to use has the symlinks? Just throwing ideas on the wall to see if they stick.

Not sure I understand that. Can you give an example of what would be linked to where?

Hmm, now that is the $64,000 question! I used to publish projects with common libraries using relative paths, but that stopped working. Apparently it now works if you use “${KIPRJMOD}/…/common/mylib.pretty” so that may be the way to do it.

I’m currently working on the theory that data packages need to be “installed” into KiCad, and I’m working on a script to enable that.

But that assumes the directory structure will be kept unchanged. Normally, when you instantiate a template, the template will be copied somewhere else (to wherever the user creates their project), so then relative paths won’t work anymore. I want the template to be self-contained.

Ah yes, of course. I think then the only option is to copy the libraries into each project that use them, I did that with some Smoothieboard projects but having to diff/merge libs to maintain a common lib was a real pain.

I like the way you have release versions, that seems like a good way to handle it from the user side, as long as users are aware they may not be able to use the git repo/zip directly. Maybe add a note to the readme is best compromise?

It’s a thorny problem though, I am still looking for better ways which make it easy for the content publisher and user.

Sorry, never mind. I didn’t understand properly.

Nothing%20to%20see%20here

Sounds good; I’ve gone ahead and done that.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.