Archive for the ‘Uncategorized’ Category

Testing the Atmel Mega32U4

Tuesday, December 2nd, 2008

Mega 32 U4

While I am wrangling with the appropriate board design, I needed to get started working with the underlying software so I ran up one of the six samples I was able to get from Cascade on a tqfp adapter from measure explorer.

Schematic For Test Board

The AtMega32U4 is the midrange model in the atmel usb chipset. It follows a new standard naming convention that atmel is adapting U for Usb 4 is for the 40 pins 32k, there is another 32K part the U6 which has the same pinouts as the 90usb646/647/1286/1287. The U4 does not have a legacy pinout however the q1000 price for this board is around $2 which makes it a very powerful chip for the money.

Dfu-Programmer.

There is a new release of dfu-programmer but it seems that they havent read the atmel doc on the signatures for the dfu recently. http://www.atmel.com/dyn/resources/prod_documents/doc7618.pdf

I need to check the memory and eeprom sizes against the datasheets for the parts. However the table in arguments.c should have the following entries; added new parts, corrected 64x and 82 signatures. (I will resubmit this patch).

/* ----- target specific structures ----------------------------------------- */
/*  { "name",         value,            ,device_type, chipID,VID   , MemSize,FPSize,abt,ifclass,eepgsz,eepmemsz} */
static struct target_mapping_structure target_map[] = {
    { “at89c51snd1c”, tar_at89c51snd1c, device_8051, 0×2FFF, 0×03eb, 0×10000, 128, false, true,  0,   0      },
    { “at89c5130″,    tar_at89c5130,    device_8051, 0×2FFD, 0×03eb, 0×04000, 128, false, true,  128, 0×03FF },
    { “at89c5131″,    tar_at89c5131,    device_8051, 0×2FFD, 0×03eb, 0×08000, 128, false, true,  128, 0×03FF },
    { “at89c5132″,    tar_at89c5132,    device_8051, 0×2FFF, 0×03eb, 0×10000, 128, false, true,  0,   0      },
    { “at90usb1287″,  tar_at90usb1287,  device_AVR,  0×2FFB, 0×03eb, 0×1F000, 128, true,  false, 128, 0×0FFF },
    { “at90usb1286″,  tar_at90usb1286,  device_AVR,  0×2FFB, 0×03eb, 0×1F000, 128, true,  false, 128, 0×0FFF },
    { “at90usb647″,   tar_at90usb647,   device_AVR,  0×2FF9, 0×03eb, 0×0F000, 128, true,  false, 128, 0×07FF },
    { “at90usb646″,   tar_at90usb646,   device_AVR,  0×2FF9, 0×03eb, 0×0F000, 128, true,  false, 128, 0×07FF },
    { “atmega32U6″,   tar_atMega32u6,   device_AVR,  0×2FFB, 0×03eb, 0×07000, 128, true,  false, 128, 0×03FF },
    { “atmega32U4″,   tar_atMega32u4,   device_AVR,  0×2FF4, 0×03eb, 0×07000, 128, true,  false, 128, 0×03FF },
    { “atmega16U4″,   tar_atMega16u4,   device_AVR,  0×2FF3, 0×03eb, 0×03000, 128, true,  false, 128, 0×01FF },
    { “at90usb162″,   tar_at90usb162,   device_AVR,  0×2FFA, 0×03eb, 0×03000, 128, true,  false, 128, 0×01FF },
    { “at90usb82″,    tar_at90usb82,    device_AVR,  0×2FF7, 0×03eb, 0×01000, 128, true,  false, 128, 0×01FF },
    { NULL }
};

Then we test.

static
dfu-programmer atMega32U4 get bootloader-version --debug 20
     target: atMega32U4
    chip_id: 0x2ff4
  vendor_id: 0x03eb
    command: get
      quiet: false
      debug: 20
device_type: AVR
------ command specific below ------
       name: 0

Bootloader Version: 0x00 (0)

(after reading the datasheets for the 3 classes of avr usb chips and looking at the way that the avr-gcc library calls the cpu names there are some changes to the above that I will post later.)

Next up some code.

Tried running up the midiGate software that I wrote last week and found my first bug for the chip in avr-libc

UBRR1 is redefined in iom32u4.h

#define UBRR1 _SFR_MEM16(0xCC)

#define UBRR1L _SFR_MEM8(0xCC)
#define UBRR0 0
#define UBRR1 1
...

Which results in lvalue errors errors when trying to set the register to a given value. Setting the bit values as in some of the other registers seems to resolve this issue.

