Witam
Jest to mój pierwszy post na tym forum, więc chciałbym się ze wszystkimi przywitać

. Słyszałem że panuje tutaj miła atmosfera, a akurat tak się złożyło że mam pewien problem - czemu by nie spróbować?

Zawsze to jakaś alternatywa dla elektrody.
Piszę sobie mały program wykorzystujący EEPROM, USART i kilka innych rzeczy. Zasadniczo mój problem polega na ostrzeżeniach jakie wypluwa mi kompilator. Wiem że Pan Mirek prezentował kiedyś pełną obsługę komunikatów ASCII przez USART, jednak dla mnie póki co jest to zbyt "ciężkie" rozwiązanie, i chciałbym się ograniczyć do niezbędnego minimum. Potrzebuję wysłać z komputera krótkie komunikaty zawierające łącznie 11 bajtów. Pierwsze 2 z nich odpowiadają za proste sprawdzenie czy coś się nie pomieszało

, następne 8 to dane, które zostaną zapisane pod odpowiednim indeksem tabeli (indeks określony przez ostatni bajt komunikatu). Próbuję zapisać te 8 bajtów do jednej zmiennej 64-bitowej, po prostu po kolei "przyklejać" je co raz dalej. Takie coś wyskrobałem:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Do wstawiania kodu używamy znacznika 'syntax' zamiast znacznika 'code' - to tak na przyszłość...Przeczytałem, że dla większych liczb trzeba ręcznie rzutować typ, bo kompilator domyślnie rzutuje na int (
http://atnel.pl/domyslna-promocja-do-typu-int.html), jednak mimo rzutowania na uint64_t dostaję ostrzeżenia o przesuwaniu "poza zakres" zmiennej. Przykładowo, wysyłając z komputera następujący ciąg bajtów:
13, 10, 255, 148, 160, 7, 74, 88, 177, 140
W pamięci EEPROM (tam przechowuję wartości 64-bitowe, czyli wyniki ze "sklejania") zapisuje się coś takiego: 0x8CB1FFFFFFFFFFFF, a do komputera wracają takie bajty: 00 00 00 00 00 00 00 8C.
Czy ktokolwiek wie jak można to rozwiązać? Domyślam się że mam gdzieś błąd w sklejaniu (a także rozcinaniu, bo wartości odczytane z komputera i EEPROMu różnią się), ale nie mogłem nic znaleźć na ten temat...
Pozdrawiam serdecznie!
mopsiok