Hallo Ihr lieben,
komme iMo nicht weiter und hoffe Ihr könnt mir helfen. Ich habe jetzt die Hardware für
mein Midi Projekt soweit fertig und auch die IDE programmiert Problemlos den Nano Every (habe 2 Stück vom gleichen Typ - original Arduino, kein Clone) Die Features von
dem Bord sind Fantastisch. Relativ viel Flash und SRAM und 4 Seriale Ports. iMO benötige ich nur den USB und den Serial1 Port mit meiner Schaltung kann der USB Stecker dran bleiben, wenn nach dem Flash wieder Serial1 benutzt werden soll. Ich nutze dabei den Pin 13, da der während des Programmierens auf LOW ist und in meinem Programm auf HIGH gelgt wird. Ein kleiner Transistor schaltet dann zwischen USB und Serial1 um, das klappt mit einem normalen Nano hervorragend.
Bei dem Every zeigt zwar die LED für den Serialen Port an das etwas gesendet wird und auch der Seriale Monitor zeigt etwas an. Aber was der anzeigt deutet auf eine falsche Bautrate hin. Die Zeichen sind nämlich falsch und anders als gesendet. Beim Sender und auch bei dem Monitor habe ich die gleiche Bautrate eingestellt 38400. Aber egal was eingestellt wird, das Ergebniss ist immer gleich.
Ich habe das Programm bis auf das minimalste reduziert um einfach zunächst mal die Serial1 hinzubekommen. Alles andere funktioniert ja auch einwandfrei. Habe jedenfalls noch nichts anderes festgestellt.
Das wo drauf ich mir absolut keinen Reim machen kann ist, das auf dem PIN 1 TxD nichts rauskommt wenn etwas gesendet wird.
Habe sogar mal Serial1.beginn weggelassen und versucht die Schnittstell zu Fuß zu programmieren. Aber das hat es auch nicht gebracht.
Habe das Bord aus der Schalung rausgenommen um jeden Fehler auszuschießen . aber hat nichts gebracht, Der Pin ist aber nicht tot man kann mit Pinmot auf OUTPUT gehen und eine LED an schalten.
Wer kann mir da weiter helfen? Bei Google scheint dies Phänomen niemand zu kennen.
<#ifndef Serial1_Nano_Every_
#define Serial1_Nano_Every_
//axeptiert hier kein define - muss in *.h datei sein !
//#define EA_DIP204_4_ // display typ einschalten ...
//#define W204B_NLW_
#include <LiquidCrystal_I2C.h> // Vorher hinzugefügte LiquidCrystal_I2C Bibliothek einbinden
LiquidCrystal_I2C lcd(0x27,20,4); // 4 zeiliges I2C-LCD mit 20 Zeichen pro Zeile ...
//#include <avr/pgmspace.h>
#include <Arduino.h>
#include <EEPROM.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include "defauls.h"
#include "proto_.h"
#include "timers_.h"
#include "funktion_.h"
void setup()
{
lcd.init(); //Im Setup wird der LCD gestartet
lcd.leftToRight();
//lcd.noBacklight(); // schaltet die Beleuchtung aus).
lcd.backlight(); //Hintergrundbeleuchtung einschalten
//lcd.setContrast(0);
//lcd.display();
lcd.clear();
lcd.setCursor(0,0);// das erste Zeichen in der ersten Zeile.
pinMode(pD2_,OUTPUT); // chord LEDs ...
pinMode(pD3_,OUTPUT);
pinMode(pD4_,OUTPUT);
pinMode(pAktionLed_,OUTPUT); // Aktion Led...
fChord_Hold_1_ = ON; // 68
tCount_ = 8; //2// tasten entpreller tims ...
// die channels f r D110 ...
// chrd_chan_ = 4; // akkord chanel ...
// bass_chan_ = 4; // bass chanel ...
// ctrl_chan_ = 4; // controler chanel ..
// ProgChange_(207,7); // nur programm change .. auf chan 16 ...
//*********** das was gerade eingestellt ist ...
ctrl_chan_ = EEPROM.read(0); // conroler chanel ...
chrd_chan_ = EEPROM.read(1); // chord chanel...
bass_chan_ = EEPROM.read(2); // bass chanel...
chrd_trsp_ = EEPROM.read(3); // transpose der akorde...
bass_trsp_ = EEPROM.read(4); // bass transpose...
chrd_velo_ = EEPROM.read(5); // chord velociti...
prog_num_ = EEPROM.read(6); // aktuelle sound programm nummer...
//************** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^**************************
// die channels f r D110 ...
/*
bass_trsp_ = 6;
chrd_trsp_ = 44;
chrd_chan_ = 2; // akkord chanel ...
bass_chan_ = 1; // bass chanel ...
ctrl_chan_ = 1; // controler chanel ..
chrd_velo_ = 71; // akkord velo/relase..
// ProgChange_(207,2); // nur programm change .. auf chan 1 ...
*/
//**************^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^******
delay(500);
ChrdNum_ = 0;
StatNoteOn_ = 144;
StatNoteOff_= 128;
DynVelo_ = 127; // velocyte der dyntaste
DynRela_ = 127; // relase fuer dyntaste
// ********** play tasten abfrage ... ****************
pinMode(BLOCK_1_,OUTPUT);
pinMode(BLOCK_2_,OUTPUT);
pinMode(BLOCK_3_,OUTPUT);
pinMode(BLOCK_4_,OUTPUT);
pinMode(BLOCK_5_,OUTPUT);
pinMode(B_TASTE_1_,INPUT_PULLUP);
pinMode(B_TASTE_2_,INPUT_PULLUP);
pinMode(B_TASTE_3_,INPUT_PULLUP);
pinMode(B_TASTE_4_,INPUT_PULLUP);
pinMode(B_TASTE_5_,INPUT_PULLUP);
VolUpDw_ = 2; // volume 10 ...
FaderTime_ = millis()+100;
AktionLed_Onf_ = 0;
i_=0;
for (i_ = 0; i_ < 10; i_++) // zeige reset an ...
{
cpl_AktionLed_(AktionLed_Onf_); // aktion led aus ...
delay(50);
cpl_AktionLed_(0); // aktion led ...
delay(50);
}
pinMode(pLED_,OUTPUT); // seriel aus schalter ...
digitalWrite(pLED_,HIGH); // midi out on/off !
Serial.begin(38400); // serial monitor ...
Serial1.begin(38400); // midi sequenz ....
/*
/USART1 konfigurieren
USART1.BAUD = 417; // Baudrate setzen (z.B. 38400 bei 16MHz)
USART1.CTRLB = USART_RXEN_bm | USART_TXEN_bm; // RX/TX aktivieren
USART1.CTRLC = USART_CHSIZE_8BIT_gc | USART_PMODE_DISABLED_gc | USART_SBMODE_1BIT_gc;
*/
delay(250);
line_Prnt_("Serial1_Nano_Every"); // text zeile ins display ...
delay(250);
midi_dout_(255); // midi reset ..
// delay(250);
// Serial.write(0xCF); // fest auf chan 16 ...
// Serial.write(prog_num_); // display programm change...
delay(2000);
parm_print_(0); // play parameter printen ...
ProgChange_(192,prog_num_); // nur programm change .. auf chan 1 ...
// init_ISR_(0); // interrupt timer init ...
}
void loop()
{
//*************** was testen ... *****************************************
if (millis() > PrintTime_) // allerlei prrints....
{
PrintTime_ = millis()+1000;
// cpl_AktionLed_(AktionLed_Onf_); // aktion led aus ...
midi_Event_(144,70,64); // ganzer befehl out ...
midi_Event_(144,70,0); // ganzer befehl out ...
/*
lcd.setCursor(0,1);// das erste Zeichen in der ersten Zeile.
lcd.print("ISR: ");
lcd.print(zTest_);
lcd.print(" ");
*/
digitalWrite(pAktionLed_,!digitalRead(pAktionLed_)); // midi out on/off !
zTest_=0;
}
//**************** Aktion LED Timer ... ******************************************
if (AktionLed_Onf_ == ON)
if (millis() > tLED_CPL_TIME_) // blink time ...
cpl_AktionLed_(AktionLed_Onf_); // aktion led aus ...
//*********************** test prints .... ****************************************
return;
if (nTaste_ > 0 and nTaste_ < 12)
{
tFunktion_(nTaste_); // funktionen ...
nTaste_ = 0;
}
//*********************** fader in/out ... ***************************************
// VolUpDw_ = FaderInOut_(VolUpDw_);
//*********************************************************************************
if (pChrdPrnt_ == ON)
{
pChrdPrnt_ = OFF;
// midi_Event_(128,ChordTst_,zTaste_); // ganzer befehl out ...
// zTaste_=0;; // tasten mengen zaehler ...
// return;
// }
chrdsPrnt_(ChrdNum_);
lcd.setCursor(0,2);// das erste Zeichen in der ersten Zeile.
lcd.print("ChrdNum: ");
lcd.print(ChrdNum_);
lcd.print(" ");
// lcd.print(Test_2++);
// lcd.print("< ");
lcd.setCursor(0,3);// das erste Zeichen in der ersten Zeile.
lcd.print("ChordTst_:");
lcd.print(ChordTst_);
lcd.print(" ");
}
// play die noten durch die tasten ....
if (nTaste_ == 64)
{
midi_Event_(144,64,0); // ganzer befehl out ...
nTaste_ = 0;
}
if (nTaste_ == 24)
{
midi_Event_(144,24,0); // ganzer befehl out ...
nTaste_ = 0;
}
if (nTaste_ == 44)
{
midi_Event_(144,44,0); // ganzer befehl out ...
nTaste_ = 0;
}
if (nTaste_ > 0
and nTaste_ != 44 and nTaste_ != 24)//and nTaste_ < 12)
{
midi_Event_(144,nTaste_,7); // ganzer befehl out ...
nTaste_ = 0;
return;
lcd.setCursor(0,1);// das erste Zeichen in der ersten Zeile.
lcd.print("nTaste: ");
lcd.print(nTaste_);
lcd.print("< ");
lcd.print(Test_1++);
lcd.print("< ");
}
}// loop ...
#endif>