"exit status 1 a function-definition is not allowed here before '{' token"

sergey1223
Offline
Зарегистрирован: 07.12.2020
/*
130232 Universal Through-hole Audio DSP board
(c) Elektor, 12/2013
Author: CPV

This is a sketch to quickly program the I2C EEPROM on the Elektor
130232-1 Audio DSP board. 

0. Install the Arduino libraries EEPROM24, I2CMaster & SoftI2C.

1. Load the sketch to the Arduino board.

2. Connect connector K9 to an Arduino Uno or Mega, like this:

   K9   | Arduino
   -----+--------
   SDA  |   9
   SCL  |   10
   WP   |   11
   RST  |   12
   GND  |   GND
   
3. Do not place jumper JP1 of the DSP board. 
   
4. Send the E2Prom.hex file generated in SigmaStudio to the 
   Arduino board. The baudrate is 19200 baud. The DSP board
   must be powered.
   
License: identical as EEPROM24, I2CMaster & SoftI2C.
*/


/*
Modified by Ludwig Kormann

Changes made to work with freeDSP

31.08.2014
*/


/*Modified by Tom Wuehle

-changed baudrate from 19200 to 9600 to meet defaults from Tera Term
-added initial delay for easier serial setup with arduino micro

20.04.2015
*/


#include <EEPROM24.h>
#include <I2CMaster.h>
#include <SoftI2C.h>


#define SOFT_SDA  9
#define SOFT_SCL  10
const int write_protect_pin = 11;
const int reset_pin = 12;


SoftI2C i2c(SOFT_SDA,SOFT_SCL); // SDA=10, SCL=11
EEPROM24 eeprom(i2c,EEPROM_24LC256);


uint8_t in_buffer[128]; // Largest possible page size.
size_t in_buffer_index = 0;
uint32_t dst_address = 0;
int rx_state = 0;
uint32_t timeout = 0;
const uint32_t baudrate = 9600;
uint32_t bytes_received = 0;
boolean busy = false;


// States for main loop
enum states{
  STATE_RESET_DSP,
  STATE_RUNNING
} availableStates;


uint8_t state = STATE_RESET_DSP;


void print_hex_char(uint8_t ch)
{
  Serial.print((ch>>4)&0x0f,HEX);
  Serial.print(ch&0x0f,HEX);
}


void print_buffer(uint8_t *p_data, size_t data_size)
{
  for (uint8_t i=0; i<data_size; i++)
  {
    print_hex_char(p_data[i]);
  }
  Serial.println();
}


uint8_t hex_to_bin(uint8_t ch)
{
  if (ch>='0' && ch<='9') return ch - '0'; // 0-9
  else if (ch>='A' && ch<='F') return ch - 'A' + 10; // 10-15
  else if (ch>='a' && ch<='f') return ch - 'a' + 10; // 10-15
  return 0;
}


void resetDSP(void)
{ 
  // Disconnect all signals
  pinMode(write_protect_pin, INPUT);
  pinMode(SOFT_SDA, INPUT);
  pinMode(SOFT_SCL, INPUT);
  
  // Perform Reset
  pinMode(reset_pin, OUTPUT);
  digitalWrite(reset_pin,0);
  delay(250);
  pinMode(reset_pin, INPUT);
}


void initVariables(void)
{
 // Reinitialize variables
  busy = false;
  rx_state = 0;
  in_buffer_index = 0;
  dst_address = 0;
  bytes_received = 0;
  timeout = millis();  
}


void setup(void)
{
  Serial.begin(baudrate);
  while (!Serial) {
    ; // wait for serial port to connect.
  }
  Serial.println("Elektor Project 130232 Audio DSP Board");
  Serial.println("EEPROM Programmer");
  Serial.print("eeprom ");
  if (eeprom.available()==false) Serial.print("not ");
  Serial.println("found");
  
  state = STATE_RESET_DSP;
}


void loop(void)
{
  switch(state)
  {
    case STATE_RESET_DSP:
      initVariables();
      resetDSP();
      Serial.println("waiting for E2Prom.Hex file...");
      state = STATE_RUNNING;
      break;
      
    case STATE_RUNNING:
        if (busy==true && millis()-timeout>500)
        {
          // Serial port idle too long, consider file transfer done.
          // Write any remaining data to eeprom.
          eeprom.write(dst_address,in_buffer,in_buffer_index);
          Serial.print("Received ");
          Serial.print(bytes_received);
          Serial.println(" characters");
          Serial.print("Programmed ");
          Serial.print(dst_address+in_buffer_index);
          Serial.println(" bytes");
          Serial.println();
          
          // Read programmed data back to serial port.
          Serial.println("EEPROM contents:");
          uint16_t i = 0;
          while (i<dst_address+in_buffer_index)
          {
            eeprom.read(i,in_buffer,8);
            print_buffer(in_buffer,8);
            i += 8;
            if (i%eeprom.pageSize()==0) Serial.println();
          }
          
          // Get ready for a new file.
          state = STATE_RESET_DSP;
        }
        while (Serial.available()!=0)
        {
          if(!busy)
          {
            busy = true;
            initVariables();
            pinMode(SOFT_SDA, OUTPUT);
            pinMode(SOFT_SCL, OUTPUT);
            pinMode(reset_pin, OUTPUT);
            digitalWrite(reset_pin,LOW);
            pinMode(write_protect_pin, OUTPUT);
            digitalWrite(write_protect_pin,LOW);
          }
          busy = true;
          timeout = millis();
          uint8_t ch = Serial.read();
          bytes_received += 1;
          switch (rx_state)
          {
            case 0:
              if (ch=='x') rx_state = 1;
              else if (ch==0x0d || ch==0x0a) Serial.write(ch);
              break;
              
            case 1:
              in_buffer[in_buffer_index] = hex_to_bin(ch) << 4;
              rx_state = 2;
              break;
              
            case 2:
              in_buffer[in_buffer_index] += hex_to_bin(ch);
              print_hex_char(in_buffer[in_buffer_index]);
              in_buffer_index += 1;
              if (in_buffer_index==eeprom.pageSize())
              {
                eeprom.write(dst_address,in_buffer,in_buffer_index);
                dst_address += in_buffer_index;
                in_buffer_index = 0;
                Serial.println();
              }
              rx_state = 0;
              break;
          }
        }
      break;
    default:
      state = STATE_RESET_DSP;
      break;
  }
  
  
}

 

