Kilka dni temu pisałem o moich problemach z RAMem w #avr #atmega i zgodnie z sugestią postanowiłem poprzenosić literały w moim kodzie do codeflash'a stosując PROGMEM. Napotkałem jednak na pewien problem (picrel). O ile stosuję podejście z trzymaniem wszystkich stringów w całościowej tablicy string_table, to wszystko mi działa

(char*)pgmreadword(&string_table[2])

ale jak już spróbuję odczytać string z pominięciem tej tablicy,
mirkogreg - Kilka dni temu pisałem o moich problemach z RAMem w #avr #atmega i zgodni...

źródło: comment_1599303234SIqhCYPnnwRQ9YUCXuTqok.jpg

Pobierz
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@mirkogreg: boś zakręcił za bardzo funkcje z _P spodziewają się dostać wskaźnik do progmem. Czyli u ciebie strcpy_P powinno dostać od razu tx_buff_ovf albo tam inny. Progmem to taki magiczny zwierz że jest jakaś zagwozdka z przechowywaniem wskaźników do niego normalnie. Jest jakiś dodatkowy bit który robi z normalnego wskaźnika far pointer i już nie pamiętam jak to w avr_gcc szło wymusić. Sorry że piszę tak zawile ale ostatni raz
  • Odpowiedz
@keton22: Faktyczny fakt :D Aż mi głupio, że sam do tego nie doszedłem, myślałem, że próbowałem już wszystkiego o to takie oczywiste :O I nawet makro PSTR mi działa, pięknie dziękuję Pan @keton22 ( ͡º ͜ʖ͡º)
  • Odpowiedz
Witam chcę się nauczyć #rasberrypi mam kilka lat praktyki z #atmega #drony tak że #elektronika mi nie jest obca zupełnie.

Będę robił projekt na dwóch monitorach 7” z rasberry 4 4gb.

Co polecacie kupić do nauki i jakie materiały (najlepiej kursy video za darmo) żeby się naumieć? #kiciochpyta
suqmadiq2ama - Witam chcę się nauczyć #rasberrypi mam kilka lat praktyki z #atmega #d...

źródło: comment_1599301160vEA4SOp71n7CNMO1UQHfra.jpg

Pobierz
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

via Wykop Mobilny (Android)
  • 0
@suqmadiq2ama: praktyka z atmega jest średnio przydatna, bo w raspberry nie będziesz robił w baremetal tylko na linuxie. To jest zupełnie inny poziom abstrakcji. Możesz korzystać ze wszystkiego co daje kernel.
Do nauki to najlepiej kupić raspberry i się nim bawić, bo ciężko coś więcej doradzić nie znając projektu.
  • Odpowiedz
#programowanie #arduino #avr #atmega

Siema, mam problem ze wgraniem programu na AtMega8 przez USBasp i Arduino IDE. Jestem kompletnym noobem a potrzebuję to zrobić. Log krzyczy że nie są "zadeklarowane piny", gdzie to zrobić?

Please help
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Piszę program na #atmega8 AVRdude zapisuje mi ~5100 bajtów danych i wszystko działa. Gdy program rozrośnie się do ~5300 bajtów zaczynają się jaja - freezy w funkcjach które wcześniej działały, nie wyświetlające się logi na UART. Podejrzewam, że brakuje mi już pamięci, ale spodziewałem się tego przy ~8000b. Czy dobrze rozumiem, że ~5100b zajmuje kod programu, a reszta to stos programu na który zaczynam się wpieprzać z kodem?
#programowanie
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@mirkogreg: AVRy to architektura harwardzka - program jest gdzie indziej (w pamięci flash), a dane (statyczne, stos i sterta) gdzie indziej (w RAMie). Jeżeli udało się zapisać program do flasha, to znaczy że się mieści. Podczas działania programu zawartość flasha się nie zmienia (no, chyba że się naprawdę postarasz, ale to mało prawdopodobne sądząc po pytaniu).

Natomiast możliwe, że brakuje ci RAMu, w takim sensie, że stos i sterta nie
  • Odpowiedz
