Arduino Mega 2560 PIN 13 auf HIGH während der Initialisierung

Hallo zusammen,

ich arbeite an einem kleinen Automatisierungsprojekt mit 3 Pumpen ein paar Ventilen/Sensoren und einem Touch-Display.
Da mir auf den Micro der Programmspeicherplatz ausgegangen ist musste ich auf den Mega umstellen.

Ich habe das Programm des Micro bezüglich Pin-Belegung und Serial-Verbindung zum Touch-Display angepasst und an sich funktioniert auch alles wie es soll, außer:
Während des Setups gibt der PIN 13 ein HIGH Signal aus. Das ganze geht ca. 2sec, danach funktioniert alles wie gewollt. Problem an der Sache ist, an PIN 13 hängt die Wasserpumpe und macht Sauerrei. Ich würde ja einen anderen PIN nehmen, aber habe für das Projekt eine PCB gemacht. Außerdem habe ich die PWM Frequenz auf 15,6 kHz eingestellt und PIN 11,12,13 liegen am gleichen Port an.

Hier mal der Code der Setup:

void setup() {
  
  nexSerial.begin(9600);
  //Wartet bis Serielle Kommunikation aufgebaut ist:
  while (!nexSerial)
  {};


  nexInit();
  
  b1.attachPop(b1PopCallback, &b1);
  b2.attachPop(b2PopCallback, &b2);
  b3.attachPop(b3PopCallback, &b3);
  b4.attachPop(b4PopCallback, &b4);
  b5.attachPop(b5PopCallback, &b5);
  b6.attachPop(b6PopCallback, &b6);
  b8.attachPop(b8PopCallback, &b8);
  b10.attachPop(b10PopCallback, &b10);
  b12.attachPop(b12PopCallback, &b12);
  //b14.attachPop(b14PopCallback, &b14);
  b20.attachPop(b20PopCallback, &b20);
  b21.attachPop(b21PopCallback, &b21);
  b22.attachPop(b22PopCallback, &b22);
  b23.attachPop(b23PopCallback, &b23);
  b24.attachPop(b24PopCallback, &b24);
  b30.attachPop(b30PopCallback, &b30);
  b42.attachPop(b42PopCallback, &b42);
  b53.attachPop(b53PopCallback, &b53);
  b63.attachPop(b63PopCallback, &b63);
  b73.attachPop(b73PopCallback, &b73);
  b80.attachPop(b80PopCallback, &b80);
  b81.attachPop(b81PopCallback, &b81);
  b82.attachPop(b82PopCallback, &b82);
  b83.attachPop(b83PopCallback, &b83);
  b84.attachPop(b84PopCallback, &b84);
  b132.attachPop(b132PopCallback, &b132);
  b143.attachPop(b143PopCallback, &b143);
  b153.attachPop(b153PopCallback, &b153);
  b163.attachPop(b163PopCallback, &b163);
  b230.attachPop(b230PopCallback, &b230);
  b231.attachPop(b231PopCallback, &b231);
  b232.attachPop(b232PopCallback, &b232);
  b233.attachPop(b233PopCallback, &b233);
  b234.attachPop(b234PopCallback, &b234);
  b252.attachPop(b252PopCallback, &b252);
  b263.attachPop(b263PopCallback, &b263);
  b273.attachPop(b273PopCallback, &b273);
  b283.attachPop(b283PopCallback, &b283);
  b294.attachPop(b294PopCallback, &b294);
  b301.attachPop(b301PopCallback, &b301);
  b311.attachPop(b311PopCallback, &b311);
  //b321.attachPop(b321PopCallback, &b321);
  b312.attachPop(b312PopCallback, &b312);
  b332.attachPop(b332PopCallback, &b332);
  //b322.attachPop(b322PopCallback, &b322);
  c300.attachPop(c300PopCallback, &c300);
  //c301.attachPop(c301PopCallback, &c301);

  
  
  //Löschen aktiver Timer
  TCCR1A = 0;
  TCCR1B = 0;
  
  //einstellen Fast-PWM 10-Bit
  TCCR1A |= (1 << WGM10) | (1 << WGM11);
  TCCR1B |= (1 << WGM12);

  //Vorteiler auf 1 setzten
  TCCR1B |= (1 << CS10);  

  //PWM-Signal als nicht invertierend setzen
  TCCR1A |= (1 << COM1A1);
  TCCR1A |= (1 << COM1B1);
  TCCR1A |= (1 << COM1C1);

  DDRB |= (1 << DDB5);  //Digital I/O PIN 11 als Ausgang setzen
  DDRB |= (1 << DDB6); //Digital I/O Pin 12 als Ausgang setzen
  DDRB |= (1 << DDB7); //Digital I/O Pin 13 als Ausgang setzen
  
  pinMode(Sperrventil, OUTPUT); //Digital I/O Pin 28 als Ausgang setzen
  pinMode(Wegeventil, OUTPUT);  //Digital I/O Pin 27 als Ausgang setzen
  pinMode(Tanksensor, INPUT);   //Digital I/O Pin 25 als Eingang setzen

  
}

Hatte jemand schon einmal ein ähnliches Problem?

Hatte jemand schon einmal ein ähnliches Problem?

Das haben alle, welche nicht aufpassen!
(muss man mal durchgemacht haben)

An Pin 13 hängt die LED_BUILTIN und diese wird vom Bootloader erleuchtet.
Welcher somit dann auch deine Pumpe betätigt.

Möglichkeiten:

  • Pumpe auf anderen Pin umlegen
  • Bootloader verändern
  • Bootloader entsorgen

Klar stimmt ergibt Sinn! Danke!!

werde wohl die Platine neu machen, da ich einige Dinge ändern musste (meine erste PCB Platine).
Aber bis China wieder billige Platinen liefert könnte es noch etwas dauern..
Also werde ich wahrscheinlich Möglichkeit Nr. 4 wählen xD

  1. Leitung vom Bootloader zu PIN D13 aufbohren. Die dumme LED braucht eh niemand :smiley:

Ja, damit ist die LED aus, aber der Bootloader wackelt weiter an dem Pin.

Also, außer Schaden nix gewonnen.

(deleted)

Mensch, PIN13 wird doch für einen Watchdog benötigt

Wieso?

Schwani:
Klar stimmt ergibt Sinn! Danke!!

werde wohl die Platine neu machen, da ich einige Dinge ändern musste (meine erste PCB Platine).
Aber bis China wieder billige Platinen liefert könnte es noch etwas dauern..

Hi, also zurzeit liefert China wieder Platinen , zumindest in die Schweiz, mit DHL. Habe grade am Donnerstag (26. März) welche bekommen, die ich am 20. März bestellt habe, also 6 Tage (Herstellung inkl. Lieferung an die Haustür). Ich hab Hier Bestellt.
Hab auch gestern nochmals ne Bestellung aufgegeben.

LG Stefan