traaoni Skrevet 12. oktober 2013 Del Skrevet 12. oktober 2013 Hei Skal programmere en bryter som slår på LED bryteren er koblet til PB0 og LED er koblet til PB4. Når jeg har programmert som vist under, funker det som det skal; LED'en lyser når jeg trykker på bryter, og er av når jeg ikke trykker. Hvis jeg fjerner "PORTB |= (1 << 0);", under void setup() så lyser lampen når jeg ikke trykker, og lyser litt sterkere når jeg trykker. SPØRSMÅL: Lurer på om noen kan forklare meg hvorfor jeg må ha "PORTB |= (1 << 0);" i void setup() for å få programmet til å funke som det skal? takk for hjelp. int var; void setup() { DDRB |= (1 << 4); DDRB &= ~(1 << 0); PORTB |= (1 << 0); } void loop() { var = PINB & _BV(PINB0); if (var == LOW) { PORTB |=(1<<4); } else { PORTB&=~(1<<4); } } Lenke til kommentar
Lycantrophe Skrevet 12. oktober 2013 Del Skrevet 12. oktober 2013 (endret) Hva er PORTB? Er ikke |= (1 << 0) ekvivalent med |= 1? Edit: snek seg inn en typo, gitt. Endret 12. oktober 2013 av Lycantrophe Lenke til kommentar
Giddion Skrevet 13. oktober 2013 Del Skrevet 13. oktober 2013 (endret) Gjetter på at du programmerer på en AVR microcontroller...... Du gir ikke nok info til at jeg kan være helt sikker, men alle avr kontrollere jeg har jobbet med har en intern pull-up som blir aktivert hvis DDR (data-direction-register) for pinnen er satt til 0 (inngang) og PORT til 1 Hvis jeg har rett vil ikke knappen din bli lest av riktig hvis pull-upen er av ettersom pinnen vil flyte når knappen ikke er nede. Gjetter vilt på at bryteren er koblet til 0v på en side og kontrolleren pinnen portB0 på den andre. Hva er PORTB? Hvis dette er snakk om en AVR kontroller er PORTB et register (tenk variable) som inneholder avlesningen setter av spenningsnivået (høy/lav) på flere fysiske innganger utganger(som oftest 8) kalt B0-7. For å lese av sette verdien i B0 leser skriver man av til det første bittet i PORTB. edit: whops...forvekslet PORTB med PINB i forklaringen til Lycantrophe Endret 13. oktober 2013 av Giddion 2 Lenke til kommentar
traaoni Skrevet 13. oktober 2013 Forfatter Del Skrevet 13. oktober 2013 Takk Giddion, det var det jeg trengte å vite. Beklager lite opplysninger ang. hardware, det er forresten en AVR mikrokontroller ja, som sitter på et arduinobrett(UNO3) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå