Hi allerseits!
Ich bastel gerade eine kleine Temperaturregelung für mein Ätzbad (wohl
immer wieder eines der ersten Probleme, die am Anfang eines Heimlabors
auftauchen :). Dazu verwende ich einen tiny25, an dem eine Blubberpumpe,
ein Heizstab und ein Thermometer hängen. Die Regelung funktioniert auch
schon ganz gut.
Nun zu meinem Problem:
Ich möchte für die Befüllung des Bades kurzfristig die Pumpe abschalten,
damit nichts rausspritzt. Dazu habe ich noch einen Taster angeschlossen,
der mit der Regelung ca. einmal pro Sekunde abgefragt wird. Wenn er dann
gedrückt wird, soll die Pumpe für ca. 30s ausgehen und danach wieder an.
Den Code dafür habe ich mir folgendermaßen vorgestellt:
1 | //Pumpe unterbrechen (zum Befüllen)
|
2 | if(PINB & (1<<PIN_SCHALTER))
|
3 | {
|
4 | PORT_PUMPE &= ~(1<<PIN_PUMPE);
|
5 | p=1;
|
6 | }
|
7 |
|
8 | if(p != 0)
|
9 | {
|
10 | p++;
|
11 | if(p > 30)
|
12 | {
|
13 | p=0;
|
14 | PORT_PUMPE |= (1<<PIN_PUMPE);
|
15 | }
|
16 |
|
17 | }
|
Leider funktioniert das ganze nicht. Keine Fehlermeldungen, aber auch
keine Reaktionen auf den Taster. Achso, den Taster habe ich
folgendermaßen initialisiert:
1 | //Schalterpin auf Eingang setzen
|
2 | DDR_PORT_SCHALTER &= ~(1<<PIN_SCHALTER);
|
3 | PORT_SCHALTER |= (1<<PIN_SCHALTER);
|
D.h. ich möchte die internen Pull-Up Wiederstände verwenden. Der Taster
müsste dann eigentlich nur noch zwischen GND und VCC umschalten.
Vielleicht hab ich aber auch noch irgend einen ganz dummen Fehler
reingebaut...
Vielen Dank schon mal im Vorraus,
Kai