ATNEL tech-forum
https://forum.atnel.pl/

Kod się nie kompiluje
https://forum.atnel.pl/topic21208.html
Strona 1 z 2

Autor:  Ada57 [ 31 sie 2018, o 20:22 ]
Tytuł:  Kod się nie kompiluje

Witam
Proszę o podpowiedź co w tym kodzie na Attiny 2313, trzeba poprawić, aby się skompilował.
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Pozdrawiam

Adela

Autor:  mirekk36 [ 31 sie 2018, o 20:24 ]
Tytuł:  Re: Kod się nie kompiluje

Uprzejmie proszę sprecyzować i PORZĄDNIE zadać pytanie - czyli np podać komunikaty błędów a nie liczyć na to, że ktoś będzie zgadywał ... no jak ... TAK można zadawać pytanie i nie napisać o co chodzi ?

Autor:  Ada57 [ 31 sie 2018, o 20:31 ]
Tytuł:  Re: Kod się nie kompiluje

Załączyłam obrazek jaki wyświetlił kompilator ale się nie pokazał.
Wyświetla error w 8 linii ,1 columnie.
Error 1 expected identifier or '(' before 'while',line 8,column 1

Autor:  Piotrek_P [ 31 sie 2018, o 21:39 ]
Tytuł:  Re: Kod się nie kompiluje

A gdzie w Twoim kodzie jest blok głównej funkcji?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


chyba że coś przed nami ukrywasz :shock:

Autor:  Ada57 [ 31 sie 2018, o 21:49 ]
Tytuł:  Re: Kod się nie kompiluje

Pobrałam go z tej strony.
Teraz patrzę , są dalsze części.

http://codeandlife.com/tags/attiny2313/

https://www.google.com/search?client=fi ... wcEeHw3w08

Autor:  Piotrek_P [ 31 sie 2018, o 22:11 ]
Tytuł:  Re: Kod się nie kompiluje

Napisz może co chcesz zrobić lub jaki efekt chcesz uzyskać, to łatwiej będzie pomóc, bo debatowanie nad wycinkami jakichś niekompletnych kodów z internetu nie ma sensu.

Autor:  Ada57 [ 31 sie 2018, o 22:16 ]
Tytuł:  Re: Kod się nie kompiluje

Chcę aby dwie diody na Attiny 2313A ,lub innym uC,na wyjściu 15 i 16 (PB3 i PB4 migały na przemian co 64 sekund ,duty 50%.
Stan niski 64 sek,stan wysoki 64 sek.,lub zbliżony do 64 sek.
Najlepiej bez delay,sprzętowo tj.PWM,CTC., nie programowo.
Tak aby duty 50% było jak najdokładniejsze.
Co lepiej dać delay,czy sleep,jaka jest między nimi róznica?.
Licznik jest chyba lepszy dla dokładności duty 50% ,jak delay.

Autor:  michu [ 1 wrz 2018, o 13:51 ]
Tytuł:  Re: Kod się nie kompiluje

Widzę ze dalej męczymy ten sam temat :D

proszę link:
https://forbot.pl/blog/kurs-stm32-7-lic ... pwm-id8459

teraz się chyba już rozjaśni :lol:

------------------------ [ Dodano po: 4 minutach ]

To nie jest gotowiec ale pewien sposób podejścia do zadania :D

Autor:  Ada57 [ 5 wrz 2018, o 14:09 ]
Tytuł:  Re: Kod się nie kompiluje

Jak zmienić ,if (Sekundy == 60),na if(Mikrosekundy==60).
Napisałam, if(Mikrosekundy==60),ale się nie skompilowało,
if (Sekundy == 60) się skompilowało w kodzie.

Autor:  Marhef [ 5 wrz 2018, o 14:51 ]
Tytuł:  Re: Kod się nie kompiluje

Koleżanko, ale Ty orientujesz się chociaż trochę w tym całym programowaniu? Czy próbujesz na siłę coś napisać łącząc znalezione w internetach kawałki kodów?

1) masz zadeklarowaną zmienną Mikrosekundy?
2) masz skonfigurowany timer w ten sposób, żeby odliczał mikrosekundy? Z tego, co się orientuję, trudne będzie to zadanie na AVR. Ale może co 10 mikrosekund się uda?
A w ogóle, w którym kodzie są te sekundy i mikrosekundy?

Autor:  Ada57 [ 5 wrz 2018, o 15:37 ]
Tytuł:  Re: Kod się nie kompiluje

Ściągam z netu kody i próbuję je ulepszyć ,aby miały jak najbardziej zbliżone do idealnego wypełnienie 50%,tj.duty Cycle 50%.
W tym kodzie chce zamienić 64 sekund w linijce nr.14,na 64000000 us mikrosekund.

http://diycenter.acid19.linuxpl.com/pri ... &item_id=3

https://www.avrfreaks.net/forum/tut-c-n ... s?page=all



Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Autor:  mirekk36 [ 5 wrz 2018, o 17:20 ]
Tytuł:  Re: Kod się nie kompiluje

Ada57 napisał(a):
Ściągam z netu kody i próbuję je ulepszyć

Tak nieśmiało zapytam, a może lepiej nauczyć się takich podstaw programowania i samemu napisać kod ? Zapewniam, że to podstawy podstaw w C i mikroprocków AVR - więc nawet dużo się uczyć nie trzeba. Bo widać, że

Ada57 napisał(a):
i próbuję je ulepszyć


... że to coś nie idzie za dobrze bez znajomości podstaw

Autor:  Marhef [ 5 wrz 2018, o 21:29 ]
Tytuł:  Re: Kod się nie kompiluje

Ale po co zamieniać 60 sekund na 60 000 000 mikrosekund, jeżeli to jest to samo?
Zresztą, jakiego typu musi być zmienna, żeby pomieściła taką wartość? Zadeklarowałaś zmienną Sekundy typu char, czyli... zmienną, która może przyjąć wartości od 0 do 255. Trochę mało.
Z drugiej strony, co się tak uparłaś na te mikrosekundy? Jeżeli najważniejsze dla Ciebie jest to, żeby czas stanu niskiego i wysokiego były równe, to co za różnica, czy będzie to 59,9999999/59,9999999 czy 60,0000001/60,0000001?

Autor:  Ada57 [ 5 wrz 2018, o 21:37 ]
Tytuł:  Re: Kod się nie kompiluje

W telewizorach LCD, i nie tylko ,dokładne 50% ma znaczenie.

Autor:  Marhef [ 5 wrz 2018, o 21:42 ]
Tytuł:  Re: Kod się nie kompiluje

W obydwu podanych przeze mnie przypadkach jest dokładnie 50%.

Autor:  Ada57 [ 5 wrz 2018, o 22:11 ]
Tytuł:  Re: Kod się nie kompiluje

Chodzi o rozdzielczość,jest inna w sekundach a inna w mikrosekundach.
To po co się wprowadza ms,us,ns,a nie pozostaje się tylko przy sekundach.
Jak dokładniej podzieli się 1 metr na pół,jak jest w cm,czy w mm.

Autor:  Marhef [ 6 wrz 2018, o 07:25 ]
Tytuł:  Re: Kod się nie kompiluje

... to może prościej:
procesor wykonuje pętlę główną. I dodatkowo odlicza czas (w przerwaniu). Pętla główna jest baaardzo krótka, więc można przyjąć, że sprawdzenie zawartości rejestru timera i porównanie ilości sekund odbywa się co stały czas.
I teraz pytanie: czy ma dla Ciebie znaczenie, że czas trwania stanu wysokiego ma 60,000001 sekundy, i czas stanu niskiego ma też 60,000001 sekundy, jeżeli te czasy są sobie równe?
Jakiej dokładności oczekujesz? Femtosekund?
I w przypadku odliczania czasu w sekundach i w mikrosekundach będzie różnica. Kilku taktów procesora. Rzędu mikrosekund (w zależności od kwarcu).
Kwarc też nie daje pełnej gwarancji, że będzie podawał idealnie stabilną częstotliwość w czasie. Więc tu również mogą pojawić się lekkie odchyłki od wybranego przez Ciebie czasu.

