 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
tiger Član

Pridružen-a: Čet 05 Feb 2004 0:22 Prispevkov: 1161 Aktiv.: 4.90
|
|
Nazaj na vrh |
|
 |
hahalolek Član


Pridružen-a: Sob 29 Maj 2010 11:49 Prispevkov: 199 Aktiv.: 1.09 Kraj: Domžale
|
Objavljeno: Ned Feb 17, 2013 3:37 pm Naslov sporočila: |
|
|
Problem je ker mi je to profesor dal, da s tem naredim izdelek za maturo.
Ploščica je od mikroelektronike vendar mi njihov primer ne dela. _________________ Lp Blaž
Prvi poklic na svetu je bil električar. Še preden je bog rekel naj bo luč, so oni že kable napeljevali. |
|
Nazaj na vrh |
|
 |
hahalolek Član


Pridružen-a: Sob 29 Maj 2010 11:49 Prispevkov: 199 Aktiv.: 1.09 Kraj: Domžale
|
Objavljeno: Pon Feb 18, 2013 9:25 pm Naslov sporočila: |
|
|
Mi lahko samo kdo pove če je prav, da imam na DEMOD_OUT pinu vedno neko napetost tudi če kartica ni približana. _________________ Lp Blaž
Prvi poklic na svetu je bil električar. Še preden je bog rekel naj bo luč, so oni že kable napeljevali. |
|
Nazaj na vrh |
|
 |
hahalolek Član


Pridružen-a: Sob 29 Maj 2010 11:49 Prispevkov: 199 Aktiv.: 1.09 Kraj: Domžale
|
Objavljeno: Sre Feb 20, 2013 8:44 pm Naslov sporočila: |
|
|
Še enkrat vas prosim za pomoč če bo kdo lahko pomagal.
Ugotovil sem da dobivam na izhodu iz RFID ploščice ko ni kartice neke čudne signale ( vsi so lepi 5V ampak imajo malo različne periode).
Hotel sem to popraviti v programu ampak ni šlo.
Tukaj je moj program. Upam da mi boste lahko pomagali ker imam v petek 2. konzultacijo za maturo in moram imeti program narejen.
Koda: |
char rfid_data[64];
char RFID_Valid[8];
unsigned short cnt = 0,
data_count = 0,
byte_count = 0,
bit_count = 0,
start_bit = 0,
start_write = 1,
start_cnt = 1,
position = 0,
sync_flag = 0,
pulse_time = 0;
void Interrupt() {
if (INT1IF_bit && INT1IE_bit) {
cnt++; // count interrupts on INT1 pin (RB1)
if(start_cnt == 1 && PORTB.B0 == 1) {
pulse_time++;
}
if(start_cnt == 0 && PORTB.B0 == 0) {
pulse_time=0;
}
INT1IF_bit = 0;
}
// This is external INT0 interrupt (for sync start)
// Once we get falling edge on RB0 we are disabling INT0 interrupt
else if (INT0IF_bit && INT0IE_bit) {
cnt = 0;
sync_flag = 1;
INT0IF_bit = 0;
INT0IE_bit = 0;
INT1IF_bit = 0;
INT1IE_bit = 1;
}
}
void main() {
ANSELA = 0; // Izklopi analogne vhode
ANSELB = 0;
ANSELC = 0;
ANSELD = 0;
ANSELE = 0;
C1ON_bit = 0; // Izklopi komparatorje
C2ON_bit = 0;
TRISC = 0;
TRISB = 0x03;
PORTB = 0;
LATB = 0;
PORTC = 0;
PORTD = 0;
TRISD = 0;
UART1_Init(9600);
Delay_ms(100);
while(1) {
cnt = 0; // Reseting interrupt counter
sync_flag = 0; // Reseting sync flag
INTEDG0_bit = 0; // Interrupt on rising edge on RB0
INT1IF_bit = 0;
INT1IE_bit = 1; // Enable external interrupt on RB1 (for sync and sample)
INT0IF_bit = 0;
INT0IE_bit = 0; // Disable external interrupt on RB0 (start sync procedure)
GIE_bit = 1;
while(pulse_time <=30){ // merjenje časa impulzov na RB0
asm nop
}
INT1IE_bit = 0;
INT0IE_bit = 1;
while (sync_flag == 0) { // Waiting for falling edge on RB0
asm nop
}
while (cnt != 16) { // Waiting 16 clocks on RB1 (positioning for sampling)
asm nop
}
cnt = 0;
for (start_bit = 0; start_bit < 9; ) { // stetje 9 start bitov
while (cnt != 32) {
asm nop
}
if(PORTB.B0 == 1){
start_bit++;
}
else start_bit = 0;
}
for (data_count = 1; data_count <= 64; data_count++) { // Getting 128 bits of data from RB0
while (cnt != 32) { // Getting bit from RB0 every 32 clocks on RB1
asm nop
}
cnt = 0; // Reseting interrupt counter
rfid_data[data_count] = PORTB.B0;
}
while(start_write){
GIE_bit = 0; // Disable GIE
RFID_Valid[byte_count].B0 = rfid_data[bit_count]; bit_count++; //zapisi podatke v RFID_Valid spremenljivko (8 bytov)
RFID_Valid[byte_count].B1 = rfid_data[bit_count]; bit_count++;
RFID_Valid[byte_count].B2 = rfid_data[bit_count]; bit_count++;
RFID_Valid[byte_count].B3 = rfid_data[bit_count]; bit_count++;
RFID_Valid[byte_count].B4 = rfid_data[bit_count]; bit_count++;
RFID_Valid[byte_count].B5 = rfid_data[bit_count]; bit_count++;
RFID_Valid[byte_count].B6 = rfid_data[bit_count]; bit_count++;
RFID_Valid[byte_count].B7 = rfid_data[bit_count]; bit_count++;
byte_count++;
if(byte_count >= 8) {
UART1_Write_Text(RFID_Valid); //resetiraj števce ter pošlji podatke preko UART-a
UART1_Write(0x0A);
byte_count = 0;
bit_count = 0;
start_write = 0;
}
}
}
} |
_________________ Lp Blaž
Prvi poklic na svetu je bil električar. Še preden je bog rekel naj bo luč, so oni že kable napeljevali. |
|
Nazaj na vrh |
|
 |
tiger Član

Pridružen-a: Čet 05 Feb 2004 0:22 Prispevkov: 1161 Aktiv.: 4.90
|
|
Nazaj na vrh |
|
 |
eddie Član

Pridružen-a: Sre 10 Dec 2003 21:02 Prispevkov: 723 Aktiv.: 3.05 Kraj: Severna primorska
|
Objavljeno: Sre Feb 20, 2013 9:56 pm Naslov sporočila: |
|
|
vilko je napisal/a: |
Ja, točno, odvisno od namena. Imel sem v mislih odpiranje garažne rolete. Tam bi bilo fajn, da bi kar iz avta odprl roleto. No sicer pa so v ta namen tudi drugačni daljinci. |
Kot je že watts napisal - stebriček, tag pa vgradiš v zunanje vzvratno ogledalo pri avtu...  |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 495 dni
Powered by phpBB © 2001, 2005 phpBB Group
|