#define UBRR1 _SFR_MEM16(0xCC)

#define UBRR1L _SFR_MEM8(0xCC)
#define UBRR_0 0
#define UBRR_1 1
#define UBRR_2 2
#define UBRR_3 3
#define UBRR_4 4
#define UBRR_5 5
#define UBRR_6 6
#define UBRR_7 7

#define UBRR1H _SFR_MEM8(0xCD)
#define UBRR_8 0
#define UBRR_9 1
#define UBRR_10 2
#define UBRR_11 3

This is a pretty braindead error so I am sure that its been resolved by now. I need to see if it is fixed in 1.6.3 or the current release candidate (since AvrMacPack is out of sync and has 1.6.2) And yes this is the case.

We have a device!!! 

Note the dorkboard….

Sunday, September 21st, 2008

Ethan and his dad came to the first dorkboard based induction. This is one of his recent projects.

http://etharooni.wordpress.com/2008/09/21/nunchucklogger/

Very cool stuff.

Our first reseller.

Sunday, September 7th, 2008

Brian Reilly at Wulfden picked up the dorkboard in his freeduino line of products.

http://wulfden.org/TheShoppe/freeduino/dorkboard.shtml

Yeah!

Local Induction.

Friday, August 15th, 2008

Why Portland?

Thursday, July 10th, 2008

I get a lot of people asking what Tempus Dictum does.  What’s the company about?  What do y’all do?  Etc.  And from my friends in Silicon Valley, I often get the question:  Why Portland?

Well, there are many answers to these questions, some of which I’ve covered (albeit in an apparently infuriatingly vague way, according to some) in previous log entries.  I admit this is a problem and we really should work on our … [cough] … messaging.

But, regarding the question of why we’re located in Portland, I can cite at least two things right off the bat:

  1. a do-it-yourself culture, and
  2. beer.

I won’t say anything about the DIY culture this post.  And Portland’s reputation for beer is global.  Now before you jump to the conclusion that we merely have a prurient interest in beer, I’d like to point to this article, which makes an interesting point that speaks directly to everything Tempus Dictum is about, including the English translation of its name “Statement of the Time”.  Civilization is based not on high-falutin’ past times like science, economics, or politics.  Civilization is based on banal things like water, shelter, food, and neighborhoods.  Portland excels at the banal while maintaining a satisficing tendency toward intellectual foresight.  And if Mr. Will is right and beer is positively correlated with civilization, then Portland is one of the most civilized cities on the planet.  Shouldn’t that be enough of a reason?

The Inverse Map

Wednesday, June 18th, 2008

In the course of my duties as a biological modeler (whatever that may mean to you, my dear reader; were you to exist, of course) I am sporadically called upon to wax explanatory on the relation between generators (abbreviated and unitized as “gene” in some domains) and phenomena. The path from generators to phenomena is called the “forward map” and, perhaps obviously, the path from the phenomena back to its causes, the generators, is called the “inverse map”. It is largely the subject of plectics ¹ (a.k.a. complexity theory) to discover, use, and make repeatable, methods for accurately following these two paths. A primary premise of the computationalist approach to plectics is that the forward map is not so straightforward. I.e. beyond a certain degree of simplicity, it is not clear what phenomena will emerge from the generators. And this premise is emphasized because it is so often forgotten. It is the reason Chaos theory, fractals, and games like chess are so maddeningly interesting.

Similarly, the cyberneticists have an emphatic premise: that complexity comes about through feedback loops. Again, beyond a certain degree of simplicity, it is not clear which part of a system is the cause and which is the effect. Phenomena are exacerbated with positive feedback and dampened with negative feedback.

Both emphases are appropriate and the fact that we even have a distinction between computationalists and cyberneticists is an example of specialization gone mad. ² Both require the notion of loopiness and the somewhat occult nature of both the forward and inverse maps. But the loopiness is often a more difficult concept to grasp.

This article challenges the notion that a complex forward map is sufficient to realize or explain a complex system, especially one so full of occult paths and loopiness (including trans-hierarchy) as multi-cellular life. And I am very happy that such an article has made it into the mainstream news.

1. Murray Gell-Mann tried to install “plectics” in the vernacular, but failed. I buy Murray’s argument and try to use “plectics” whenever I can.

2. Not that I would advocate for huge box stores like Wal*Mart where you can buy diapers, car batteries, and bread all in the same trip or anything. In fact, such lack of specialty disgusts me. But there is something to say for, e.g., the general practitioner or renaissance man (sorry, I just can’t replace “man” with “person” in that phrase) who can think holistically … synergistically … about a subject without her (that should make up for the gender bias) prejudices kicking in to keep her from escaping her current thought rut.