Autor:  Ada57 [ 6 wrz 2018, o 09:25 ]
Tytuł:  Re: Kod się nie kompiluje

Jestem ciekawa czy da się w tym kodzie zrobić w us,a co mi szkodzi dać te us jeśli to możliwe.
Poza tym jak dam w us to będę miała większy zakres częstotliwości od kHz do ?,i nauczę się ,dowiem, się czegoś nowego.
W delay mogę dać w us ,ale jest mało dokładne Duty 50% .

Autor:  Marhef [ 6 wrz 2018, o 10:12 ]
Tytuł:  Re: Kod się nie kompiluje

Możesz spróbować. Nie napiszę dokładnie, co jak przestawić, bo teraz nie mam dostępu do dokumentacji do tego procka. Ale musisz:
1) zmienić preskaler timera, tak, żeby przerwanie było wywoływane co wybrany przez Ciebie czas (ale wątpię, czy uda się co 1 mikrosekundę) - do sprawdzenia w dokumentacji
2) zadeklarować zmienną mikrosekundy. Jako typ musisz wybrać taki, który pomieści wartość, do której chcesz zliczać.
3) na podanym przez Ciebie programie będzie wtedy działało.

Ponawiam pytanie: jaką dokładność chcesz uzyskać? Konkretnie

Autor:  Ada57 [ 6 wrz 2018, o 10:33 ]
Tytuł:  Re: Kod się nie kompiluje

Marhew napisał:
"Ponawiam pytanie: jaką dokładność chcesz uzyskać? Konkretnie"

Chcę uzyskać dokładność jaka jest najbardziej możliwa do uzyskania.

Autor:  micky [ 6 wrz 2018, o 11:04 ]
Tytuł:  Re: Kod się nie kompiluje

To sugeruję użyć generatora stabilizowanego temperaturowo.

Autor:  Ada57 [ 6 wrz 2018, o 13:08 ]
Tytuł:  Re: Kod się nie kompiluje

micky napisał:
"To sugeruję użyć generatora stabilizowanego temperaturowo."

Na Allegro znalazłam kwarc 32768 Hz z 1 ppm.

https://allegro.pl/listing?string=kwarc ... i-1-1-0806

i z 5 ppm

https://allegro.pl/listing?string=kwarc ... i-1-1-0806

Autor:  tonygryps [ 6 wrz 2018, o 14:53 ]
Tytuł:  Re: Kod się nie kompiluje

no i co on Ci da?

Autor:  Ada57 [ 12 wrz 2018, o 13:30 ]
Tytuł:  Re: Kod się nie kompiluje

Czy można w tym kodzie dać zamiast ms,us,i jak to zrobić.
Jak oceniacie ten kod pod względem dokładności wypełnienia duty 50%,z kwarcem i bez.
Czy , unsigned int licznik1;, jest we właściwych miejscach,zostawić go czy usunąć,jeśli usunąć to które,a które zostawić.
Jak ewentualnie można ulepszyć ten kod,chodzi o zwiększenie dokładności wypełnienia 50%/50%.

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Autor:  tonygryps [ 12 wrz 2018, o 18:33 ]
Tytuł:  Re: Kod się nie kompiluje

Jak by to, Ty coś rozumiesz z tego kodu czy to jakiś gotowiec z internetu ?

------------------------ [ Dodano po: 23 minutach ]

Moim zdaniem droga którą obrałaś to droga donikąd naprawdę warto zainwestować w zrozumienie tematu a nie na ślepo brnąć licząc na jakiś gotowiec bo co jak trzeba będzie coś zmienić. Poza tym to przypomina spacer przez pole minowe bez wykrywacza min .
P.S .Na jakiej podstawie Ty uważasz że zmiany stanu pinów odbywają się w mili sekundach?

Autor:  micky [ 12 wrz 2018, o 18:57 ]
Tytuł:  Re: Kod się nie kompiluje

