logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[ATmega8][BASCOM] Odczyt ID karty chipowej.

DjExit 10 Lip 2009 12:19 3883 4
REKLAMA
  • #1 6761958
    DjExit
    Poziom 23  
    Witam, przeszukuje internet w tę i nazad ale nie mogę doszukać się w jaki sposób odczytać ID karty elektronicznej, np. telefonicznej TP, albo kredytowej. Z tego co wyczytałem to ID karty to 8 pierwszych bajtów karty, więc trzeba je odczytać. Również czytałem, że karty są różne, takie bedącą samą pamiecią EEPROM, albo takie z mikrokontrolerem.. Czy sposób ich odczytu jest inny ? I proszę o pomoc w napisaniu programu do odczytu karty a języku BASCOM.. Na elce i w kilku innych miejscach znalazłem jedynie listingi w C. Poza tym często widzę, że do karty potrzebny jest rezonator 3,57Mhz, a ja mam przed sobą projekt zamka na katy chipowe (Nowy Elektronik 4/2004) i tam karta jest po prostu podłączana do mikrokontrolera, a jedyny kwarc to 12Mhz dla procka.
  • REKLAMA
  • REKLAMA
  • #3 6784244
    DjExit
    Poziom 23  
    Witam ponownie.. Przeczytałem wszytko co znalazłem i próbowałem na setki sposobów ale NIE DZIAŁA.. Sprawdziłem 8 różnych kart chipowych i nic.. Oto mój kod w bascomie:

    Config Portc.1 = Output
    Config Portc.2 = Output
    Config Portc.3 = Input
    Config Portc.4 = Input
    
    $crystal = 8000000
    
    Res Alias Portc.1                                           'Pin resetu karty
    Clk Alias Portc.2                                           'Sygnał zegarowy karty
    Io Alias Pinc.3                                             'Wejście danych z karty
    Stan Alias Pinc.4                                           'Stan styku rozwieranego po włożeniu karty
    
    Res = 0 : Clk = 0 : Io = 1 : Stan = 1
    
    
    Declare Sub Adres
    Declare Sub Chip_res
    
    Dim X As Byte
    
    
    
    Cls
    
    
    Do
    
    Bitwait Stan , Set
    Waitms 200
    
    Call Chip_res
    
    For X = 1 To 20
    Locate 1 , X
    Lcd Io
    Call Adres
    Next X
    
    Bitwait Stan , Reset
    
    Loop
    End
    
    Sub Adres
       Clk = 0
       Delay
       Clk = 1
       Delay
       Clk = 0
       Delay
    End Sub
    
    Sub Chip_res
       Res = 1
          Delay
       Clk = 1
          Delay
       Clk = 0
          Delay
       Res = 0
          Delay
    End Sub
    

    Efektem są zawsze albo same zera albo tylko pierwszy znak to "1".. Próbowałem też odczytać 64bity z karty i przesyłałem je uartem do kompa i efekt ten sam, albo same 0 albo pierwszy znak to 1.. Co robię nie tak? Studiowałem sposób resetu i komunikacji z kartą już 10 razy i porawiałem kod wielokrotnie eksperymentując i do niczego nie doszedłem..
  • REKLAMA
  • #5 6788897
    nenpa8lo
    Poziom 17  
    DjExit napisał:

    Efektem są zawsze albo same zera albo tylko pierwszy znak to "1".. Próbowałem też odczytać 64bity z karty i przesyłałem je uartem do kompa i efekt ten sam, albo same 0 albo pierwszy znak to 1.. Co robię nie tak? Studiowałem sposób resetu i komunikacji z kartą już 10 razy i porawiałem kod wielokrotnie eksperymentując i do niczego nie doszedłem..


    Możliwe, że problem jest tam gdzie nie szukasz. Mówisz, że wyniki odczytu przesyłasz przez UART do PC. Może właśnie to Twój UART przesyła błędne wyniki a odczyt z karty jest OK? Czy jeżeli zapełnisz bufor znanymi danymi a potem wyślesz je UARTem do PC, to czy po stronie PC dostajesz poprawne dane?
REKLAMA