AnsweredAssumed Answered

A very important deficiency for Blackfin

Question asked by vix on Feb 26, 2010
Latest reply on Mar 5, 2010 by Andreas


I wrote this post because I've found a lot of problems in the past days originated from a missing feature that I think is very, very important.

Using Blackfin processors and VisualDSP++ is impossible to read the physical level af a General Purpose Input, but only the logical level.

In the past months I've already found some problems connected to this lack (see, and I implemented a not completely satusfying workaround.

But now I found that the following situation can't been solved (I think...)

  • enable a callback for a particolar GPIO --> with adi_flag_Sense( ) or PORTxIO register you can read the logical level of the pin, that can be different from the physical one (if you link to the falling edge, for example)
  • remove the callback with adi_flag_RemoveCallback( )

As the Hardware Manual says


The adi_flag_RemoveCallback function removes the  callback from the specified flag and disables the generation of the interrupt  that triggers the callback. This function does not alter the flag values,  direction, and so on.

Using adi_flag_Sense( ) or reading the PORTxIO register returns the logical level, that can be different from the physical one.

It's impossible to read the physical level of the GP pin.


I think that an efficient way to read the physical level of GP input flags should be implemented ASAP in the Blackfin and/or VisualDSP++