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?