Prośba do elektroników - programistów (C++)

Witam

Wiem, że wśród aktywistów grupy jest wielu znakomitych programistów. Dlatego zwracam się z ogromną prośbą.

Zbudowałem urządzenie (oczywiście na dyplom) - najogólniej mówiąc przetwornik A/C, dwa kanały 8-bitowe. Ma ono komunikować się z PC poprzez USB 2.0. Interfejs realizowany za pomocą mikrokontrolera CY7C68013-56PVC (CYPRESS FX2). Urządzenie jest już gotowe i nawet działa co należy uznać za niebywały sukces zważywszy na błędy, które popełniłem w projekcie (o części z nich pisałem na grupe). Żeby urządzenie było kompletne wymaga oprogramowania komunikującego się z nim. Ta część pracy nie należy już do mnie, tym bardziej, że ze mnie programista marny. Nie mniej muszę jakoś zbadać przydatność urządzenia do użytku. Wymyśliłem, że użyję oprogramowania od CYPRESS-a. Nazywa się toto EZ-USB Control Panel i jest bardzo przydatne, gdyby nie jedno ograniczenie. Nie pozwala na jednorazowe odebranie więcej niż 65536 bajtów danych w trybie "Bulk". Na rysunku

formatting link
zaznaczyłem numerem 1 miejsce gdzie należy wpisać liczbę bajtów, które chcę odebrać (jeśli wybrany w polu nr 3 endpoint typu "IN" - kierunek od urządzenia). Transfer danych wyzwala się przyciskiem oznaczonym nr 2 lub przyciskiem nr

4 - wtedy jednocześnie dane są zapisywane do pliku (po wpisaniu nazwy pliku w pojawiającym się oknie dialogowym). Mi zależy na tym aby wartość w polu nr 1 mogła być rzędu 10 000 000. Przy zapisie do pliku można by sobie darować wyświetlanie danych. Zamieszczam link do źródeł programu
formatting link
"Cypress Semiconductor will not provide technical support for this example code." I jeszcze informacja: "Version 6.0 of Microsoft Developer Studio was used to build and maintain the Control Panel."

Jeśli by ktoś znalazł chwilkę czasu i mógł zerknąć czy taka modyfikacja wogóle jest możliwa to byłbym niewymownie wdzięczny i zobowiązany. Ewentualnie w jaki inny sposób można przeprowadzać akwizycję danych z tego urządzenia?

Pozdrawiam Marcin

Reply to
M.S.
Loading thread data ...

Mówisz że Ci transmisja USB działa? to co za problem odczytywać co 64KB?

Mister

Reply to
Mister

Użytkownik "Mister" <wojpie@wywal_to.poczta.onet.pl> napisał w wiadomości news:dehqh9$n3n$ snipped-for-privacy@news.dialog.net.pl... ....

Transmisja działa. Sprawdziłem to właśnie odbierając jednorazowo max 64kB. Ale tu nie chodzi o to czy działa ale o parametry urządzenia (głównie o nieliniowość różniczkową) a tu potrzeba dużej ilości danych. Wiadomo, że błąd względny maleje wraz ze wzrostem liczby pomiarów. Oczywiście przy odrobinie cierpliwości i samozaparcia mogę zainicjować sto kilkadziesiąt pomiarów po 64kB, tylko że nie będzie to odpowiadać rzeczywistym warunkom pracy urządzenia, które normalnie będzie musiało zbierać w jednym cyklu po kilka milionów danych.

Dzięki za zainteresowanie i proszę o więcej :) Pozdrawiam Marcin

Reply to
M.S.

[...]

Spróbuj stałą MAX_FILE_SIZE w pliku EzMr.h zwiększyć do żądanej wartości. Nie mam jak tego sprawdzić, napisz czy zadziałało.

Reply to
Adam Dybkowski

Użytkownik "Adam Dybkowski" snipped-for-privacy@amwaw.edu.pl> napisał w wiadomości news:det7sd$kco$ snipped-for-privacy@nemesis.news.tpi.pl... [...]

Od tego zaczynalem swoje proby. Niestety nie zadzialalo. Kompilacja jest bez bledow, ale program sie wywala jesli wpisze liczbe wieksza niz 65536 z nastepujacym komunikatem (WinXp): "Instrukcja spod "0x0040d5c0" odwołuje się do pamięci pod adresem "0xdddddfb9". Pamięć nie może być "read"."

Dzieki za zainteresowanie Pozdrawiam Marcin

Reply to
M.S.

Ten adres 0xdddd... wygląda jakoś podejrzanie. Uruchom w trybie debugowania i zobacz, w jakim module występuje 0x0040d5c0. Zobacz poza tym ścieżkę wywołań funkcji (call stack). Ale na uczenie Visual C++ to już raczej NTG.

Reply to
Adam Dybkowski

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.