sergey1223
Offline
Зарегистрирован: 07.12.2020

Почему ругается? 

sergey1223
Offline
Зарегистрирован: 07.12.2020
DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

а перевоччик чо говорит?

sergey1223
Offline
Зарегистрирован: 07.12.2020

Таких переводчиков ещё нету чтобы я понял что он там говорит..

Залил готовый скетч сделанный кем то, а он не работает, а инфы по прошивку DSP через ардуину почти нету, а если и есть то человеку вроде меня (я первый раз ардуину подключил в пк) та информация ничем не поможет.. 

Читал что скобки должны быть закрыты, но они там и так закрыты.. на скриншоте видно..

Разбираться в теме пол года/ год не вариант, я скорее usb программатор куплю.. 

Но если всё таки можно уже готовое взять и повторить, почему бы нет.. только любая ошибка даже такая, будет фатальная для меня) Так как решить её я не смогу.. 

Может знает кто, где рабочий скетч найти, или этот исправить.. Вот ссылка на него

https://github.com/freeDSP/freeDSP-CLASSIC/blob/master/SOURCES/ARDUINO/freeDSP%20Arduino%20sketch/freeDSP.ino#L1-L230

v258
Offline
Зарегистрирован: 25.05.2020

Там же еще номер строки, где ошибка, указывается - мы это должны угадывать?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sergey1223 пишет:

Почему ругается? 

А почему не приведено сообщение полностью? Приведите тогда поговорим.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

v258 пишет:

мы это должны угадывать?

А сами-то как думаете? :-)

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

sergey1223 пишет:

Может знает кто, где рабочий скетч найти, или этот исправить.. Вот ссылка на него

На форуме есть коммерческий раздел "Ищу исполнителя" вот как раз для таких вопросов.Там могут и бесплатно помочь, просто от широты сердца. Но это уж советчик сам решит. Хотя вежливо предложить хотя бы на пиво, если тебе нужен просто совет, и ты не собираешься вливаться в компанию.

Всем знаком пример в гаражах: петлю на воротах можно и бесплатно приварить, но вежлово предложить оплату, так ясно?

sergey1223
Offline
Зарегистрирован: 07.12.2020

Мне не нужно писать скетч с нуля, программа ругается на скобку, ошибка полностью расписана в названии темы, если я убираю те скобки полностью, она начинает ругаться на другие скобки, если там дело в какой-то фигне, то просто скажите в какой и всё, если нет, я лучше закажу програматор с али, подожду его месяц и тупо подключу к пк и прошью всё за 2 секунды, чем сделаю ошибку в том скетче от которой что то не так зальётся и я буду гадать потом из-за чего всё не работает.. Скетч готовый, вряд ли автор который написал 300 строк текста мог ошибиться в нём, и залить на гитхаб, скорее всего у меня что то не так, я и спрашиваю что. 

Может я копирую не так, или вставляю не туда..

Или там надо везде точку с запятой поставить.. но почему автор не поставил? 

https://dropmefiles.com/FPSXQ Там сбита нумерация на 1 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Перечитайте ещё раз сообщение #5

Komandir
Онлайн
Зарегистрирован: 18.08.2018

Эта строка когда и где появляется ?

v258
Offline
Зарегистрирован: 25.05.2020

sergey1223 пишет:

Может я копирую не так, или вставляю не туда..

Не нужно копировать, нужно скачать готовый файл. Копипаст из браузера иногда преподносит странные символы в коде, которые компилятор, естественно, переварить не в состоянии.

sergey1223
Offline
Зарегистрирован: 07.12.2020

А как его скачать с гитхаба, если там только текст и нету кнопки "скачать"? 

Feofan
Offline
Зарегистрирован: 28.05.2017

sergey1223
Что-то Вы не то накопировали. У меня все скомпилировалось без ошибок. Код из первого сообщения, библиотеки с github'а.

P.S.
Описание ошибок надо вставлять не картинками, а на форум и текстом. И строк может быть намного более...

sergey1223
Offline
Зарегистрирован: 07.12.2020

Установил расширение для скачивания файлов с гитхаба, скачал скетч, он сразу открылся в прорамме.. Я копировал в всё таки не туда..

Нужно было всё удалить и вставить скетч, а я вставлял в "void setup() {" Ну первый раз вообще в этой теме.. Решил колонку модернизировать, DSP процессор интегрировать, до этого вообще ничем "цифровым" не занимался.. скетч залился в ардуину.. Теперь попробую записать в еепром что-то..

 

 

Feofan
Offline
Зарегистрирован: 28.05.2017

Цитата:
Нужно было всё удалить и вставить скетч, а я вставлял в "void setup() {"
Ну вот. И код выложили не тот, что компилировали.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Все же ардуина как и коробка автомат - вроде и людям помогает, кто с одной ногой, а вроде как и ездить отучает кто с двумя. ((

sergey1223
Offline
Зарегистрирован: 07.12.2020

Спасибо за помощь