[Bascom]Czytnik kart chipowych nie widzi mi karty.

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

[Bascom]Czytnik kart chipowych nie widzi mi karty.

Post autor: matrix » 27 paź 2012, 23:02

Wreszcie po jakimś czasie znalazłem a raczej dostałem od pewnego kolegi kod w bascomie do czytania kart telefonicznych na chipy. Kod ogólnie działa, ale...
No właśnie jak zawsze jest ale. Nie widzi mi karty tak więc wgranie "niczego" czyli tylko zwarty (rozwarty) "sprawdzacz" włożonej do slotu karty powoduje że można otworzyć układ wszystkim.

Za każdym razem Id katy mam jednakowe i jest ono równe FFFFFFFFFFF. Ale co ciekawe, całkowite odłączenie karty daje same zera. Pomożecie?
W załączniku kod bascoma.

Najciekawsze jest to że znalazłem inny program w bascomie, który można znaleźć -> tutaj <- i jest on ze strony EP, -> stąd <-, a na którym też nie czyta mi karty. Więc wynikało by z tego że mam jakiś problem bardziej sprzętowy niż programowy.

Ale jak to możliwe skoro wszystko sprawdziłem wiele razy. Może trzeba piny procka pozmieniać?
Załączniki
czytnik kart.zip
(2.55 KiB) Pobrany 261 razy

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 29 paź 2012, 17:54

I co? Nikt nie jest w stanie pomóc? Już nawet podpowiem że czytanie karty odbywa się tutaj:

Kod: Zaznacz cały

   Id = 0

      Gosub Reset_chip                                      'wywołaj reset chipa

   For R = 1 To 6                                           ' odczytanie 6 razy po 7 bitów z karty
      For X = 0 To 7
        Gosub Adres
        A.x = Io
      Next X
      Ciag = Ciag + Hex(a)                                  'zapis odczytanych bitów w postaci szesnastkowego ciagu
   Next R

   Ciag = Mid(ciag , 2 , 11)                                'usunięcie pierwszego znaku ciągu, bo zawsze jest 0
   Print "ID karty: " ; Ciag                                'wyswietl numer karty
    waitms 100

      Gosub Koniec
                                                'po odczycie przejdz do podprogramu koncowego
 End If
 Waitms 50
Loop                                                        'pętla
End                                                         'koniec programu

Reset_chip:                                                 'procedura resetu chipa
   Res = 1
   Delay
   Clk = 1
   Delay
   Clk = 0
   Delay
   Res = 0
   Delay

Return
                                                           'procedura odczytu bitów
Adres:
   Res = 0
   Delay
   Clk = 1
   Delay
   Clk = 0
   Delay
Return
Ale nie wiem co jest? Może za szybko procek komunikuje się z kartą bo taktuję go 8MHz. Może powinienem użyć kwarcu zegarkowego? Bodajże 32kHz z czymś.

Macie może jakieś linki co do lektury? Żeby trochę o tym poczytać.

ODPOWIEDZ