Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 12 kwi 2025, o 10:43


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 54 ]  Przejdź na stronę 1, 2  Następna strona
    Autor Wiadomość
    PostNapisane: 21 cze 2018, o 07:10 
    Offline
    Użytkownik

    Dołączył(a): 31 maja 2018
    Posty: 70
    Zbananowany użytkownik

    Pomógł: 0

    Witam
    Proszę o korekcje niżej zamieszczonego programu.
    Chciałam go skompilować programem MkClipse ,ale na 11 linii pokazał błąd,w AVR Studio 5.1 beż pokazuje błąd i nie kompiluje.
    11 linia to:float f = 0.5f * (1.0f + sin(2.0f * PI * (mod/(float)len) - PI * 0.5f));
    Może są jeszcze inne błędy które uniemożliwiają kompilacje.
    Z góry dziękuję za porady.
    Pozdrawiam
    Adela
    oto kod :


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



    Ostatnio edytowano 21 cze 2018, o 09:38 przez Ada57, łącznie edytowano 6 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 cze 2018, o 07:28 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 sty 2016
    Posty: 1168
    Lokalizacja: Kraków
    Pomógł: 93

    A jaki ten błąd wyświetla?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 cze 2018, o 07:32 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 02 mar 2014
    Posty: 150
    Lokalizacja: Staszów
    Pomógł: 12

    Cześć,
    Zaraz cię zacny kolega Jaglarz przećwiczy (i słusznie) za to, że kod programu nie jest między odpowiednimi znacznikami i wskaże to:
    http://forum.atnel.pl/topic7402.html
    Ja nie mam uprawnień do bacika, jako że jeszcze jestem początkujący (w wiedzy).

    Co do meritum.
    Czy wiersz 11 wskazuje na jakąś iterację, bo po lewej i prawej stronie ta sama zmienna "f"
    No wiem też, co to jest "0.5f" czy "2.0f". Czasem nie "0.5*f" itd.


    Autor postu otrzymał pochwałę

    _________________
    Ad augusta per angusta



    Ostatnio edytowano 21 cze 2018, o 09:51 przez chi.cygni, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 cze 2018, o 07:36 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27372
    Lokalizacja: Szczecin
    Pomógł: 1043

    chi.cygni napisał(a):
    Zaraz cię zacny kolega Jaglarz przećwiczy (i słusznie) za to, że kod programu nie jest między odpowiednimi znacznikami i wskaże to:
    topic7402.html


    POTWIERDZAM i proszę o edycję i poprawę formatowania kodu jeśli wątek ma pozostać na forum

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 cze 2018, o 09:01 
    Offline
    Użytkownik

    Dołączył(a): 31 maja 2018
    Posty: 70
    Zbananowany użytkownik

    Pomógł: 0

    Witam
    Jetem początkująca , pierwszy raz na forum,nie wiem co zrobić, aby dać poprawny format kodu,jak się dowiem to zmienię,próbuję zmienić według wskazówek podanych wyżej,na razie nie wychodzi.
    Kod pobrałam z zagranicznej strony ,i dałam do kompilacji ,ale się nie skompilował.
    Kompilator wyświetla taki błąd :WARNING --> main.c --> Line: 11,i nie kompiluje.
    No udało się się z tym znacznikiem
    Adela



    Ostatnio edytowano 21 cze 2018, o 09:29 przez Ada57, łącznie edytowano 3 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 cze 2018, o 09:18 
    Offline
    Użytkownik

    Dołączył(a): 13 paź 2015
    Posty: 303
    Lokalizacja: Rybnik
    Pomógł: 10

    Kolega chi.cygni wyżej podał linka - wejdź i poczytaj.

    A co do kodu to miałem kiedyś problem z funkcją sin() tylko nie pamiętam jaki, ale nie widzę w twoim kodzie dołączonej biblioteki:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Jeżeli dalej będzie błąd to nie wiem jak w MkClipse, ale w Eclipsie jeśli masz to spróbuj wejść w:
    "Project / Properties / C/C++ Build / Settings / AVR C Linker"
    następnie w polu "Command line pattern:" wpisz:
    ${COMMAND} -lc -lm ${FLAGS} ${OUTPUT_FLAG}${OUTPUT_PREFIX}${OUTPUT} ${INPUTS} -lc

    Oczywiście skopiuj i zapisz sobie gdzieś w notatniku to co teraz tam masz jakby coś poszło nie tak.
    Mi to kiedyś pomogło.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 cze 2018, o 09:48 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 02 mar 2014
    Posty: 150
    Lokalizacja: Staszów
    Pomógł: 12

    Kolega Mirek, kiedyś tam raczył napisać na swoim blogu coś na temat stosowania liczb float
    Jest to tutaj (ustawienia w Eclipse przy kompilacji):
    http://mirekk36.blogspot.com/2013/04/eclipse-nie-dziaa-mi-printf-dla-float.html

    Może to o to chodzi?


    Autor postu otrzymał pochwałę

    _________________
    Ad augusta per angusta



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 cze 2018, o 10:12 
    Offline
    Użytkownik

    Dołączył(a): 22 gru 2013
    Posty: 296
    Lokalizacja: Szczecin
    Pomógł: 47

    To jest kawałek kodu z Arduino, nie będzie się kompilować bezpośrednio w czystym C.
    Trzeba użyć IDE Arduino.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 cze 2018, o 11:04 
    Offline
    Użytkownik

    Dołączył(a): 31 maja 2018
    Posty: 70
    Zbananowany użytkownik

    Pomógł: 0

    W sieci znalazłam Eclipse C++ IDE for Arduino, do pobrania,czy przy pomocy tego można skompilować w/w program?,czy jeszcze potrzebna jest płytka Arduio?.
    Eclipse nie mam i nie używałam.
    Zauważyłam,że MkCKLIPSE którego używam , nie kompiluje niektórych programów które kompiluje AVR Studio 5.1.
    A tak się cieszyłam,że znalazłam mały program MkCLIPSE,i będę mogła porzucić wielkie AVR Studio 5.1

    https://marketplace.eclipse.org/content ... de-arduino



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 cze 2018, o 11:44 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    Stwórz sobie tabele takiego sinusa na kompie, stablicuj. Używanie float na 8 bitach bez sprżetowego FPU to jest jakaś maskra...


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 cze 2018, o 11:56 
    Offline
    Użytkownik

    Dołączył(a): 22 gru 2013
    Posty: 296
    Lokalizacja: Szczecin
    Pomógł: 47

    Kompiluje, kompilator.
    A tak naprawdę zespół programów składających się na tzw. toolchain.
    W Eclipse, AVR Studio ( 5.x jest b. przestarzałe), Arduino IDE, MkClipse, toolchain jest taki sam tzn. gcc dla AVR ( w różnych wersjach).
    Powyższe programy to "tylko" b. zaawansowane edytory tekstowe.
    EClipse zajmie powyżej 1,5GB -uniwersalne środowisko można programować w dziesiątkach języków.
    Arduino 500 MB - zwykle tylko programy Arduino ( ale różny sprzęt AVR, ARM-ATmel-a, STM32, ESP itd)
    Atmel Studio 1,2GB- tylko AVR, ARM-ATmel-a , ale wbudowany symulator
    do tego toolchain AVR Atmela zajmuje ok 150MB,
    Są jeszcze inne IDE ( starsze, lub mniej popularne), można też kompilować bez IDE ( make).


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 cze 2018, o 12:22 
    Offline
    Użytkownik

    Dołączył(a): 31 maja 2018
    Posty: 70
    Zbananowany użytkownik

    Pomógł: 0

    Dziękuję za odpowiedzi.
    Potrzebuję tego sinusa aby migać 2 diodami led ,nie podłączonymi do masy.
    Zmiana stanu wysokiego na niski z jednego pinu X na pin Y co 6 sekund.
    Zależy mi na dokładnym wypełnieniu duty50% ,bez delay.
    Co będzie lepsze ,sinus czy prostokąt do tego celu.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 cze 2018, o 12:37 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    Cytuj:
    Dziękuję za odpowiedzi.
    Potrzebuję tego sinusa aby migać 2 diodami led ,nie podłączonymi do masy.
    Zmiana stanu wysokiego na niski z jednego pinu X na pin Y co 6 sekund.
    Zależy mi na dokładnym wypełnieniu duty50% ,bez delay.
    Co będzie lepsze sinus czy prostokąt do tego celu.


    matko... to aż sinusa do tego potrzeba :lol: ?

    1. Weź dwa ledy z rezystorami. Podłącz tak:
    Obrazek

    2. Odpal w kodzie timer programowy co będzie tykał co sekunde (na przykłąd może być 1us ale to bez sensu)

    3. w obsłudze timera zliczaj do 6 (chyba że masz inną podstawę czasu to wtedy do tylu żeby miec 6 sekund) jakąś zmienną. Jeżeli zmienna osiągnie wartość 6 jeden pin wyzeruj, drugi ustaw czyli z XORuj.

    i tyle

    ------------------------ [ Dodano po: 2 minutach ]

    Ada57 napisał(a):
    Co będzie lepsze ,sinus czy prostokąt do tego celu.


    Już pomijam fakt że na wyjściu procka nie masz żadnego sinusa :P tylko PWM o zmiennym wypełnieniu który też jest prostokątem :) funkcja analogWrite powinna nazywać się PWM_Write czy coś bo jej nazwa jest myląca. Nie mniej na kniektórych platformach arduino rzeczywiście na wyjściu masz analoowy sygnal z DACa


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 cze 2018, o 07:05 
    Offline
    Użytkownik

    Dołączył(a): 31 maja 2018
    Posty: 70
    Zbananowany użytkownik

    Pomógł: 0

    Nie jestem na tyle dobra aby napisać kod według informacji Nefarious19.
    Migaczy mam kilka,na tranzystorach,scalakach i na Atmega 8,Attiny 13A,są z delay.
    Ale chcę się dowiedzieć nauczyć się coś innego.
    Jak podają, zmieszczony 1 program jest na Attiny 85.

    https://idyl.io/arduino/sine-pulse-led-pwm-trick/

    https://github.com/tonyp7/idylio/blob/m ... ve_led.ino



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 cze 2018, o 07:15 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    Dobra, to zacznijmy od taki na jakim hardwarze chcesz to odpalić? Mam na myśli mikrokontroler i jego otoczenie.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 cze 2018, o 07:19 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27372
    Lokalizacja: Szczecin
    Pomógł: 1043

    Ada57 napisał(a):
    Ale chcę się dowiedzieć nauczyć się coś innego.

    Dlatego polecam zostawić tricki arduino i strzępy jakichś informacji z internetu a za to zajrzeć do książki (Bluebooka)

    http://atnel.pl/mikrokontrolery-avr-jezyk-c.html

    gdzie krok po kroku można nie tylko nauczyć się programować w języku C ale też dowiedzieć się n/t wielu technik programowania w tym także jak płynnie sterować jasnością DIOD czy też mocą innych odbiorników za pomocą PWM ... i dużo dużo innych


    Autor postu otrzymał pochwałę

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 cze 2018, o 08:33 
    Offline
    Użytkownik

    Dołączył(a): 31 maja 2018
    Posty: 70
    Zbananowany użytkownik

    Pomógł: 0

    "Dobra, to zacznijmy od taki na jakim hardwarze chcesz to odpalić? Mam na myśli mikrokontroler i jego otoczenie."
    Na takim jaki się najlepiej nadaje,nie wiem,może Atmega 8A,Attiny 2313A,Attiny 13A,te mikrokontrolery mam.



    Ostatnio edytowano 25 cze 2018, o 10:00 przez Ada57, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 cze 2018, o 08:56 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 sty 2016
    Posty: 1168
    Lokalizacja: Kraków
    Pomógł: 93

    A możesz napisać, tylko tak dokładnie, co ten program ma robić? Ile diod, jak podłączone (najlepiej ze schematem), jak mają migać. Na razie podajesz tak szczątkowe informacje, że nawet w mojej szklanej kuli nie widzę tego projektu.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 cze 2018, o 09:52 
    Offline
    Użytkownik

    Dołączył(a): 31 maja 2018
    Posty: 70
    Zbananowany użytkownik

    Pomógł: 0

    To ma być elektrolizer, 2 elektrody, najdokładniejsze do osiągnięcia wypełnienie duty50%,o okresie 120 sekund,stan niski 60 sekund,stan wysoki 60 sekund.
    Jak jest mało dokładne 50%,np z delay,to po miesiącu i dalej pojawiają się zanieczyszczenia .
    Znalazłam pomocny artykuł o dokładności z millis ,chciałam go przerobić na, Atmega8A,Attiny2313A, Attiny 13A,ale nie wiem jak.

    https://forbot.pl/blog/kurs-arduino-ii- ... is-id18418



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 cze 2018, o 19:28 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2014
    Posty: 1033
    Lokalizacja: Trójmiasto
    Pomógł: 190

    Procek attiny13A odpada bo nie można do niego podłączyć kwarca - a bez niego można zapomnieć o dokładności czasowej.
    Poniżej masz kod który będzie generował przebieg prostokątny o czasie 60s/60s, i bez problemu się skompiluje w MkClipse.
    Procesor attiny2313A taktowany z kwarca 8MHz, w fusbitach należy wybrać taktowanie z kwarca i włączyć CKDIV 8 - tak by zegar maksymalnie obniżyć co by mniej trzeba było działać w programie. Ewentualnie można dać wolniejszy kwarc (wtedy trzeba przeliczyć wszystko na nowo) - ja posiadałem najmniejszy 8M więc cały program jest pod niego.

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


    Trochę wyjaśnień odnośnie działania:
    Całość opiera się o sprzętowy timer0, skonfigurowany w tryb CTC. Przerwanie jest wywoływane co:
    Częstotliwość taktowania wynosi 1MHz pomimo kwarcu 8MHz, ponieważ w fusbitach włączamy CKDIV_8 - czyli sprzętowy dzielnik zegara przez 8. Aby wgrać do procka taktowanego w ten sposób program, należy spowolnić prędkość programatora albo zworką SLOW_SCK, albo programowo ustawić SLOW_SCK, ewentualnie wgrać program przy taktowaniu 8MHz z kwarca a na koniec włączyć CKDIV_8
    F_CPU/preskaler/(porównanie+1) = 1000000/64/(124+1) = 125Hz, czyli co 0,008s.
    Jako że czasy trwania poszczególnych stanów mają wynosić 60s w przerwaniu umieszczamy licznik programowy który będzie zliczał 60/0,008 = 7500, czyli co każde zliczone 7500 przerwań stan na pinie wyjściowym się zmieni na przeciwny, a licznik wyzerowany.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 cze 2018, o 19:51 
    Offline
    Użytkownik

    Dołączył(a): 31 maja 2018
    Posty: 70
    Zbananowany użytkownik

    Pomógł: 0

    Dziękuję bardzo xentis,które 2 piny są wyjściami.
    Znalazłam w sieci kod na Atmega 8,z milis,proszę daj poprawiony kod, aby miał wyjście PB4 i PB5,lub inne 2 dogodne wyjścia,czy PB0 i PB1 może być?chyba nie,aby miał wypełnienie 60 sek. na 60 sekund.

    http://www.count-zero.ru/2015/delay/



    Ostatnio edytowano 25 cze 2018, o 10:02 przez Ada57, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 cze 2018, o 19:59 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2014
    Posty: 1033
    Lokalizacja: Trójmiasto
    Pomógł: 190

    Ok ale nie do końca rozumiem co masz na myśli 2 piny... Na drugim pinie ma być stan odwrotny do pierwszego?


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 cze 2018, o 20:04 
    Offline
    Użytkownik

    Dołączył(a): 31 maja 2018
    Posty: 70
    Zbananowany użytkownik

    Pomógł: 0

    Dokładnie tak, do jakich 2 pinów podłączyć 2 elektrody w Twoim 1 kodzie ?.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 cze 2018, o 20:11 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2014
    Posty: 1033
    Lokalizacja: Trójmiasto
    Pomógł: 190

    W pierwszym kodzie był tylko jeden pin PB0.
    Tu masz z dwoma:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Sygnał będzie na pinach PB0 i PB1 (start programu to PB0 wysoki, PB1 niski a później co 60s się będą zmieniać), piny możesz zmieniać sobie w sekcji oznaczonej na górze programu, jedyny warunek to oba muszą należeć do jednego portu.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 cze 2018, o 21:32 
    Offline
    Użytkownik

    Dołączył(a): 31 maja 2018
    Posty: 70
    Zbananowany użytkownik

    Pomógł: 0

    Dziękuje bardzo.
    A jak zmieniać wypełnienia w kodzie,np na 70 sekund,itd.
    U mnie program się skompilował na MkCLIPSE.



    Ostatnio edytowano 22 cze 2018, o 22:45 przez Ada57, łącznie edytowano 2 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 cze 2018, o 22:08 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2014
    Posty: 1033
    Lokalizacja: Trójmiasto
    Pomógł: 190

    Ale przy tym samym okresie czyli 70s/50s czy 70s/70s?


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 cze 2018, o 22:39 
    Offline
    Użytkownik

    Dołączył(a): 31 maja 2018
    Posty: 70
    Zbananowany użytkownik

    Pomógł: 0

    Wypełnienie 50%,np stan niski 70 sek,stan wysoki 70 sekund,zawsze duty 50 %.
    W którym miejscu sama będę mogła zmieniać.70/70 ,90/90,itd.
    Wgrałam 2 kod do Attiny 2313A,działa !!!!!!!,wielkie dziękuję Xentis.
    Kodu nr.2,PB0-PB1,AVR Studio 5.1 skompilował, MkCLIPSE nie skompilował,dlaczego ?,
    Jak zrobić aby 2 kod działał na Atmega 8A ?.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 cze 2018, o 10:50 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2014
    Posty: 1033
    Lokalizacja: Trójmiasto
    Pomógł: 190

    Ada57 napisał(a):
    Kodu nr.2,PB0-PB1 ,u mnie MkCLIPSE nie skompilował,dlaczego ?
    Trudno mi tu coś powiedzieć, musiałbym zobaczyć całą zawartość konsoli z MkClipse po nieudanej kompilacji.
    Ada57 napisał(a):
    Jak zrobić aby 2 kod działał na Atmega 8A ?.
    Wypełnienie 50%,np stan niski 70 sek,stan wysoki 70 sekund .Zawsze duty 50 %.W którym miejscu sama będę mogła zmieniać.70/70 ,90/90,itd.


    Tu masz zmieniony kod który będzie działał zarówno na ATtiny2313A jak i Atmega8A. Ten drugi nie posiada fusabitu CKDIV_8, ma również okrojony timer0. Kod tak zmieniłem by przy kompilacji dla ATtiny2313A działał na timerze0, a dla ATmegi8A na timerze2 (timer0 w ATmedze8A nie posiada trybu CTC na którym bazuje kod). Jako że ATmega8A nie ma podziału przez 8, i by kod działał poprawnie na obu tych prockach zupełnie zrezygnowałem z załączania tej opcji w ATtiny2313A tak więc teraz kod jest dla czystego 8MHz z kwarca, BEZ PODZIAŁU PRZEZ 8 (czyli dla ATTiny2313A NIE załączamy fusa CKDIV_8).

    Co do zmiany wypełnienia w sekcji konfiguracyjnej umieszczonej na początku kodu dodałem opcję wpisania czasu półokresu w sekundach, po wpisaniu wartości i puszczeniu kompilacji całe obliczenia zrobi preprocesor przed kompilacją.

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


    Autor postu otrzymał pochwałę


    Ostatnio edytowano 23 cze 2018, o 16:57 przez xentis, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 cze 2018, o 11:27 
    Offline
    Użytkownik

    Dołączył(a): 31 maja 2018
    Posty: 70
    Zbananowany użytkownik

    Pomógł: 0

    Wielkie dzięki.
    Czy da się przerobić program z millis na rosyjskiej stronie ,aby działąl na Atmega8A Attiny 2313A,z wyjściem na 2 piny,60/60, 50% duty,i miał millis.A może potrafisz zrobić to lepiej ale z millis.



    Ostatnio edytowano 23 cze 2018, o 17:31 przez Ada57, łącznie edytowano 2 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 cze 2018, o 13:41 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2014
    Posty: 1033
    Lokalizacja: Trójmiasto
    Pomógł: 190

    Tyle że ten kod z rosyjskiej strony nie odmierza dokładnie czasu:
    taktowanie 16000000Hz, preskaler 64, licznik zlicza do przepełnienia czyli 256.
    Tak więc przerwanie jest wywoływane 16000000/64/256=976,5625 czyli T = 1/f = 1/976,5625 = 0,001024s
    Później jest to porównywane ze zmienna period tak by uzyskać 1s tak więc owa sekunda będzie miała w rzeczywistości 1,024s niby niewiele więcej ale już przy okresie 120s jakie potrzebujesz to 1,024 * 120 = 122,88 czyli już prawie 3 s odchyłki.
    Jeżeli taka dokładność Ci odpowiada to niewiele trzeba zmieniać ten kod by spełniał twoje założenia:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Sygnał będzie na pinach PB4 i PB5, i powinien się skompilować zarówno dla ATmegi8A jak i ATtiny2313A - tylko kwarc musi być 16MHz.

    Nie za bardzo rozumiem czemu się uparłaś na te milis. To że w moim programie nie ma zmiennej tak nazwanej nie oznacza że liczy on mniej dokładnie, a w tym przypadku jest wręcz przeciwnie - kod z rosyjskiej strony zawiera przybliżenia co powoduje odchyłkę w czasie odmierzania, w programie który napisałem ustawienia są tak dobrane, aby nie było żadnych przybliżeń, a dokładność zliczania jest uzależniona tylko od zastosowanego kwarca.
    No chyba że potrzebujesz mieć możliwość zejścia z okresem trwania poniżej 1s, ale nic takiego wcześniej nie pisałaś więc się nie rozdrabniałem na milis.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 54 ]  Przejdź na stronę 1, 2  Następna strona

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO