Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atxmega, TWI, USART - kłopoty początkującego

Paros 10 Lut 2014 13:35 903 5
  • #1 10 Lut 2014 13:35
    Paros
    Poziom 11  

    Witam.

    Proszę o pomoc w zrozumieniu podstaw.

    Atxmega128 (albo 256 - w tym momencie to nieistotne). Chciałbym przesłać po I2C
    dane z pilota. Posługuję się kodem:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Chciałbym wysłać następujący (przykładowy) ciąg znaków: litera "t" (odbiornik I2C wie, że ma skoczyć do odpowiedniej funkcji, której parametrami będą następne znaki), pierwsza cyfra z pilota, druga cyfra z pilota. Wszystko jednym ciągiem jeśli to możliwe, bo odbiornik czeka na coś takiego:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Jeśli dane do wysłania umieszczam jako zmienna char test[]= "tJAKIS TEKST" to działa. Niestety kiedy próbuję w ten ciąg znaków wpleść zmieniające się dane, mam problemy.

    Zostawmy na razie TWI.

    Kod TMF'a do obsługi IR:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Wysyłając z pilota liczbę jednocyfrową (na przykład 1), w terminalu odbieram:
    49
    10
    13
    116
    49
    10
    13
    gdzie podziały się znaki trzech spacji (32)?

    Jeśli wysyłam liczbę dwucyfrową (12), odbieram:
    49
    50
    10
    13
    116
    49
    50
    32
    32
    32
    63 //?
    255 //?
    10
    13

    Skąd się wzięły znaki oznaczone pytajnikami? Nie mogę tego pojąć, stąd mam sporo problemów z wysyłanie takich danych po I2C...

    0 5
  • #2 10 Lut 2014 14:53
    BlueDraco
    Specjalista - Mikrokontrolery

    I kompilator kupuje tę linijkę?:

    char test_4[]= {'t', bufor[0], bufor[1],' ',' ',' '};

    0
  • #3 10 Lut 2014 15:13
    Paros
    Poziom 11  

    tak - dla pewności zrobiłem przed chwilą Clean i kompilację ponownie...
    A jak powinno być?

    Oczywiście nie domagam się konkretnego kodu, tylko proszę o naprowadzenie na sposób działania. Jeśli nie zmieniać funkcji w odbiorniku (od biedy to też mogę zrobić), to jak w ramach jednej transakcji I2C, wysłać jakąś literkę i zmieniające się dane?

    0
  • #4 10 Lut 2014 15:17
    BlueDraco
    Specjalista - Mikrokontrolery

    Inicjowanie zmiennymi ... wiesz, że to się wykonuje tylko jeden raz (jeśli w ogóle się wykonuje poprawnie).

    0
  • #5 10 Lut 2014 15:42
    Paros
    Poziom 11  

    BlueDraco napisał:
    Inicjowanie zmiennymi ... wiesz, że to się wykonuje tylko jeden raz ...


    Nie wiem, czy dobrze rozumiem. Raz w całym programie? Chyba nie, bo przecież za każdym naciśnięciem klawisza wyświetla co innego. Raz w danym wywołaniu funkcji? Ale chyba o to chodzi....?

    0
  • #6 10 Lut 2014 23:08
    Paros
    Poziom 11  

    a czy tak miałoby sens ?

    Kod: c
    Zaloguj się, aby zobaczyć kod



    teraz wiem, że nie - jest jeszcze gorzej.


    działa dobrze w ten sposób:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    z punktu widzenia "prawdziwego" programowania - czy to jest poprawnie, czy tylko proteza?

    0