@Anon95: Jeżeli dobrze pamiętam, to mam dwa USBASP, przy tych samych sterownikach i wersjach softu w Windowsie jeden rzuca tym komunikatem ("cannot set sck period..."), a drugi nie. Programują tak samo dobrze.
  • Odpowiedz
Cześć Mirki,
czy pisząc programy na mikrokontrolery piszecie testy?
Mówię oczywiście o pisaniu programów nie dla zabawy, a gdzieś gdzie mają pełnić swoją funkcję niezawodnie.

#elektronika #stm32 #atmega
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@marylin17: ja piszę bardzo rzadko. Wiem, że to nie jest dobre ale mówię jak jest :) Z mikrokontrolerami sprawa testowania jest złożona. Przede wszystkim jest się bardzo zależnym od czynników zewnętrznych, od samego sprzętu, od innych układów i urządzeń. Test musiałby je wszystkie symulować. Czasem więc piszę sobie różne symulatory, ale nie wszystko da się zasymulować. Byłoby to zbyt kosztowne pod względem czasochłonności. Oczywiście pisanie testu pozwala uniknąć części błędów
  • Odpowiedz
@zetisdead: Udało mi się w końcu to rozgryźć. Po przejrzeniu przebiegów na analizatorze okazało się, że źle zachowywały się wyjścia, przez breaka w złym miejscu. To nie rozwiązało sprawy do końca, bo musiałem zmienić trochę zmienić maski rejestru PIND. Trochę się tu inspirowałem kodem znalezionym w książce i czemu to działa, a poprzednie nie działało to już nie wiem. xD Następne biorę się za ogarnięcie podpinania wyświetlaczy LCD, żeby mieć
  • Odpowiedz
@Pan_Sarna: pamiętaj, że nie możesz czytać stanu wierszy zaraz po wymuszeniu stanu kolumn (jeden NOP to może być zbyt mało), bo napięcia muszą się ustalić, zwłaszcza, ze nie masz porządnych podciągów, tylko słabe pull-upy.
  • Odpowiedz
czy w Atmel 7 Studio da się symulować ADC? Chodzi mi o możliwość zadawania jakiejkolwiek wartości na wejściu analogowym, tylko po to by sprawdzić czy ADC przekonwertuje i np czy przerwanie zostanie wygenerowane. Bez żadnego hardware, sam Atmel 7. Kiedyś chyba było ale albo usunęli albo nie mogę znaleźć...

#elektronika #atmega #mikrokontrolery #pytaniedoeksperta #elektroda
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

via Wykop Mobilny (Android)
  • 0
@animuss: była taka opcja że się pisało skrypt który zadawał wartość rejestrów, ale dawno już tego nie robiłem.
  • Odpowiedz
@a231: no rejestrów to nie ma problemu. Nawet nie musi być symulacji live dla mnie. Przykładowo by wystarczyło: zatrzymam uruchomienie programu breakpointem i chciałbym wtedy móc zadać jakąś wartość na wejście ADC.
  • Odpowiedz
Mirki, nie wiem czy to mądre pytanie czy głupie, ale nie potrafię zrozumieć zachowania pinów wejściowych na Atmedze.
Z tego co się orientuję to są dwie możliwe konfiguracje w przypadku podłączania przycisków - podciąganie rezystorem do masy lub do napięcia. Dlaczego gdy nacisnę przy podciąganiu do napięcia, to na pinie zrobi się zero i prąd przestanie płynąć przez mikrokontroler, i będzie płynąć tylko do masy a w sytuacji przeciwnej prąd jednak popłynie
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Pan_Sarna: w sumie @passage lepiej wytłumaczył. Mając podciągnięcie rezystorem dajmy na to 10k do stanu wysokiego, a w momencie wciśnięcia przycisku 0R do niskiego, rezystancja wejścia mikrokontrolera rzędu 100k?(nie pamietam dokladnie warotości) nie gra żadnej roli.
  • Odpowiedz