Happy Birthday to Me!

Thursday, June 12th, 2008

I am old. I won’t say how old exactly but I am half way through a few experiments. Life, work.

It makes me very happy that three of these experiments will be funded as Tempus Dictum Projects.

  1. The Dorkboard.

  2. The Benito Serial Programmer

  3. The Arduino Cult Induction Series.
    (Next Induction Sunday June 22)

I would like to thank Tempus Dictum for the opportunity to work on these items.

I am a very lucky man.

Write Locally Post Globally

Tuesday, June 3rd, 2008

I like wordpress.

It allows me to do much of what I post on the web without having to look at the underlying html and still letting me at the html. In fact I use WordPress to to post on Dorkbots Drupal pages. It is easier than hand rolling html and the new wordpress saves your drafts. This is no small issue: As I was reminded at 2:30 monday morning as Drupal timed out the session that I was writing on and ate my post. Between that and the Eagle files I was working with I lost most of sunday nights sleep. The other issue is portability.  So last night I ran up mysql, unpacked the latest wordpress into my home directory and reconfigured the apache daemon that comes with leopard.

I plan to get more done and loose less sleep.

The Really Really Bare Bones Arduino

Tuesday, June 3rd, 2008

This has been reposted on dorkbotpdx.org

A few weeks ago I bought the last of the Really Bare Bones Arduino rev A boards from Brian at Wulfden (http://wulfden.org/freeduino/freeduino.shtml) I now have enough boards for one more workshop and then we have to reevaluate the boards which are avaliable. Pictured below is a finished board from the first “Arduino Cult Induction Workshop”

In addition to letting me clean out his new old stock Brian threw in one of the “Rev B” boards so I could check it out. Unfortunately I don’t like it.

The new board is almost 3/4″ of an inch longer than the original. Most of the new space is dedicated to room for a power jack and a regulator. Things that I never use. The design is supposed to allow you to cut the power jack off as well as the regulator. Notice in the finished board above that their is space for a big old reset switch. When the original Arduino came out you had to reset the board to get it into the bootloader. However in the past year or so all the new boards have been using the dtr signal run through a capacitor to pull the reset line so the switch is wasted space. The original board made up for this space by adding ample ground and supply connections. The new board adds another 1/8″ and gets rid of these.

As I was grumbling about this Mark Gross suggested that I just roll my own.

So we are back to the drawing board. Above is my pen markup of the changes that I wanted to see done to the original Really Bare Bones Arduino and below is the draft of the rework to scale with the RBBB rev B.

Now comes the fun part The cost of goods sold and a business case.

Web log posts

Friday, May 30th, 2008

Sheesh! It’s like pulling teeth to get anyone to post to a web log. I suppose there are two fundamental blockages: 1) a phantom requirement for high quality and 2) the idea that there should be some clever or interesting content in the log entry.

But, both of these are pure vapor. People seem to be very willing to post silly and overly personal messages on their Facebook or Twitter feeds. They even seem willing to use four letter and misspelled words. Now, I agree that a semi-professional web log shouldn’t be populated with unverified “facts”, overly personal information, or contentless snippets. But if an obsessive desire for high quality and interesting content prevent one from ever posting anything, well, that seems like a personality disorder more than an honest attempt at high quality or interesting content… to me, anyway.

Besides, the very point of a web log is that it be a log. It’s not a news publication. It’s not a venue for peer-reviewed journal articles or vetted press releases. It’s a log. Logs are populated with entries, some of which turn out, later, to be useless evidence of the enthusiastic but myopic detailed exploration of rat holes and dead ends. Some of the entries, of course, end up being the fundament of astounding insight or fecund intellectual property. But not everything in a log has to be brilliant or clever.

Take this entry, for example. 8^)

A Statement of the Time

Thursday, April 10th, 2008

This story in Information Week helps provide the justification by which the Tempus Dictum hypothesis (TDH) will graduate to a full thesis:

Solo Entrepreneurs: Big Bucks From Tiny Computing Startups

The TDH states that, if the information explosion continues its general trend, human organizations will tend toward smaller and smaller clusters.