Żeby zrobić ‘idealnie’ dokładny generator używa się wzorca atomowego. Poczytaj o DCF 77 - można go wykorzystać w Twoim projekcie. W skrócie w ciagu jednej minuty generowanych jest 59 impulsów i sa one najidealniejsze z możliwych. Przy Twoich potrzebach w zupełności to wystarczy (pomijam fakt, że moim zdaniem przesadzasz z ta potrzebna dokładnościa). Popatrz za dekoderami tego sygnału. Wystarczy zliczać impulsy i odpowiednio zmieniać Twoje porty sterujace. Dostałaś wędkę, czas w końcu iść na ryby :)

Autor:  Ada57 [ 12 wrz 2018, o 19:35 ]
Tytuł:  Re: Kod się nie kompiluje

Dzięki informacji micky znalazłam jak podłaczyć Atmegę do DCF,link poniżej.
Zadałam te pytanie powyżej, aby z odpowiedzi czegoś się nauczyć dowiedzieć.
Chcę dokładnego 50% aby się przy okazji nauczyć,poznać,i chce to zrobić choćby sztuki dla sztuki.
Czy nie lepszy będzie moduł czasu GPS jako zegar generujący przerwania.

https://www.elektroda.pl/rtvforum/topic3279257.html

Autor:  Ada57 [ 13 wrz 2018, o 08:36 ]
Tytuł:  Re: Kod się nie kompiluje

Czy w ostatnim kodzie który zamieściłam , nie da się go przerobić tak aby można było ustawić w na us ,mikrosekundy ?
Potrzebne mi są te us mikrosekundy, aby poszerzyć zakres częstotliwości.

Autor:  tonygryps [ 13 wrz 2018, o 09:46 ]
Tytuł:  Re: Kod się nie kompiluje

Ponawiam pytanie skąd wniosek że on działa w mili sekundach mierzyłaś to sprawdzałaś oscyloskopem skąd wiesz w jakim czasie zmienia się wartość zmiennej licznik .
a co do kodu to moim zdaniem jest on po prostu słaby mówiąc bardzo pobłażliwie (oczywiście w odniesieniu do tego co chcesz osiągnąć).
Cytuj:
Zadałam te pytanie powyżej, aby z odpowiedzi czegoś się nauczyć dowiedzieć.


Twoja nauka przypomina dziecko które znalazło niewybuch i chce go rozebrać żeby dostać się do materiału wybuchowego .
Oczywiście nie zniechęcam do eksperymentowania ale jednak najpierw to podstawowa wiedza by się przydała .

A co do kodu wynika z niego że nie wiesz co to jest zmienna i jak się ją tworzy i jakie są typy zmiennych w avr-gcc przykładem tego jest zmienna licznik1 którą powołujesz do życia 4 razy dwa razy jako globalna i dwa jako automatyczną bez inicjalizacji i na dodatek raz w pętli głównej i jak by tego było mało do niczego jej nie wykorzystujesz ponadto na pewno nie uzyskasz tam sygnału o wypełnieniu 50% zadziała to tak pin PB3 ma stan wysoki dopóki zmienna licznik nie osiągnie 64000 po czym spełnia się warunek w pierwszym ifie i zmienia stan na pinie PB3 na niski po kilku taktach zegarowych kwarca (w zależności od ilości komend asemblerowych) wykonuje się drugi if który ponownie ustawia pin PB3 na stan wysoki . więc jak sama widzisz tu nie ma mowy o wypełnieniu 50% a zmiany stanu pinu są zależne od ilości rozkazów asemblerowych które to mikrokontroler wykonuje z szybkością zależną od taktowania i ile dany rozkaz potrzebuje taktów zegara . .

Autor:  Harry [ 13 wrz 2018, o 09:51 ]
Tytuł:  Re: Kod się nie kompiluje

Sorry że się wtrące, ale czy ty budujesz laser do operacji mózgu czy może planujesz kontrolę rozszczepienia uranu w elektrowni atomowej?
Sygnał zegarowy to nie jest jedyna rzecz która wpływa na czas wykonania - sama instrukcja również potrzebuje czasu. Do tego weź jeszcze pod uwagę opóźnienia na ścieżkach płytki (pooglądaj płytę główną kompa w okolicach pamięci/mostków), oraz użytych częściach.
Aha, sygnał GPS nie działa wewnątrz budynków.

Wysłane ze srajfona

Strona 1 z 2 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/