Bra komma igångguider för AVR + C ?
- MicaelKarlsson
- Inlägg: 4669
- Blev medlem: 18 juni 2004, 09:16:07
- Ort: Aneby
- Kontakt:
- MicaelKarlsson
- Inlägg: 4669
- Blev medlem: 18 juni 2004, 09:16:07
- Ort: Aneby
- Kontakt:
Om du inte använder något externt pullup så kommer knappen inte fungera om det är en vanlig slutande knapp. Enklast är om du aktiverar det inbyggda pullup-motståndet på just den pinnen som du har knappen kopplad till. Det gör du genom att sätta porten till ingång (genom DDRD) och sedan aktivera pullup:et (genom PORTD).Macce skrev:cykze, nej, vad är passligt värde?
Den kod du gav tänder en led, men inget händer när man pillar på knapparna. Inget händer heller om jag drar 5V till ingångsbenen på kretsen.
MicaelKarlsson, nepp, med dendär koden är alla leds släkta och inget händer på knapparna.
Kod: Markera allt
int main()
{
DDRB = 0xFF; // Sätter alla pinnar som utgångar
PORTB = 0xFF; // Sätter alla pinnar höga
DDRD = 0x00; // Sätter alla pinnar som ingångar
PORTD = _BV(PD2); // Aktiverar pullup på pinnen PD2
while (1)
{
if (!(PIND & _BV(PD2))) // Om PD2 låg
{
PORTB &= ~_BV(PB0); // Sätt bit0 i PORTB till 0. (tänder led:en)
}
else
{
PORTB |= _BV(PB0); // Sätt bit0 i PORTB till 1. (släcker led:en)
}
}
}
Tack för koden, mycket jag känner igen från php i den, bara "innehållet" som jag inte kunde.
Aktiveras pullup på alla portar om jag lägger PORTD = 0xFF ? Är det till skada att ha pullup på de portar man inte använder?
Skall bläddra igenom databladet när jag hinner, det är ju inte direkt lite text i det
Finns det smidigare sätt att kräva att två knappar än intynda än
?
Provade med if (!(PIND & _BV(PD2) | _BV(PD3))) men det fungerade inte.
Aktiveras pullup på alla portar om jag lägger PORTD = 0xFF ? Är det till skada att ha pullup på de portar man inte använder?
Skall bläddra igenom databladet när jag hinner, det är ju inte direkt lite text i det

Finns det smidigare sätt att kräva att två knappar än intynda än
Kod: Markera allt
if (!(PIND & _BV(PD2)))
{
if (!(PIND & _BV(PD3)))
{
PORTB &= ~_BV(PB0);
}
}
Provade med if (!(PIND & _BV(PD2) | _BV(PD3))) men det fungerade inte.
- MicaelKarlsson
- Inlägg: 4669
- Blev medlem: 18 juni 2004, 09:16:07
- Ort: Aneby
- Kontakt:
- MicaelKarlsson
- Inlägg: 4669
- Blev medlem: 18 juni 2004, 09:16:07
- Ort: Aneby
- Kontakt:
Jepp. Du kan t ex skriva:Macce skrev:Tack för koden, mycket jag känner igen från php i den, bara "innehållet" som jag inte kunde.
Aktiveras pullup på alla portar om jag lägger PORTD = 0xFF ? Är det till skada att ha pullup på de portar man inte använder?
Skall bläddra igenom databladet när jag hinner, det är ju inte direkt lite text i det
Finns det smidigare sätt att kräva att två knappar än intynda än
?Kod: Markera allt
if (!(PIND & _BV(PD2))) { if (!(PIND & _BV(PD3))) { PORTB &= ~_BV(PB0); } }
Provade med if (!(PIND & _BV(PD2) | _BV(PD3))) men det fungerade inte.
Kod: Markera allt
if (!(PIND & _BV(PD2)) && !(PIND & _BV(PD3)))
{
PORTB &= ~_BV(PB0);
}
if (!(PIND & (_BV(PD2) | _BV(PD3))))
Senast redigerad av cykze 24 april 2005, 15:30:56, redigerad totalt 1 gång.