The TDH is an informal combination of the concepts of scale-free networks, libertarianism, and distributed problem solving. As I explained in The Motivation behind Tempus Dictum, we are, banally and somewhat facetiously, just a collection of misfits who find greater efficacy when operating “in the wild”, as it were. But the deeper message is that TDI presages an emerging trend in the way humans apportion their attention and efforts. Large bureaucracies are efficient and effective at exploiting coherent circumstances. Small organizations are more agile and much more effective (if not efficient) at discovering potentially coherent circumstances. In a relatively stable system, small organizations form in co-evolution with emergent coherence in circumstances. The small organizations reinforce the coherence and “blaze” the trail for the large organizations that follow.

However, as the world becomes more connected (via the internet but also other more robust factors like the homogenization of cultures through air travel), the potential coherency of any set of circumstances decreases. I.e. the phenomena and patterns that emerge are much more fragile when there are more paths to the same objective. And as humans become more connected, there are more feasible paths to the same objective.

This means that we need fewer large organizations to achieve our objectives because, if one particular path is capital or infrastructure intensive, it’s likely there is another path that is less so, making it achievable with a smaller organization.

Granted, we will still need some large organizations to achieve the objectives to which we can’t find easier paths. For example, space exploration and colonization is still capital and infrastructure intensive. Another example is the burgeoning epidemiological problems brought on by increased connectivity. Higher connectivity means higher homogeneity means more susceptibility to epidemic. Finding solutions for problems like the loss of honey bees, influenza, and Kraken will also be capital and infrastructure intensive.

However, if we mis-read this trend, we may be inclined to coerce ourselves into big money, big infrastructure solutions where such are unnecessary and, worse, wasteful and obstructionist. Big organizations form naturally when the discovery mode (many small organizations trying to achieve some objective by different means) wanes. Prematurely establishing artificially large organizations to solve improperly explored solutions is the primary risk during our evolution from a mostly heterogeneous, cliquish population into a mostly homogenous, connected population.

Correlation causation conflation

Thursday, March 27th, 2008

I have no choice but to post this. Forgive me for being an automaton.

Here’s the /. blurb.

Here’s the debunk.

And here’s the original article in Oikos.

–gepr

“Sustainability” is a form of Karma Yoga

Friday, March 14th, 2008

I’ve been thinking quite a bit about “sustainability” lately. As a follower of the computationalist school of complex adaptive systems, I tend to believe “sustainability”, as a concept, is either ill-formed or merely an ideal limit that can only be approached, not obtained. But, in either case, it is a worthy goal. Also, as a follower of critical rationalism, my contribution (assuming I contribute at all), will probably consist mostly of a clarification of the concept so as to make it well-formed or more approachable. After all, what is modeling and simulation, except a tool for thinking … for refining thoughts and concepts? Of course, it’s a matter of faith whether more refined concepts can lead to more precise and accurate action. A faith which I obviously hold.

In any case, I’m also a fan of philosophy because, as Jesus’ parable of the sower says: “he that received seed into the good ground is he that heareth the word, and understandeth it; which also beareth fruit, and bringeth forth, some an hundredfold, some sixty, some thirty”. I.e. if you work to ensure that your gestalt is robust, when you receive information and integrate it (as opposed to grafting it on with spit and bailing wire) into your gestalt, the return you will realize off that new information will be manifold.

So, in that spirit, while poking around in Eastern philosophy, the concept of karma (accumulated effects of action) yoga (discipline) leads me to correlate this “new” concept of “sustainability” with karma yoga. The official karma doctrine seems to say that karma takes effect after one dies and guides the circumstances into which (supposedly) that same person is reborn. So, karma yoga would be the process of learning to discipline your actions so that you accumulate less karma. If you have no karma when you die, then you are liberated (and presumably not reborn).

If we really stretch our metaphor muscles, we can think of reincarnation as neo-Darwinian evolutionary descent and karma as the stigmergic process of modifying our environment (including our selves), by our actions, to such an extent that subsequent generations (in our particular lineage) are constrained and facilitated by the modifications made to the environment. For example, prior generations have, through their karma-laden actions, built the city of New York. Current generations are born and live much of their entire lives where their movement is constrained to the streets (i.e. they can’t walk through buildings), their dwellings are constrained to the structures, their “hunting” is constrained to the established market places, etc. An accepted term for this historical accumulation and collaborative construction over time is “stigmergy”. Stigmergy is karma.

Viewed this way, the “new” efforts described as “sustainable” consist of disciplining our actions so that future generations are not as constrained by our actions as they otherwise would be. Ideally, we would liberate subsequent generations to experience their environment in as many ways as possible without coercing them to homogenously trudge down a stiffly constrained rat hole.

