PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eigener C Code auf ATTiny13 funktioniert nicht



chaotic
25.04.2008, 18:16
Hi, weiß jmd wo der Fehler bei folgendem Code ist?
Der Fehler muss auf jeden Fall im Code sein, verändert funktioniert alles aber eben nicht so wie gewollt:

Bei Licht soll der Transistor strom auf PB2 geben und die LED aktivieren bis durch einen einmaligen Impuls an PB0 selbige ausgeschaltet wird.
Es scheint als würde er immer in die if abfrage if(bit_is_set(PINB, 0)) gehen auch wenn auf PB0 kein Strom liegt, danke im vorraus!


#include <avr/io.h>

int main()
{
DDRB = 0b00001000; // PB3 ist Ausgang
int iloop = 1;

do
{
if(bit_is_set(PINB, 0))
{
PORTB = 0b00000000;
iloop = 0;
} else if(bit_is_set(PINB, 2))
{
PORTB = 0b00001000;
}
} while(iloop == 1);


return 1;
}

LED: PB3 - K2
Widerstand: L2 - GND
Fototransistor: VCC - PB2

radbruch
25.04.2008, 18:24
Es fehlt ein Widerstand zwischen PB2 und GND. Ohne liegt über den Fototransistor immer VCC an PB2. Wie ist den PB0 beschaltet? Ein Taster und ein PullDown vielleicht?

Die Endlosschleife vor return fehlt auch, sonst verabschiedet sich der tiny ins Nirwana wenn iloop == 0!

chaotic
26.04.2008, 11:29
danke dir vielmals jetzt scheint es zu funktionieren ;D
lg chaotic



#include <avr/io.h>

int main()
{
DDRB = 0b00001000; // PB3 ist Ausgang
int iloop = 1;

while(iloop == 1)
{
if(bit_is_set(PINB, 0))
{
PORTB = 0b00000000;
iloop = 0;

} else if(bit_is_set(PINB, 2))
{
PORTB = 0b00001000;
}
}

while(1){}
return 1;
}