PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Korken
Inlägg: 2230 Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön
Inlägg
av Korken » 28 april 2007, 22:31:03
Hej alla glada!
Testar att clocka in data men det fungerar inte.
Kan någon se vad som är fel?
Kod: Markera allt
#include <avr/interrupt.h>
#include <util/delay.h>
#define F_CPU 8000000UL
#define C_PORT PORTB
#define C_MASK (0<<0)|(0<<1)
#define LED_PORT PORTD
#define DATA_PIN 2
volatile unsigned char data = 0;
int main(void)
{
cli();
DDRB = C_MASK;
DDRD = 0xFF;
EICRA = (1<<ISC11)|(1<<ISC10); // Rising edge
PCICR = (1<<PCIE0); // Interupt somewhere in PCINT0..7
PCMSK0 = (1<<PCINT0); // Interupt is on PCINT0
sei();
while(1)
{
LED_PORT = data;
}
return 0;
}
SIGNAL(SIG_PIN_CHANGE0)
{
if(PINB & DATA_PIN)
data <<= 1;
else
data <<= 0;
}
//Emil
thepirateboy
EF Sponsor
Inlägg: 2109 Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge
Inlägg
av thepirateboy » 28 april 2007, 22:40:52
En vild chansning så här på kvällskvisten, instruktionen data <<= 1 skiftar väl data ett steg till vänster, och data är initierat till noll. Prova att initiera data till 0x01 eller nåt.
Korken
Inlägg: 2230 Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön
Inlägg
av Korken » 28 april 2007, 23:17:28
Just ja!
Börjar bli lite för trött tror jag.
//Emil
Stinrew
Inlägg: 954 Blev medlem: 20 augusti 2006, 03:14:41
Ort: Motala
Kontakt:
Inlägg
av Stinrew » 2 maj 2007, 23:08:27
Fungerar
, ska det inte vara
istället??
Och framför allt, var sätter du Interruptbiten i sreg???
SREG |= 0x80;
Är det detsamma som sei();???