Jako że mam wolne to pomyślałem że czas zamówić pierwsze arduino i moje pytanie czy
Ten zestaw będzie ok? https://allegro.pl/oferta/zestaw-startowy-easy-arduino-uno-r3-starter-kit-8484429561?utm_medium=app_share&utm_source=facebook

Chce kupić zestaw w okolicach tej ceny najlepiej żeby miał wyświetlacz a nie chce mi się składać samemu takiego zestawu bo
Po 1 nie wiem co tam dodać
Po 2 nie chce mi się czekać na oddzielne paczki
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#arduino #atmega #elektronika #automatyka #programowanie
Mirki mam ostatnio pomysł w głowie. Trochę z lenistwa trochę z naddatku czasu ale także z ułatwienia sobie życia. Mam w domu ogrzewanie z kotła i ręcznie włączaną pompę obiegową do co. Pomyślałem że może zamiast pilnować i pamiętać żeby ją wyłączać, można by było zautomatyzować to poprzez jakiś sterownik z czujnikiem temperatury.
Czyli np pompa się
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@AVATARKUBA122: ??
Sa gotowe zestawy za grosze z czujnikiem temperatury. Taki czujnik albo specjalnym rozdzielaczem wpinasz w uklad albo przyklejasz wzdluz rurki, kabelki podlaczasz w odpowiednie miejsca i koniec roboty
  • Odpowiedz
Przed myślinikiem masz model, po myślniku obudowę. Nie chcę brzmieć jak z elektrody, ale nie ma czegoś takiego jak ATmega328P-U ¯\_(ツ)_/¯

Chodzi Ci o różnicę między ATmega328 a ATmega328P czy o różnicę między obudowami, np. -AU a -PU ?
  • Odpowiedz
Hej #elektronika #avr #atmega - posiadam płytkę z procesorem ATmega1284p i zbrickowałem ją prawdopodobnie przez złe ustawienie fuse bits. płyta nie odpowiada na programatory, nie daje żadnej sygnatury po podłęczeniu do arduino chociaż sama działa. Jest opcja żeby w ogóle to jakoś naprawić? W temacie tak nisko poziomowej elektroniki jestem zielony. W zdjęciu płyta, o którą chodzi.
bc04 - Hej #elektronika #avr #atmega - posiadam płytkę z procesorem ATmega1284p i zbr...

źródło: comment_5pxIcplttqFG3qku6ZefbaO6Oxw6i5gz.jpg

Pobierz
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

via Wykop Mobilny (Android)
  • 0
@bc04: jak masz dodatkowe arduino to szukaj w googlu schematu programatora hv, ja tak uratowałem 3 zbrickowane atmegi, których nie dało się ruszyć programatorem isp.
  • Odpowiedz
Hej jak macie rozwiązane takie sytuacje gdy mikrokontroler wykonuje jakieś zadanie, które trwa np. 30 sekund, przez co główna pętla programu jest zablokowana przez to właśnie zadanie, a chcielibyście np. zmienić godzinę na wyświetlaczu? Myślałem nad implementacją jakiegoś prostego schedulera, który "żonglowałby procesami" dając, złudzenie pracy równoległej. Coś podobnego jak np. w FreeRtos.

http://www.freertos.org/implementation/a00016.html

#programowanie #elektronika #avr #atmega
  • 30
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@pepepanpatryk: Z programowania AVR pamiętam, że nie program nie powinien długo być w przerwaniu. Co oznacza długo zależy od kontekstu.
Zrób tę aktualizację wyświetlacza w przerwaniu i zobacz jak działa.
  • Odpowiedz
@pepepanpatryk: w przerwanie wrzucasz co najwyżej flagę że należy zaktualizować wyświetlacz. Nie można aktualizować żadnego LCD w przerwaniu. Możesz to zrobić za to inaczej, jeżeli np uC steruje przez 30s silniczkiem to to jest kupa czasu, żeby pętla main mogła obrócić. Musisz zrobić prostą maszynę stanów, np silnik ma wyknać 5 kroków w przód, jeden w tył i koniec. To robisz listę kroków, wykonujesz krok, przechodzisz np do aktualizacji wyświetlacza,
  • Odpowiedz