Sziasztok!
Szokásomhoz híven nem nyitok újabb topic-ot ..., mert nem is tudom, hogy hol kellene.
A körülmény: ATmega644 + STK500 klón + AVRStudió + C nyelv.
Az eset: egyszerű PORT beolvasást szeretnék megvalósítani valahogy így:
while(1)
{
if ((PINC & 16) == 0) // PC4 láb bemenet
PORTD = 8; // LED kimenet
else if ((PINC & 32) == 0) // PC5 láb
PORTD = 16; // LED kimenet
else
PORTD = 32; // LED kimenet
}
Az a problémám, hogy hiába teszek a PC5 lábra negatívot, akkor is a PC4 lábhoz tartozó feltételt teljesíti. Ha PC6, PC7 (vagy az A, B portot) lábakat használom bemenetnek, akkor nincs probléma.
Előzmény: Atmega644-re felprogramoztam egy Atmega88 progit véletlenül.
Azt vettem észre, hogy amikor a programozóban ki/be kapcsolom a JTAG fület, akkor hol mindkét kimenetem (PORTD) aktív, hol csak az egyik (de az is a hibás). A karcos lábak: TDI, TDO, TMS, TCK. Remélem sikerült elég érthetően elmagyarázni. Ez nem valami JTAG probléma?