Now, the above text might lead one to think this is incompatible with the more exploitative technologies like the manufacture of silicon wafers, where companies externalize their pollution in the form of toxic chemicals and heat. But, it doesn’t. The invention of the silicon-based quantum well, the transistor, the integrated circuit, and the modern computer, all fall into karma yoga, disciplined action intended to liberate subsequent generations. It’s not a contradiction. It’s a paradox, which is resolved by hopping up to a higher level of discourse. The invention of this heavily polluting technology has opened more doors through the facilitation of information flow than it has closed through the deleterious effects of its pollution.

I.e. the liberation of subsequent generations from the karma of our actions does not necessarily imply some idyllic surface world populated with hunter-gatherer Eloi powered by a dirty smelly underworld populated by Morlocks. A future environment built through “sustainable” processes may look entirely different from any world we’ve seen or imagined so far … perhaps a world where the toxic waste generated from silicon wafer manufacturing is nutrient for several life forms … which means it would only be “waste” to the wafer producers but would be raw materials for others.

So, if we think deeply about “sustainability”, we may be able to co-construct (with our sibling life forms in our current ecology) an entirely new landscape that is less fragile than the one we’re currently constructing. But to do that, we will need to develop some methods for measuring and estimating the long-term effects of our current actions.

My punchline’s always the same, I’m afraid. ;-)

How do we measure and estimate the long-term effects of our current actions? Why, through modeling and simulation, of course!

- gepr

Shimmer

Tuesday, January 8th, 2008

Saw this on /. and figured Shimmer might be of interest. Believe it or not, it’s related to TDI’s vision of permuting the sensory-motor interface along the lines of FreakShow and our simulation work. I don’t have time to expound on it right now; but I’ll come back later and do a little cleanup.

The motivation behind Tempus Dictum, Inc.

Thursday, December 6th, 2007

The techdirt entry:  Noncompete Agreements Are The DRM Of Human Capital gave me a great opportunity for an appropriate first post to the Tempus Dictum (TDI) web log. The entry talks about how non-compete agreements, limiting the extent to which employees can work for their employers’ competitors, dampen the collective innovation of a geographical region or legal jurisdiction. This seems rather obvious; but the nonintuitive conclusion is that non-compete agreements hurt each employer in the long-run because it means each employer, like all the others in the jurisdiction, cannot exploit the unused resources of its competitors.

In other words, every organization is, by definition and good reason, a bureaucracy. And in every bureaucracy, there are some individuals who cannot realize their full potential because their methods or ideas are incommensurate with the infrastructure (a.k.a. mis-fits). In those cases, the bureaucracy is not only dampening the individual, it is the source of inertia to the evolution of the organization.  It’s often best to set the individual free so that they might develop their ideas into a usable invention that more readily will fit into the bureaucracy.  I.e. set the misfit free and be ready to use their  invention to good effect.

Typically, setting the individual free means they quit and either go to work for another organization, usually in the same domain, or they start their own venture. [1] And this is where non-compete agreements come in.

With this background, it is easier to understand the foundations of TDI. Ostensibly, TDI is a custom software contracting firm. We take clients’ needs and codify solutions into software. But, this is just the banal projection of what TDI really is. What we really are is a collection of (habitual) misfits who love to work on interesting and difficult problems, regardless of where those problems arise. When one or more solutions to a problem percolates up and shows itself to be worthy of a new bureaucracy, one of us will “jump ship” and help start a new venture around that solution. Then, because we’re focussed on interesting and difficult problems, when that new venture stabilizes (or … [ahem] … dies), we hop back aboard TDI to continue the hunt.

At least that’s the vision, anyway. Ideally, by articulating such a structure and providing a supportive infrastructure for misfits, we not only facilitate our own development as the collective TDI and the individuals within, but we facilitate the creativity and progression of the groups [2] with which we engage.

[1] Intelligent organizations are finding many ways to patronize such misfits without cutting the ties entirely. I don’t really give career advice; but were I to give such advice, it would consist solely of “Don’t work for an organization that’s obviously dumber than you are.”

[2] Although the techdirt article talks specifically about the legal and regional application of non-competes, it seems clear to me that the conclusions would extrapolate to any group or domain wherein a standard set of [im|ex]plicit rules obtain, regardless of geographical proximity or legal jurisdiction. Groups that enforce within-group non-compete rules will be less innovative than groups that do not enforce such rules.

Testing

Tuesday, December 4th, 2007

Testing, testing, 1 … 2 … 3.  Is this thing on?

Messier 74