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



Teraz jest 16 lut 2025, o 18:15


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 2 paź 2016, o 18:00 
Offline
Nowy

Dołączył(a): 18 lip 2016
Posty: 2
Pomógł: 0

Witam.
Zaprojektowałem układ i programowałem atmegę 8, którą wymieniłem na 328 bo pamięci zaczęło brakować.
Po przestudiowaniu datasheeta dla atmegi328p przerobiłem program tak, by wszystko działało.

Jednak niestety, program nie ruszył. Pomyślałem, cóż, zdarza się, i zacząłem eliminować niektóre funkcje - bez efektu, aż doszedłem do wniosku, że należałoby sprawdzić czy w ogóle procek działa.

Napisałem coś, co nie może nie działać:
Kod:

#include <avr/io.h>

int main(void)
{
   DDRB=0x00;
   DDRC=0x00;
   DDRD = 0x01;
   PORTD = 0x01;
   
   while(1);
   return 0;
}


Jakie było moje zdziwienie, gdy w po zaprogramowaniu procesora dioda podłączona do pD.0 miga!!!
Ustaliłem za pomocą oscyloskopu, że po ustawieniu wartości pinu program działa jeszcze około 15ms i restartuje się dzięki czemu jest to miganie.

Tak właściwie to procesor restartuje się po tych 15ms niezależnie od tego co bym umieścił w programie...

Niestety nie mam innej sztuki megi328p. Czy może to być wada tej konkretnej sztuki? Spotkał się ktokolwiek z takim zachowaniem? Dodam, że AVRami bawię się już dosyć długo, elektroniką także...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 paź 2016, o 18:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

hejka,
Mam pytanie, : a co robisz w pętli nieskończonej while(1){}; ?
Bo to co przed nią, jest wykonywane tylko raz.!
DDRB- jako wejścia:
DDRC- jako wejścia:
DDRD- (PD0) jako wyjście, pozostałe jako wejścia.
PORTD- stan wysoki na PD0;

while(1){
......... /*nic. nic. nic.*/
}
return 0;



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 paź 2016, o 18:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

cześć

a nie ustawiłeś przypadkiem bitu odpowiedzialnego za watchdog?

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 paź 2016, o 19:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 144
Pomógł: 2

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

A poźniej przed pętlą while(1):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
:
A później w pętli while:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

To przestał się resetować.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 paź 2016, o 20:42 
Offline
Nowy

Dołączył(a): 18 lip 2016
Posty: 2
Pomógł: 0

lutekT. królu złoty,
Kod:
/* wyłączenie watchdoga (w tych mikrokontrolerach, w których watchdog
             * ma możliwość generowania przerwania pozostaje on też aktywny po
             * resecie) */

Chyba ten komentarz wyczerpuje temat :)
Jednak nie przestudiowałem datasheeta wystarczająco dokładnie, gdzieś umknęło.

Watchdoga oczywiście będę używał więc nie ma potrzeby go wyłączać tylko na czas inicjalizacji wyświetlaczy itp ustawić na 8sekund...


mczarny. byłeś blisko :)
Daro69. pustej pętli while(1) się czasem używa, nawet częściej niż czasem :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 paź 2016, o 20:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

psaawkel napisał(a):
lutekT. królu złoty,"]Kod:
/* wyłączenie watchdoga (w tych mikrokontrolerach, w których watchdog
             * ma możliwość generowania przerwania pozostaje on też aktywny po
             * resecie) */

No dzięki, - :D
dzięki temu i ja coś więcej już wiem. ;)



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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