¨har suttit och pillat meden avr å avr gcc ett tag nu..
har fått leds att lysa osv, menhur gör jag om jag vill att en led ska tändas när jag trycker på en knapp? får inte till det =/
har ledsen på porta och knapparna på portc
nån som kan ge ett snabbt och enkelt exempel?
nybörjar fråga avr-gcc
Enklast tycker jag är att koppla knappen till någon INTn-pinne. Då kan du välja att få en interrupt när pinnen går från hög till låg eller tvärtom. Sätter du dessutom en konding över knappen till jord och kör med det inbyggda pullup:et så slipper du tänka på mjukvaruavstudsning.
Så här kan du göra om du har en knapp kopplad mellan jord och INT0 (PD2 på Mega48) och en lysdiod på PD4:
Så här kan du göra om du har en knapp kopplad mellan jord och INT0 (PD2 på Mega48) och en lysdiod på PD4:
Kod: Markera allt
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
INTERRUPT (SIG_INTERRUPT0)
{
PORTD ^= _BV(PD4);
}
int main()
{
DDRD = _BV(PD4); // Sätter PD4 som utgång
PORTD = _BV(PD2); // Aktiverar pullup på PD2
// Aktiverar INT0 att trigga på fallande flank
// (lite beroende på vilken AVR du har)
EICRA = _BV(ISC01);
EIMSK = _BV(INT0);
sei();
while (1)
{
}
return 1;
}