avr/IO.h and anothers .h files

Post here first, or if you can't find a relevant section!
Post Reply
rodrigobad
Posts: 2
Joined: Tue Sep 05, 2017 12:19 pm

avr/IO.h and anothers .h files

Post by rodrigobad » Tue Sep 05, 2017 12:25 pm

Hello, im new on stm32 boards, and at this moment i'm testing the maple mini.
The install process are realy easy, and the Arduino IDE works great.
Now i'm trying to test some 'ported libraries', but they dont work.
http://www.stm32duino.com/viewtopic.php?t=1213
i get this library installed from the arduino IDE (sketch -> include -> download and install), but i have the error "avr/io.h: no such file or directory.
if i download this from some site, and put on <documents\arduino\libraries\md_max72xx\src\avr\io.h> the next become the 'pinports.h', than 'common.h'....
when all files get on the folder, i get some errors from hardware spi not declared.....
someone know how to correct this?


ps: IDE 1.8.3, due bords installed

stevestrong
Posts: 1609
Joined: Mon Oct 19, 2015 12:06 am
Location: Munich, Germany

Re: avr/IO.h and anothers .h files

Post by stevestrong » Tue Sep 05, 2017 12:48 pm

Just delete the line with #include "avr/io.h".

rodrigobad
Posts: 2
Joined: Tue Sep 05, 2017 12:19 pm

Re: avr/IO.h and anothers .h files

Post by rodrigobad » Tue Sep 05, 2017 12:57 pm

in the sketch dont have this include, and in the md_max72xx.h has only one include "arduino.h"
the library "ledcontrol" works.

this is the md_max example.

Code: Select all

// Use the MD_MAX72XX library to scroll text on the display
//
// Demonstrates the use of the callback function to control what 
// is scrolled on the display text.
//
// User can enter text on the serial monitor and this will display as a
// scrolling message on the display.
// Speed for the display is controlled by a pot on SPEED_IN analog in.

#include <MD_MAX72xx.h>

#define	USE_POT_CONTROL	0
#define	PRINT_CALLBACK	0

#define	PRINT(s, v)	{ Serial.print(F(s)); Serial.print(v); }

// Define the number of devices we have in the chain and the hardware interface
// NOTE: These pin numbers will probably not work with your hardware and may 
// need to be adapted
#define	MAX_DEVICES	8

#define	CLK_PIN		13  // or SCK
#define	DATA_PIN	11  // or MOSI
#define	CS_PIN		10  // or SS

// SPI hardware interface
MD_MAX72XX mx = MD_MAX72XX(CS_PIN, MAX_DEVICES);
// Arbitrary pins
//MD_MAX72XX mx = MD_MAX72XX(DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);

// Scrolling parameters
#if USE_POT_CONTROL
#define	SPEED_IN	A5
#else
#define SCROLL_DELAY	75	// in milliseconds
#endif // USE_POT_CONTROL

#define	CHAR_SPACING	1	// pixels between characters

// Global message buffers shared by Serial and Scrolling functions
#define	BUF_SIZE	75
char curMessage[BUF_SIZE];
char newMessage[BUF_SIZE];
bool newMessageAvailable = false;

uint16_t	scrollDelay;	// in milliseconds

void readSerial(void)
{
  static uint8_t	putIndex = 0;

  while (Serial.available())
  {
    newMessage[putIndex] = (char)Serial.read();
    if ((newMessage[putIndex] == '\n') || (putIndex >= BUF_SIZE-3))	// end of message character or full buffer
    {
      // put in a message separator and end the string
      newMessage[putIndex++] = ' ';
      newMessage[putIndex] = '\0';
      // restart the index for next filling spree and flag we have a message waiting
      putIndex = 0;
      newMessageAvailable = true;
    }
    else
      // Just save the next char in next location
      newMessage[putIndex++];
  }
}

void scrollDataSink(uint8_t dev, MD_MAX72XX::transformType_t t, uint8_t col)
// Callback function for data that is being scrolled off the display
{
#if PRINT_CALLBACK
  Serial.print("\n cb ");
  Serial.print(dev);
  Serial.print(' ');
  Serial.print(t);
  Serial.print(' ');
  Serial.println(col);
#endif
}

uint8_t scrollDataSource(uint8_t dev, MD_MAX72XX::transformType_t t)
// Callback function for data that is required for scrolling into the display
{
  static char		*p = curMessage;
  static uint8_t	state = 0;
  static uint8_t	curLen, showLen;
  static uint8_t	cBuf[8];
  uint8_t colData;

  // finite state machine to control what we do on the callback
  switch(state)
  {
    case 0:	// Load the next character from the font table
      showLen = mx.getChar(*p++, sizeof(cBuf)/sizeof(cBuf[0]), cBuf);
      curLen = 0;
      state++;

      // if we reached end of message, reset the message pointer
      if (*p == '\0')
      {
        p = curMessage;			// reset the pointer to start of message
        if (newMessageAvailable)	// there is a new message waiting
        {
          strcpy(curMessage, newMessage);	// copy it in
          newMessageAvailable = false;
        }
      }
      // !! deliberately fall through to next state to start displaying

    case 1:	// display the next part of the character
      colData = cBuf[curLen++];
      if (curLen == showLen)
      {
        showLen = CHAR_SPACING;
        curLen = 0;
        state = 2;
      }
      break;

    case 2:	// display inter-character spacing (blank column)
      colData = 0;
      curLen++;
      if (curLen == showLen)
        state = 0;
      break;

    default:
      state = 0;
  }

  return(colData);
}

 void scrollText(void)
{
  static uint32_t	prevTime = 0;

  // Is it time to scroll the text?
  if (millis()-prevTime >= scrollDelay)
  {
    mx.transform(MD_MAX72XX::TSL);	// scroll along - the callback will load all the data
    prevTime = millis();			// starting point for next time
  }
}

uint16_t getScrollDelay(void)
{
#if USE_POT_CONTROL
  uint16_t	t;

  t = analogRead(SPEED_IN);
  t = map(t, 0, 1023, 25, 250);

  return(t);
#else
  return(SCROLL_DELAY);
#endif
}

void setup()
{
  mx.begin();
  mx.setShiftDataInCallback(scrollDataSource);
  mx.setShiftDataOutCallback(scrollDataSink);

#if USE_POT_CONTROL
  pinMode(SPEED_IN, INPUT);
#else
  scrollDelay = SCROLL_DELAY;
#endif

  strcpy(curMessage, "Hello! ");
  newMessage[0] = '\0';

  Serial.begin(57600);
  Serial.print("\n[MD_MAX72XX Message Display]\nType a message for the scrolling display\nEnd message line with a newline");
}

void loop() 
{
  scrollDelay = getScrollDelay();
  readSerial();
  scrollText();
}

stevestrong
Posts: 1609
Joined: Mon Oct 19, 2015 12:06 am
Location: Munich, Germany

Re: avr/IO.h and anothers .h files

Post by stevestrong » Tue Sep 05, 2017 8:23 pm

rodrigobad wrote:
Tue Sep 05, 2017 12:25 pm
The install process are realy easy, and the Arduino IDE works great.
What kind of install process do you mean? What have you installed? Which STM32 core?

Post Reply