Czemu ATMEGA88 sie wiesza ?

Witam.

Pod AVR Studio 4.14 testuje takie cos :

#include <avr/io.h>

#include <util/delay.h>

void del() { _delay_ms(109); }

int main(void) { DDRB = 0xFF; while(1) { del(); PORTB ^= 1; PORTB ^= 2; del(); PORTB ^= 4; del(); PORTB ^= 8; } return 0; }

No i dziala. Ale juz na przyklad dodanie po linii PORTB ^= 8; jeszcze jednego del(); wiesza w tym miejscu procesor. Jest to w sumie tylko 1 przyklad jak go mozna zawiesic. Nie zmienialem w nim nic oprocz dzielenia zegara przez 8.

Wie ktos co z nim moze byc ? Probowalem w sumie tez zupelnie innego kompilatora i bylo dokladnie to samo. Testuje to na plytce ZL2AVR.

Reply to
bagno
Loading thread data ...

to dziala: while (1) { del(); PORTB ^= 1; PORTB ^= 2; del(); del(); PORTB ^= 4; del(); PORTB ^= 8; }

a to chyba wisi na ostatnim del(): while (1) { del(); PORTB ^= 1; PORTB ^= 2; del(); PORTB ^= 4; del(); PORTB ^= 8; }

to wisi na jedynym del(): while (1) { del(); PORTB ^= 8; }

Reply to
bagno

Probowalem rozne linie roznych portow i zawsze to samo. A programator nie powinen miec wplywu bo sa bufory miedzy nim a komputerem (TTL 244). Chyba nie sprawdzilem co bedzie jak go odepne. Przeszedlem teraz na ATMEGA8 i przez chwile mialem wrazenie, ze sie tak samo miesza. Ale doprowadzilem do porzadku wszystkie ustawienia i wyglada na to, ze na ATMEGA8 dziala. Chociaz na 100% pewny nie jestem czy sie zaraz nie zacznie znowu wieszac.

Zauwazylem, ze najbardziej sie wieszalo przy krotkich czasach opoznien. Jak zmienialem tam na delay_ms(100) to sie raczej nie wieszalo. Pojecia nie mam co z tym jest.

Reply to
bagno

"bagno" snipped-for-privacy@o2.pl schrieb

A co masz podpiete pod te MOSI/PB3? Moze przypadkiem programator, bezposrednio?

hej

Reply to
mw158979

To zalezy czy programator zechce je wylaczyc. Niby powinien, ale najprostszym sposobem na sprawdzenie jest odlaczenie.

Po czym poznajesz, ze sie wiesza?

hej

Reply to
mw158979

Po tym , ze przestaje wykonywac program. Mam podpiete diodki i widze gdzie sie zatrzymuje.

Reply to
bagno

A zagladales w kod ? Moze jakas glupote wygenerowal.

J.

Reply to
J.F.

Kompilujesz na jakim poziomie optymalizacji? -O0 czy -Os? Delay nie moze byc kompilowana z -O0. Pokaz wydenerowany kod w assemblerze.

Reply to
T.M.F.

bagno pisze:

Ten kod nijak się ma do kodu, który pokazałeś w swoim pierwszym poście. A jeśli nawet tak prosty program ci nie działa, to musisz mieć coś zwalone w sprzęcie. Pokaż schemat.

Reply to
Zbych

W dniu 28.06.2009 20:54, bagno pisze:

Ale to co tu wkleiles niczego nie zawiesza - z jakiegos powodu petla sie skasowala i masz naprzemiennie z pelna predkoscia wystawiane na port 0 i

255, a ze tak kilka mln razy na sekunde to migania diody nie widzisz. Pokaz prawdziwy przyklad robiacy problemy zamiast sciemy.

Jak rozumiem na tej plytce zamieniles ATMega8 na ATMega88? Tu masz liste roznic pomiedzy tymi procesorami:

formatting link
ze w AVR Studio wybrales wlasciwy procesor jako target, znaczy ATMega88? Zauwaz, ze roznice sa spore, w tym fuse bitow. Takze nie mozesz po prostu przelozyc procesora, zaladowac ten sam kod i liczyc, ze zadziala.

Reply to
T.M.F.

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.