ATMEGA 128 problemy z startem softu (odpaleniem diody)
Dawid - 08-09-2006 19:45
ATMEGA 128 problemy z startem softu (odpaleniem diody) Wietc na poczatek pracyz atmega postanowilem napisac prosty program
oswiecajacy diode. Posiadam modul MMmega02 z propoxa. Zasuilam go 4.5 V
(powinno byc 5v ale zasilacz tylko mi daje 4.5 lub 6 ale to pewnie nie
problem. rogramowac sie programuje. Oto kod źródłowy:
#include <avr/io.h>
int main (void)
{
PORTD|=1<<PD7;
}
\i do portu PD7 podlaczam diode a druga czesc diody do masy.
Go GND mam mase do VCc plus czyli 4.5V. Nic pozatym nie mam podlaczone.
programuje atmege AVR studio a wbijam soft ProProgRS.1.1.
Poczytalem ze moze byc problem z Fuses Bist ale nie za bardzo wiem jak to
ustawic probowalem roznych spsobow i nic nie daje dioda nie swieci sie za
cholere. W symulatorze niby dziala.
Dziękuje za pomoc
Zibias - 08-09-2006 19:45
> Wietc na poczatek pracyz atmega postanowilem napisac prosty program
> oswiecajacy diode. Posiadam modul MMmega02 z propoxa. Zasuilam go 4.5 V
> (powinno byc 5v ale zasilacz tylko mi daje 4.5 lub 6 ale to pewnie nie
> problem. rogramowac sie programuje. Oto kod źródłowy:
> #include <avr/io.h>
>
> int main (void)
>
> {
>
> PORTD|=1<<PD7;
> }
>
Brakuje ustawienia kierunku portu D , domyślnie porty ustawiają się ajko
wejście.
DDR = 0b1xxxxxxx (x-do wykorzystania 1-wyjście, 0-wejście)
Pozatym nie powinieneś podłaczać diody bezpośrednio, a przez opornik, np 330
omów
Kolejna uwaga, porty w AVR mają większy prąd gdy zwierają do masy czyli
gdy podają stan logiczny 0. Lepiej jest diodę (z opornikiem) podpiąć do
zasilania
a następnie do portu. Gdy wpiszesz 0 do portu to się zapali, a gdy 1 to
zgaśnie
Dawid - 08-09-2006 19:45
Brakuje ustawienia kierunku portu D , domyślnie porty ustawiają się ajko
> wejście.
>
> DDR = 0b1xxxxxxx (x-do wykorzystania 1-wyjście, 0-wejście)
>
nie pomoglo. W czym szukac dalej?
Zibias - 08-09-2006 20:45
Użytkownik "Dawid" <safelock@skasuj.cdrinfo.pl> napisał w wiadomości
news:eds8in$6bp$1@atlantis.news.tpi.pl...
> Brakuje ustawienia kierunku portu D , domyślnie porty ustawiają się ajko
>> wejście.
>>
>> DDR = 0b1xxxxxxx (x-do wykorzystania 1-wyjście, 0-wejście)
>>
> nie pomoglo. W czym szukac dalej?
>
Trochę szybko pisałem, powinno być na przykłąd tak:
int i,j =0;
DDRD = 0b10000000;
while(1)
{
PORTD &= ~(1<<PD7); //ustawia 0 na porcie D7 czyli zapala leda
for(i=0;i<10000;i++) //petla czasowa
{
for(j=0;j<1000;j++);
}
PORTD |= (1<<PD7); //ustawia 1 na porcie D7 gasi leda
for(i=0;i<10000;i++) //petla czasowa
{
for(j=0;j<1000;j++);
}
}
Ten program na pewno działa (miga ledem), wrzuciłem na atmega16 z kwarcem
8MHz
Sprawdź czy leda podłaczyłes pw prawidłową sronę, (dołacz go do masy,
powinien świecić)
Michał - 08-09-2006 20:45
Użytkownik "Dawid" <safelock@skasuj.cdrinfo.pl> napisał w wiadomości
news:eds78d$183$1@atlantis.news.tpi.pl...
> Wietc na poczatek pracyz atmega postanowilem napisac prosty program
> oswiecajacy diode. Posiadam modul MMmega02 z propoxa. Zasuilam go 4.5 V
> (powinno byc 5v ale zasilacz tylko mi daje 4.5 lub 6 ale to pewnie nie
> problem. rogramowac sie programuje. Oto kod źródłowy:
> #include <avr/io.h>
>
> int main (void)
>
> {
>
> PORTD|=1<<PD7;
> }
>
> \i do portu PD7 podlaczam diode a druga czesc diody do masy.
> Go GND mam mase do VCc plus czyli 4.5V. Nic pozatym nie mam podlaczone.
> programuje atmege AVR studio a wbijam soft ProProgRS.1.1.
>
> Poczytalem ze moze byc problem z Fuses Bist ale nie za bardzo wiem jak to
> ustawic probowalem roznych spsobow i nic nie daje dioda nie swieci sie za
> cholere. W symulatorze niby dziala.
> Dziękuje za pomoc
Sprobuj tak:
#include <avr/io.h>
//#define sbi(port, bit) (port) |= (1 << (bit))
//#define cbi(port, bit) (port) &= (1 << (bit))
//jesli nie sa zdefiniowane w sfr_deffs.h
//poda na wyjscie PD7 stan wysoki czyli zapali diode podpieta
// do masy przez rezystror np 470R
int main (void)
{
sbi(DDRD,7);
sbi(PORTD,7);
for(;;){};
}
Pzdr
Michal
EM - 08-09-2006 20:45
> oswiecajacy diode. Posiadam modul MMmega02 z propoxa. Zasuilam go 4.5 V
> (powinno byc 5v ale zasilacz tylko mi daje 4.5 lub 6 ale to pewnie nie
Co to za zasilacz?
Jakoś nie wydaje mi się by był stabilizowany.
ATmega może mieć włączony wewnętrzny układ resetujący, gdy spadnie napięcie
i nie będzie działać przy zbyt niskim lub pulsującym napięciu.
Oczywiście kod też musi być poprawny...
--
Pozdr
EM
Gejzero - 09-09-2006 09:45
Użytkownik "EM" <edim123@poczta.onet.pl> napisał w wiadomości
news:edsd38$j33$1@news.onet.pl...
>> oswiecajacy diode. Posiadam modul MMmega02 z propoxa. Zasuilam go 4.5 V
>> (powinno byc 5v ale zasilacz tylko mi daje 4.5 lub 6 ale to pewnie nie
>
> Co to za zasilacz?
> Jakoś nie wydaje mi się by był stabilizowany.
> ATmega może mieć włączony wewnętrzny układ resetujący, gdy spadnie
> napięcie
> i nie będzie działać przy zbyt niskim lub pulsującym napięciu.
> Oczywiście kod też musi być poprawny...
> --
> Pozdr
> EM
>
Jak masz oryginalny procek ze sklepu to wyłącz kompatybilność z ATMEGA 103.
Gejzero.
Dawid - 09-09-2006 13:45
> Co to za zasilacz?
zasilacz impulsowy na mierniku dokladnie 5.03V max moze dac do 1.5A
> Jakoś nie wydaje mi się by był stabilizowany.
> ATmega może mieć włączony wewnętrzny układ resetujący, gdy spadnie
> napięcie
> i nie będzie działać przy zbyt niskim lub pulsującym napięciu.
> Oczywiście kod też musi być poprawny...
\
Próbowalme wielu kodow ale dioda niechce si zaswiecic. Miernikiem
sprawdzalem to stan jest na 1.8V. Ale tak na kazdym porcie i dioda nawet nie
mrygnie:/
Dawid - 10-09-2006 14:45
>
> int i,j =0;
>
> DDRD = 0b10000000;
>
> while(1)
> {
> PORTD &= ~(1<<PD7); //ustawia 0 na porcie D7 czyli zapala leda
chyba klega pokickał cos. Na odwrót. Tutaj gaśnie.
Marcin Stanisz - 10-09-2006 16:45
Dnia Sun, 10 Sep 2006 13:05:30 +0200, Dawid napisał(a):
>>
>> int i,j =0;
>>
>> DDRD = 0b10000000;
>>
>> while(1)
>> {
>> PORTD &= ~(1<<PD7); //ustawia 0 na porcie D7 czyli zapala leda
>
> chyba klega pokickał cos. Na odwrót. Tutaj gaśnie.
Zależy jak podłączysz. Jeśli anodą (trudne słowo ;)) do +5V (przez
rezystor), a katodą (jeszcze trudniejsze słowo!) do portu, to będzie tak,
jak napisał Zibias.
Pozdrawiam
Marcin Stanisz
--
"A lie will go round the world before the truth has got its boots on"
Terry Pratchett, "Truth"
zanotowane.pldoc.pisz.plpdf.pisz.plkonstruktor.keep.pl