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

Aug 24, 2005 5 Replies

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



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

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

[...]

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.

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

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.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required