Forum: Compiler & IDEs C- Code und ATTiny45 vertragen sich nicht.


von Christian (Gast)


Lesenswert?

Hallo,

nachdem ich nun schon das ganze Board 3x durchgelesen hab und nichts 
finden kann, was mir hilft, hoffe ich, dass sich jemand im Board findet, 
der meinen Fehler findet.

Die Schaltung mit einem ATTiny45 soll eine Lampe per PWM, eine Gruppe 
LEDs ansteuern sowie die Akkuspannung überwachen, die Temperatur 
überwachen und durch einen Reedschalter gesteuert werden - dass ist 
zumindest mal das Ziel ;-).

PB0 - PWM
PB1 - LEDs
PB2 - Spannungsüberwachung
PB3 - Temperatur
PB4 - Schalter

Mein Problem: Nach dem programmieren des ATTiny leuchtet die LED an PB1 
(sollte sie eigentlich noch nicht) - der Schalter lässt sich dafür 
jedoch gar nicht benutzen.

Hat irgendwer ne Idee?

Grüße!

von (prx) A. K. (prx)


Lesenswert?

Super - soll man Fehler finden ohne Programm kennen zu dürfen.

von Christian (Gast)


Angehängte Dateien:

Lesenswert?

Oh, sorry, hatte es eigentlich angehängt...

von Stefan E. (sternst)


Lesenswert?

Die Funktion Reedschalten scheint mir doch reichlich sinnfrei zu sein. 
(PINB & 0x00 ) ist immer false.

von Christian (Gast)


Lesenswert?

Danke für den Hinweis!

Irgendwann sind meine Versuche wohl in Verzweifelung übergegangen - habs 
ersetzt:   if ( !(PINB & (1 << PINB4)) )

Im Simulator passts - nur auf dem Board läufts leider nicht (ISP - 
Programmierung über mySmartUSB).

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Das ist falsch:

PORTB &= ~((1 << PB0) | (1 << PB1));//an Eingang PB4 wird der Pull-Up 
Widerstand aktiviert (Schalter an GND)

Pullups sind aktiviert, wenn der Port high gesetzt wird.
So sollte es funktionieren:

PORTB = 0b00010000;    // Pullup B4 ein


Grüße,

Peter

von Stefan E. (sternst)


Lesenswert?

@ Peter Diener:

Vor der von dir bemängelten Zeile steht diese:
> PORTB = 0xff;

Code und Kommentar sind zwar etwas unglücklich formuliert, aber auch bei 
seinem Code ist PORTB4 auf High.

von Christian (Gast)


Lesenswert?

Nachts drüber schlafen und morgends nochmal ins Datenblatt des ATTiny 
schaun hilft doch manchmal...wenn man den falschen Port anspricht, gehts 
halt einfach nicht...

Sorry und danke für die Mühe!

Schönen Sonntag!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.