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



Teraz jest 19 kwi 2024, o 07:17


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 28 ] 
Autor Wiadomość
 Tytuł: PWM w attiny 13
PostNapisane: 24 lis 2011, o 16:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 paź 2011
Posty: 307
Lokalizacja: Lbt
Pomógł: 8

Witam
Napisałem kod do programowego sterowania pwm'em dla attiny13 ale niestety zajmuje on ponad 400% pamięci procesora.

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



Pomijając czy jest on poprawny dlaczego zajmuje on aż tyle pamięci? Co zrobić, żeby zmieścić go na tym procku?
Domyślam się, że chodzi tu o konfigurację ponieważ program z ćwiczenia 4 zajmuje 510 bytes a steruje większą ilością diod.

log
Device: attiny13

Program: 4632 bytes (452.3% Full)
(.text + .data + .bootloader)

Data: 264 bytes (412.5% Full)
(.data + .bss + .noinit)


Finished building: sizedummy

_________________
Ujemna delta to dopiero początek zabawy...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lis 2011, o 19:00 
Offline
Moderator
Avatar użytkownika

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

Sprawa jest banalnie prosta ;) .... po prostu NIGDY ale to NIGDY nie używaj funkcji typu _delay_ms() albo _delay_us() z argumentami w postaci zmiennych ;) ..... tam można wstawiać TYLKO stałe dosłowne.


zresztą żeby sprawdzić czy dobrze mówię, wstaw w nawiasach tych funkcji tak dla testu na razie jakieś byle wartości np

Kod:
_delay_us(5);


i skompiluj całość- wtedy zobacz ile zajmie to po kompilacji - a potem pogłówkuj jak napisać ten sam program żeby pozbyć się zmiennych z argumentów do tych funkcji i wszystko skończy się szczęśliwie ;)


A na zakończenie podpowiedź - najlepiej to użyj do takiego PWM'a programowego Timera sprzętowego - tak jak pokazuję to w swojej książce, masz tam przecież żywe przykłady. A czy zastosujesz je na Atmega32 czy na ATtiny13 to jeden pies ;)

_________________
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: 24 lis 2011, o 19:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 paź 2011
Posty: 307
Lokalizacja: Lbt
Pomógł: 8

Nawet po podmianie na konkretne wartości
Program: 3998 bytes (390.4% Full)
(.text + .data + .bootloader)
Chyba mam jakiś problem w konfiguracji ponieważ jak wkleję ten kod do pierwszego programu z diodą led wychodzi mi
Program: 84 bytes (8.2% Full)
(.text + .data + .bootloader)
Czyli jest w porządku.

Znowu mam problem ze zmuszeniem programatora do współpracy z eclipse
Launching C:\WinAVR-20100110\bin\avrdude -pt13 -cavrispv2 -Pusb -Uflash:w:01_DiodaLED.hex:a
Output:
avrdude was compiled without usb support.
avrdude: ser_send(): write error: sorry no info avail
avrdude finished

_________________
Ujemna delta to dopiero początek zabawy...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lis 2011, o 21:23 
Offline
Moderator
Avatar użytkownika

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

Lepiej pokaż jak wygląda ten twój program po podmianie na konkretne wartości bo ja ci mówię, a wiem co mówię, że to niemożliwe żeby się źle kompilował po zmianie. Więc ewidentnie coś źle robisz.

I najpierw rozwiąż do końca jeden problem a potem dopiero myśl o drugim, a nie tak jak teraz, że już sobie w głowie wytłumaczyłeś że masz chyba jakiś problem z konfiguracją (błędne podejście) ... i dawaj pytanie o kolejną dziwną rzecz....

tylko spokój nas uratuje ;)

zatem pokaż ten poprawiony kod najpierw.

_________________
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: 24 lis 2011, o 21:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 paź 2011
Posty: 307
Lokalizacja: Lbt
Pomógł: 8

Kod który próbuje wgrać na 100% działa.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Oczywiście jak już kiedyś program skompilowany i wgrany przez burnomat działa.
(wcześniej udało mi się skonfigurować eclipse i wszystko działało, niestety miałem czyszczenie dysku)
Jutro jeszcze się pomęczę.

A program wyczyściłem do minimum-wiem że nie będzie działał tak jak trzeba
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Ujemna delta to dopiero początek zabawy...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lis 2011, o 21:58 
Offline
Użytkownik

Dołączył(a): 05 lis 2011
Posty: 81
Pomógł: 0

u mnie po kompilacji 1 kod zajmuje 100 bytes (1.2% Full) a 2 kod 88 bytes (1.1% Full)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lis 2011, o 22:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 paź 2011
Posty: 307
Lokalizacja: Lbt
Pomógł: 8

Widać mam jakiś problem z eclipse. Jutro zainstaluje od nowa i zrobię nowy workspace, może coś pomoże.

_________________
Ujemna delta to dopiero początek zabawy...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lis 2011, o 22:06 
Offline
Użytkownik

Dołączył(a): 05 lis 2011
Posty: 81
Pomógł: 0

jak chcesz to mogę skompilowac i wyslac ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lis 2011, o 22:44 
Offline
Moderator
Avatar użytkownika

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

Mnie to nie wygląda absolutnie na problem z Eclipse, dlatego zasugeruję zrobienie opcji CLEAN i BUILD. Bo zdaje się, że właśnie zabrakło CLEAN. Ten kod powinien zajmować tyle mniej więcej ile pisze kolega Michal_PB1.

Proszę więc spróbować i dać znać czy pomogło? ok?

_________________
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: 25 lis 2011, o 21:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

no bardzo dziwnie koledze wychodzi , też się podłaczam wykonaj clean przed kompilacją , wyłacz opcje auto bulid czasem denerwuje

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2011, o 17:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 paź 2011
Posty: 307
Lokalizacja: Lbt
Pomógł: 8

A cóż to za opcja?
Udało mi się wszystko naprawić. Włączyłem sobie filmy z płyty i po kolei zacząłem robić tak jak jest to tam omawiane. Problem tkwił w tym, że trzeba było ręcznie zainstalować avrdude, ponieważ to instalowane wraz z winavr nie działało.
Męczę się z sprzętowym PWM
Czy dobrze ustawiłem rejestry?

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


Kombinuje na 1000 sposobów i wraz nie wychodzi:/
Procesor zasilany 3,3V z programatora, taktowany 8mhz, dioda podłączona do portu PB0, bez rezystora, katodą do portu świeci światłem ciągłym

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

_________________
Ujemna delta to dopiero początek zabawy...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2011, o 20:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 paź 2011
Posty: 307
Lokalizacja: Lbt
Pomógł: 8

Witam po krótkiej przerwie.

Mam problem ponieważ w datasheecie jest tak, że raz jest COM00 a raz COM0A0 i nie wiem już jak to ustawić. Doszedłem do czegoś takiego

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

_________________
Ujemna delta to dopiero początek zabawy...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2011, o 20:39 
Offline
Moderator
Avatar użytkownika

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

No, tylko ja nie wiem czego dotyczy ten fragment kodu. Oderwany od rzeczywistości.

Widać w nim tylko jeden logiczny błąd bo TCCR0B = (1<CS00); nie oznacza, że preskaler jest wyłączony, tylko że właśnie jest włączony i następuje dzielenie przez 1 (a to jest różnica)

Poza tym jak wyżej, nie wiem co ma wspólnego ten kod wobec powyższego starego postu w którym napisałeś że niny się wszystko udało - a teraz co?

Panowie, proszę o jaśniejsze zdawanie pytań ok? ;)

_________________
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: 14 gru 2011, o 12:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 paź 2011
Posty: 307
Lokalizacja: Lbt
Pomógł: 8

Z tym, że działa to chodziło mi o eclipse(wszystko hula jak trzeba).
Według mnie ten kod już powinien działać, ale dalej coś nie chce.
Nie mam pojęcia co jest źle.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Ujemna delta to dopiero początek zabawy...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2011, o 15:47 
Offline
Moderator
Avatar użytkownika

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

Tak na pierwszy rzut oka to po co ustawiasz bity w TIMSK ??? skoro nie korzystasz z tych przerwań ? hmm ?

Poza tym powinien już zdaje się działać .

_________________
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: 8 sty 2012, o 20:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 paź 2011
Posty: 307
Lokalizacja: Lbt
Pomógł: 8

No i działa. Źle podłączyłem diodę :/
Katoda była podłączona do uc, a anoda przez rezystor do... no właśnie do niczego :/
Jakby ktoś chciał użyć programu to wystarczy usunąć linijkę
TIMSK0 = (1<<OCIE0A)|(1<<OCIE0B);

Pozdrawiam i dziękuję za pomoc
Paweł

_________________
Ujemna delta to dopiero początek zabawy...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 cze 2017, o 21:22 
Offline
Nowy

Dołączył(a): 05 lis 2014
Posty: 22
Lokalizacja: Częstochowa
Pomógł: 0

Witam , jaka była częstotliwość taktowania w tym programie ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 cze 2017, o 23:11 
Offline
Nowy

Dołączył(a): 05 lis 2014
Posty: 22
Lokalizacja: Częstochowa
Pomógł: 0

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


witam , chialem wgrać ten kod na attiny13 , problem w tym ,ze dioda swieci z pełną mocą a w zalozeniu ma swiecic z 50% mocy . czy ten kod jest poprawny ?



Ostatnio edytowano 30 cze 2017, o 08:47 przez Patryk2347, łącznie edytowano 4 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 cze 2017, o 06:12 
Offline
Użytkownik

Dołączył(a): 08 wrz 2012
Posty: 505
Pomógł: 6

przestaw wpisywanie wartości do rejestru do pętli while

Kod:
while(1)
{
     OCR0A=127;       
}



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 cze 2017, o 07:40 
Offline
Nowy

Dołączył(a): 05 lis 2014
Posty: 22
Lokalizacja: Częstochowa
Pomógł: 0

Po przeniesieniu instrukcji do pętli while nadal bez zmian , dioda świeci z pełna mocą, może mam złe taktowanie procesora ? ustawione jest na 8MHz



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 cze 2017, o 09:28 
Offline
Użytkownik

Dołączył(a): 08 wrz 2012
Posty: 505
Pomógł: 6

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


Powyższa konfiguracja działa na ATiny13
a taktowanie przestaw na 9600000 bo ATiny13 nie ma 8MHz, ale to nie ma znaczenia w twoim problemie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 cze 2017, o 09:35 
Offline
Nowy

Dołączył(a): 05 lis 2014
Posty: 22
Lokalizacja: Częstochowa
Pomógł: 0

jak mozna ustawic taktowanie , bo nie mam pełnej wersji MkvAvrCalculator ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 cze 2017, o 10:38 
Offline
Nowy

Dołączył(a): 05 lis 2014
Posty: 22
Lokalizacja: Częstochowa
Pomógł: 0

Rozumiem ,ze muszę ustawic odpowiednie FUSEBITY ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 cze 2017, o 11:41 
Offline
Użytkownik

Dołączył(a): 08 wrz 2012
Posty: 505
Pomógł: 6

Przede wszystkim w "MCU Clock Frequency" w Eclipsie ustaw 9600000 Hz w Fusebit-ach też musisz przestawić bo "fabryczne" Atiny13 mają ustawiony podział przez 8. Musisz ustawić Fusebit-y tak:
low 7A
high FF

ale jak naspałem wcześniej nawet jeśli masz "fabrycznie" ustawione taktowanie z podziałem przez 8 nie ma to znaczenia w twoim przypadku. Będzie działało wprawdzie nie poprawnie, ale będzie działać.

Problem jeśli nie jest sprzętowy jest w ustawieniach Timera.
Wpisz sobie na próbę to co podałem, powinno być ok również bez przestawiania Fusebit-ów



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 cze 2017, o 12:00 
Offline
Nowy

Dołączył(a): 05 lis 2014
Posty: 22
Lokalizacja: Częstochowa
Pomógł: 0

działa, tylko że 255 to zgaszenie diody a 0 to pełna moc .

dzięki wielkie za pomoc ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 cze 2017, o 12:17 
Offline
Użytkownik

Dołączył(a): 08 wrz 2012
Posty: 505
Pomógł: 6

To zamień na
Kod:
TCCR0A |= (1<<COM0A1);

i będzie odwrotnie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 cze 2017, o 12:18 
Offline
Moderator
Avatar użytkownika

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

Patryk2347 napisał(a):
działa, tylko że 255 to zgaszenie diody a 0 to pełna moc .

To podłącz że pan odwrotnie diodę LED do procka i będzie odwrotnie ;) albo zmień bity COMxA aby zmienić fazę sygnału PWM - też uzyskasz pożądany efekt

_________________
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: 30 cze 2017, o 12:28 
Offline
Nowy

Dołączył(a): 05 lis 2014
Posty: 22
Lokalizacja: Częstochowa
Pomógł: 0

Wszytko już działa tak jak chciałem .
Dziękuję



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: 28 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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