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



Teraz jest 12 mar 2025, o 23:41


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 21 gru 2014, o 11:59 
Offline
Nowy

Dołączył(a): 20 gru 2014
Posty: 4
Pomógł: 0

Witam posiadam następujący problem gdy zmienię delay na więcej niż 6000ms to dioda będzie się świecić 6s i 6s nie świecić. Poniżej wklejam dwa programy na każdym dzieję się to samo. Nie skorzystałem z SYNTAXA przy wstawiania kod, bo go ciął.
Mikroprocesor to atmega 328p-pu. Proszę o pomoc i wyjaśnienie z góry dziękuję.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2014, o 12:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

O co pytasz konkretnie ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2014, o 12:08 
Offline
Nowy

Dołączył(a): 20 gru 2014
Posty: 4
Pomógł: 0

Jak sprawić, żeby pokonać granice 6s.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2014, o 12:09 
Offline
Użytkownik

Dołączył(a): 30 sie 2014
Posty: 170
Pomógł: 2

Nie może ustawić więcej niż 6s delaya? :D 6s super procka który tylko sobie bezczynnie czeka - tym "problemem" daje Ci chyba znać że nie lubi bezczynnie czekać :P

edit: użyj timera :) Albo jesli masz zewnetrzny RTC to usypiaj procka i niech RTC go wybudza :)

W ostateczności powołaj do zycia zmienna - a delay ustaw na 100ms, użyj funkcji for () -> bluebook :)



Ostatnio edytowano 21 gru 2014, o 12:13 przez doman, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2014, o 12:10 
Offline
Nowy

Dołączył(a): 20 gru 2014
Posty: 4
Pomógł: 0

doman napisał(a):
Nie może ustawić więcej niż 6s delaya? :D 6s super procka który tylko sobie bezczynnie czeka - tym "problemem" daje Ci chyba znać że nie lubi bezczynnie czekać :P

edit: użyj timera :) Albo jesli masz zewnetrzny RTC to usypiaj procka i nich RTC go wybudza :)

Nie tyko czekać, pracować też nie lubi powyżej 6s.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2014, o 12:14 
Offline
Użytkownik

Dołączył(a): 30 sie 2014
Posty: 170
Pomógł: 2

Zapalenie diody i czekanie 6 s to nie praca a czekanie ... :) Procek w tym czasie wisi :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2014, o 12:16 
Offline
Nowy

Dołączył(a): 20 gru 2014
Posty: 4
Pomógł: 0

doman napisał(a):
Zapalenie diody i czekanie 6 s to nie praca a czekanie ... :) Procek w tym czasie wisi :)

Zastosuję się do twoich rad i zobaczę co wyjdzie, dopiero zaczynam zabawę prockami.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2014, o 12:49 
Offline
Użytkownik

Dołączył(a): 30 sie 2014
Posty: 170
Pomógł: 2

na początek zastosuj się do tej :) będzie działać ale ... to też jest kiszka :) for albo while
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Wartości sobie dobierz :) Piszę to bez kompilatora - ale powinno być w miarę ok :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2014, o 12:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 cze 2013
Posty: 988
Lokalizacja: Byram, MS 39272
Pomógł: 55

Biagioone napisał(a):
Nie skorzystałem z SYNTAXA przy wstawiania kod, bo go ciął.


On go nie tnie tylko chowa. Wystarczy nacisnąć przycisk Rozwiń/Pokaż całość (nie pamiętam co tam jest) lub przewijać wewnątrz tego małego okienka z kodem aby móc zobaczyć cały program.

W timerze wystarczy wstawić odpowiednią flage i zliczać sekundy. Wtedy po 6 sekundach robisz co tam chcesz. Przeskoczysz w ten sposób magiczną granice 6 sekund
A tu masz trochę o timerach

http://www.electroschematics.com/9785/a ... it-timers/
http://mirekk36.blogspot.com/2013/06/av ... -tool.html
http://impuls.elektroda.eu/joomla/index ... kalkulator

_________________
Pomysły na podpis - wyślij SMSa +1 769 243 0011



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2014, o 15:38 
Offline
Użytkownik

Dołączył(a): 21 lis 2013
Posty: 56
Pomógł: 0

doman napisał(a):
Zapalenie diody i czekanie 6 s to nie praca a czekanie ... :) Procek w tym czasie wisi :)

Dla uC bezczynność tez jest pracą.

_________________
Jawor4x4



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2014, o 16:33 
Offline
Użytkownik

Dołączył(a): 01 paź 2013
Posty: 305
Lokalizacja: Olsztyn
Zbananowany użytkownik

Pomógł: 20

Witam

Na początek patrząca na twój kod nie widzę ustawiania bitów na pinach , cały czas zmieniasz tylko kierunek na ten sam raz wejściowy raz wyjściowy, DDR służy do ustawiania kierunku portu wejście lub wyjście , jeżeli chcesz już zmieniać wartości na poszczególnych pinach to instrukcja PORT a nie DDR
Potem popatrz co nie wychodzi.
Tak zrób (przykład)
1. Ustalacz kierunek za pomocą np. DDRB = 0xFF; wszystkie piny jako wyjście
2. Ustawiasz pin PB0 na stan wysoki PORTB |=(1<<PB0) i to wszystko

Pozdrawiam

------------------------ [ Dodano po: 1 minucie ]

na szybkiego zmień w pętli DDRB na PORTB

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

i jak chcesz wyzerować bit w Porcie to nie stosuj DDRB=(0<<PB1) ( bo bawisz się całym portem a nie konkretnym pinem) tylko PORTB &= ~(1<<PB1)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2014, o 17:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 wrz 2013
Posty: 162
Lokalizacja: Rbk
Pomógł: 5

Z tego co wiem to dla 1Mhz można ustawić coś koło 750ms delay'a.


Pozdrawiam!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2014, o 17:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Ds3 napisał(a):
Z tego co wiem to dla 1Mhz można ustawić coś koło 750ms delay'a.

A to ciekawe. Bo u mnie na Atmedze32 taktowanej 1MHz dioda miga co 13 sekund przy _delay_ms(15000)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2014, o 17:59 
Offline
Użytkownik

Dołączył(a): 01 paź 2013
Posty: 305
Lokalizacja: Olsztyn
Zbananowany użytkownik

Pomógł: 20

http://www.atmel.com/webdoc/AVRLibcReferenceManual/group__util__delay_1gad22e7a36b80e2f917324dc43a425e9d3.html
Tu jest dokładnie wytłumaczone o co chodzi z delay i etc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2014, o 11:30 
Offline
Użytkownik

Dołączył(a): 05 sie 2014
Posty: 69
Lokalizacja: Kraków
Pomógł: 11

Zrób prostą funkcję. Kiedyś kolega Doman89 mi pomógł w dokładnie takiej samej sprawie.

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

wywołujesz fukcje delay_1_ms(10000) i masz 10s.

Pozdrawiam.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO