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

[ATtiny2313]+Bascom+zapis/odczyt danych do pamięci RAM

Kuczus 22 Maj 2009 21:31 3627 5
REKLAMA
  • #1 6562517
    Kuczus
    Poziom 19  
    Witam. Mam następujący problem, który wyskoczył mi podczas zabawy z bascomem. Zadałem sobie pewne zadanie (związane z robotem-samochodzikiem na którego przodzie umieszczona jest krańcówka dająca stan 1 na jeden z portów) którego opis jest następujący:
    Ustawiamy robota w punkcie A.
    Pojazd dostaje komendę "start" i włącza się licznik zliczający czas. Robot jedzie po linii prostej i powiedzmy po 10 sekundach uderza w przeszkodę(oznaczoną jako miejsce "B") zmieniając stan danego portu. Do tego momentu doszedłem bez problemu. Teraz gł. część zadania jest to, by robot zapamiętał ten przejazd.Teraz po usunięciu tej przeszkody(zaznaczając jej położenie markerem) robot musi odtworzyć to co zrobił, czyli po ułożeniu go na punkcie A,musi dojechać do punktu B i na nim się zatrzymać.

    Mam nadzieje, że jasno wyjaśniłem mój problem.
    Wyobrażam sobie to tak, że włączamy jakiś licznik równocześnie z komendą 'start' i w punkcie B krańcówka dając sygnał zapisuje wartość tego licznika do pamięci RAM (bądź eeprom) i po ponownym uruchomieniu podprogramu 'start' robota (nie odłączając zasilania) robot jedzie i zatrzymuje się gdy wartość tego licznika równa się tyle ile wpisaliśmy podczas poprzedniego przejazdu.

    Proszę o jakieś wsparcie odnośnie strony programowej.
    Nie chce gotowców, lecz byście mnie naprowadzili na odpowiednią drogę.
    Pozdrawiam
  • REKLAMA
  • #2 6562538
    pixel7
    Poziom 23  
    Proponuje użyć tablicy. Do kolejnych jej elementów zapisujesz czasy poszczególnych odcinków. Potem porównujesz zawartość tablicy z aktualnymi pomiarami i wiesz czy jest już przeszkoda czy nie.
  • REKLAMA
  • #3 6562651
    Kuczus
    Poziom 19  
    Z tym, że tablice musiałbym wcześniej wpisać w program, a mi chodzi o to, by "uczyć" tego robota danego zadania. Jeśli zmieniłbym odległośc punktu A od B i znowu postawił przeszkode, w którą by robot uderzył, to wtedy ponownie musiałby zapamiętać nową trase. Przy czym jeśli działałbym w obrębie pamięci RAM, kasowałbym ją po prostu resetem zasilania.
  • REKLAMA
  • Pomocny post
    #4 6563325
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #5 6569312
    Kuczus
    Poziom 19  
    Ooo, super,dzięki. Doczytam sobie jeszcze parę spraw i chwytam się za to. W razie jakichś problemów, odezwę się tutaj. Jeszcze raz wielkie dzięki, pozdrawiam.
  • #6 6571248
    marrog
    Poziom 22  
    Witam

    Podepnę się do tematu.
    Pojawił mi się problem dotyczący zapisu do pamięci danej np. typu long lub single. Wykorzystuje pamięć AT24c04. Mam do zbudowania pewien sterownik, parametry ( nastawy) muszę mieć zapisane w zewn. pamięci, wszystko ładnie i pięknie by było gdyby nie fakt, że nastawy są zmiennoprzecinkowe, a nie stałe liczby.
    Myślałem żeby zapisać singla w 4 kolejnych komórkach pamięci np 1-4 czyli 4 bajty, ale nie wiem jak zrobić aby uzyskać ( rozbić liczbę na 4 bajty - no w sumie to ona jest przechowywana na tych 4 bajtach,ale jak ją poprawnie zapisać i później odczytać ).

    Aha jeszcze taka sprawa ze stronicowaniem tej pamięci - nie bardzo wiem o co chodzi, w datascheet jest napisane że ma 32 strony po 16bytes każda. Czytam Helpa do BASCOM-a i tam jest pokazany zapis i odczyt właśnie z 24c04 ale o stronach nic nie ma. Czy do zapisu i odczytu adresy lecą normalnie od 0-511 ?

    Z góry dziękuję za wszelką pomoc.

    -=pozdrawiam=-
REKLAMA