Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Problem z uruchomieniem ATmega8 - Proszę o pomoc.

Awatar użytkownika
Paweł.W.
-
-
Posty:33
Rejestracja:31 sty 2007, o 14:26
Lokalizacja:Andrychów
Problem z uruchomieniem ATmega8 - Proszę o pomoc.

Postautor: Paweł.W. » 31 sty 2007, o 14:48

Próbowałem uruchomić mikrokontroler ATmega8-16PU, załadowałem program do pamięci mikrokontrolera i ustawiłem Fuse Bits i Lock Bits. Raczej prawidłowo, ale mikrokontroler nie ruszył, jego wyjścia są w stanie wysokiej impedancji. Czym moze być to jeszcze spowodowane? A może jest program coś nie tak? Prosiłbym o podesłanie gotowego działającego programu do Bascom AVR któryby po prostu zapalał diodę. Z góry dziękuję

Awatar użytkownika
Press
-
-
Posty:389
Rejestracja:10 mar 2004, o 16:21
Lokalizacja:Wrocław
Kontaktowanie:

Postautor: Press » 31 sty 2007, o 16:33

no jak znam życie i własne przygody z AVR to bylo nei dotykac fuse bitow ;)
uP wogole kontaktuje sie ze światem? programator go widzi? jestes w stanie go przeprogramowac? Moze pokaz tez ten program co napisales... Zakładam ze pisales w Bascomie, wiec czy kompilacje przeprowadziles dla takiego procesorka jaki stosujesz?

Awatar użytkownika
Paweł.W.
-
-
Posty:33
Rejestracja:31 sty 2007, o 14:26
Lokalizacja:Andrychów

Postautor: Paweł.W. » 2 lut 2007, o 13:38

Mikrokomputer komunikuje się z programatorem, można go przeprogramować, kompilacja była przeprowadzona dla tego mikrokontrolera. ustawienia bitów ustawiłem tak jak w jednym z artykułów:

Lockbits:
- Lockbit 65: 11
- Lockbit 43: 11
- Lockbit 21: 11
Fusebits:
- Fusebit C: 0 (BODLEVEL 4.0V)
- Fusebit B: 0 (BODEN enabled)
- Fusebit KL: 10 (6 CK, 64 mS delay)
- Fusebit A987: 1111 (1111 external XTAL)
Fusebits High
- Fusebit M: 1 (PIN PC6 is reset) Ustawic na 1 gdy bedzie jeszcze programowany
- Fusebit J: 1 (WDT enabled by WDTCR)
- Fusebit I: 0 (SPI enabled)
- Fusebit H: 1 (CKOPT 1)
- Fusebit G: 1 (Erase EEPROM when chip erase)
- Fusebit FE: 00 (1024 words boot size, C00)
- Fusebit D: 1 (Reset vector is $0000)

program 1:
$regfile = "m8def.dat"
$crystal = 16000000

Config Pind.3 = Output
Config Pind.4 = Output
Config Pind.5 = Output
Config Pind.6 = Output
Config Pinb.5 = Input
Config Pinb.4 = Input
Config Pinb.3 = Input
Config Pinb.2 = Input
Config Pinb.0 = input
Config Pind.7 = Input

Set Portb.5
Set Portd.7
Set Portb.4
Set Portb.3
Reset Portb.0
Set Portb.2
Wait 50

Niby dobrze ale jednak źle. A podesłałbyś mi Kod który by bankowo działał? Bardzo bym prosił o to.
A z jakimi mikrokontrolerami AVR nie ma problemów?

Awatar użytkownika
Press
-
-
Posty:389
Rejestracja:10 mar 2004, o 16:21
Lokalizacja:Wrocław
Kontaktowanie:

Postautor: Press » 2 lut 2007, o 14:18

czy kwarc jest podpiety 16 MHz?
czy wersja procesorka ktora masz obsluguje tak szybkie kwarce? bo sa wersje tylko do 8 MHz.
czy port sterujacy dioda nie jest ustawiony jako INPUT?
czy wiesz ze wait 50 to 50 sekund bezczynnosci procesora kiedy on nie robi nic praktycznego?
i czy wiesz, ze po ostatniej instrukcji program idzie w las bo nei wie co robic dalej?

$regfile = "m8def.dat"
$crystal = 1000000

Config Portb = Output
Config Portc = Output
Config Portd = Output

do
toggle portb
toggle portc
toggle portd
wait 1
loop

bity konfiguracyjne ustaw tak jak sa fabrycznie poustawiane.

Awatar użytkownika
Paweł.W.
-
-
Posty:33
Rejestracja:31 sty 2007, o 14:26
Lokalizacja:Andrychów

Postautor: Paweł.W. » 5 lut 2007, o 12:43

Tak kwarc 16 MHz i ten mikrokontroler go obsługuje
port gdzie jest podłączona dioda jest skonfigurowany jako input ale dioda jest podłączona poprzez rezystor 1K do Ucc.
Przetestuje twój program i zobacze czy działa. Dam zać jutro. dzięki

Awatar użytkownika
Press
-
-
Posty:389
Rejestracja:10 mar 2004, o 16:21
Lokalizacja:Wrocław
Kontaktowanie:

Postautor: Press » 5 lut 2007, o 12:53

No i juz masz problem na talezu. Port ustawiony jako INPUT znajduje sie w stanie wysokiej impedancji. Przekonfiguruj go na OUTPUT.

Awatar użytkownika
Paweł.W.
-
-
Posty:33
Rejestracja:31 sty 2007, o 14:26
Lokalizacja:Andrychów

Postautor: Paweł.W. » 5 lut 2007, o 13:08

Tylko, że już próbowałem wcześniej. Muszę jeszcze sprawdzić na pracowni czy rezonator działa wogóle.
A jeśli nie pomoże to co z tym fantem zrobić?
A żeby skonfikurować bity na ustawienia fabryczne to wystarczy wpisać w pliku .prg
wartości n,n,n,n ? Czy można to inaczej zrobić w bascomie? A tak wogóle to z jakimi mikrokontrolerami nie ma takich problemów?

teedd
-
-
Posty:14
Rejestracja:3 cze 2003, o 15:54

Postautor: teedd » 5 lut 2007, o 17:49

Witam.
W przeważającej większości problemy wynikają nie z typu mikrokontrolera, lecz z ... ;)
Pozdrowienia - teedd

McKEE
-
-
Posty:186
Rejestracja:7 cze 2004, o 10:02
Lokalizacja:Gniewkowo_Toruń

Postautor: McKEE » 6 lut 2007, o 11:09

Po pierwsze , prostota programu:
-po co ustawiac cale porty jezeli chcesz zapalic jedna diode , potem sie pogubisz , nie widac co z czym jest powiazane.
- Atmegi zwykle maja domyslnie ustawiony wewnetrzny rezonator 1MHz, tak ze nie musisz podpinac kwarcu na poczatek ani ruszac fusuf
- prawidlowo obsluz RESET , czyli 10K do plusa
- daj opoznienie w programie ok 200~500ms i zmien port na przeciwny PortX.X=0 , waitms=500 , portx.x =1 , bo inaczej nie zauwazysz ze dioda miga
- poczatki sa ciezkie, w wielu wypadkach przyczyna problemu jest banalnie prosta.

Awatar użytkownika
Paweł.W.
-
-
Posty:33
Rejestracja:31 sty 2007, o 14:26
Lokalizacja:Andrychów

Postautor: Paweł.W. » 6 lut 2007, o 13:37

Sprubuje jeszcze bez kwarcu. Ale jak to nie pomoże to już nie wiem co mam dalej zrobić?

Bardzo proszę kogoś o to żeby mi przysłał kod źródłowy do BASCOMA AVR taki który na 100% działa, wraz z opisem i schematem :633:
Z własnego doświadczenia wiem, że najlepiej bazować na już wcześniej wypróbowanych rzeczach.
Wygląda na to, że jestem naprawdę niekumaty.

Awatar użytkownika
Press
-
-
Posty:389
Rejestracja:10 mar 2004, o 16:21
Lokalizacja:Wrocław
Kontaktowanie:

Postautor: Press » 6 lut 2007, o 15:33

A kto CI napisze program nei wiedzac co ty tam na plytce namodziles?
rozumiem ze jestes poczatkujacy ale troche ruszaj glowa ;)

McKEE
-
-
Posty:186
Rejestracja:7 cze 2004, o 10:02
Lokalizacja:Gniewkowo_Toruń

Postautor: McKEE » 6 lut 2007, o 17:41

Prosze bardzo najprostsze co moze byc :

$regfile = "m8def.dat"
$crystal = 1000000 ' fusy ustawione na wew.RC oscylator 1MHz
Config Portc.5 = Output 'Led podlaczony do pina 28 katoda, anoda do +5V przez 1k

Led Alias Portc.5 'alias dla Leda mozna nie stosowac
Led = 1 'podciaganie dla pina leda - Led nie swieci

Do ' petla glowna
Led = 0 ' zapal leda
Waitms 500 'na pol sekundy
Led = 1 'zgas leda
Waitms 500 'na pol sekundy
Loop 'i tak w kolko
End
Atmega podlaczony do 5V , kondensator 100nF przy zasilaniu , opornik 10k do resetu, programator STK200
Led mryga mi na stole tak ze program dziala , uzywam Bascoma AVR 1.11.8.1
Powodzenia

kenaJ
-
-
Posty:29
Rejestracja:13 lis 2006, o 22:31
Lokalizacja:Kraków

Postautor: kenaJ » 6 lut 2007, o 22:09

Albo spróbuj coś takiego:

--------------------------------------------
$regfile = "m8def.dat"
$crystal = 8000000
Config Portd = Output
Config Pinc.1 = Input
Przycisk Alias Pinc.1
Portd = &B00010001

Do
If Przycisk = 1 Then
Rotate Portd , Right
Waitms 100
Else
Rotate Portd , Left
Waitms 250
End If
Loop

End
--------------------------------------------

Przyciskiem zwierasz Pinc.1 do masy (24 'nóżka' mikroprocesora).
Na Portd ('nóżka': 2, 3, 4, 5, 6, 11, 12, 13 -ta), łączysz diody (8 sztuk) katodami (-) kolejno do Pind.0, Pind.1 itd, a anody (+) przez oporniki 470 ohm (8 sztuk) do +5V.
Jak działa: kiedy nie naciśniesz przycisku to szybciej światło "wiruje" w prawo, a jak naciśniesz - wolniej wiruje w lewo.
Programik i schemat na podstawie "Programowanie mikrokontrolerów AVR w języku BASCOM" M. Wiązania.

Powodzenia!

teedd
-
-
Posty:14
Rejestracja:3 cze 2003, o 15:54

Postautor: teedd » 7 lut 2007, o 00:13

Witam.
Config Portc.5 = Output
Czy to na 100% działa? Czy zgodnie ze sztuką nie powinno być raczej
Config Pinc.5 = Output
?
Pozdrowienia - teedd

McKEE
-
-
Posty:186
Rejestracja:7 cze 2004, o 10:02
Lokalizacja:Gniewkowo_Toruń

Postautor: McKEE » 7 lut 2007, o 03:51

W zasadzie PORTC.5 konfiguruje sie jako OUTPUT a PINC.5 jako INPUT ,
jest wieksza przejzystosc programu i nie myli sie w dalszej czesci.
Chociaz zastosowanie PINC.5 = OUTPUT tez niczego nie zmienia ( nie wiem jak z listingiem nie zagladalem) , z tym ze potem do wysterowania tego pina i tak trzeba uzyc PORTC.5=1 tak ze po co mieszac. Zagladelem do Helpa ale nie znalazlem niczego konkretnego.
:599:

Awatar użytkownika
Paweł.W.
-
-
Posty:33
Rejestracja:31 sty 2007, o 14:26
Lokalizacja:Andrychów

Postautor: Paweł.W. » 8 lut 2007, o 14:33

Niestety. Próbowałem ale nie chce działać.
Myślę, że to przez złe ustawienie fuse bits.
Proszę Cię McKEE prześlij mi też ustawienia swich fuse bits, tak żebym mógł już bez przeszkód robić swój zaplanowany projekt.
Chce zrobić uniwersalny steronik (X,Y) z optycznym czujnikiem przesunięcia. Mam już wszystko: elementy, program działający w symulatorze,
ale nie mam jeszcze wiedzy potrzebnej do uruchomienia tego programu na tym mikrokontrolerze.

McKEE
-
-
Posty:186
Rejestracja:7 cze 2004, o 10:02
Lokalizacja:Gniewkowo_Toruń

Postautor: McKEE » 8 lut 2007, o 16:11

Prosze bardzo
Załączniki
atmega8.JPG

Awatar użytkownika
Paweł.W.
-
-
Posty:33
Rejestracja:31 sty 2007, o 14:26
Lokalizacja:Andrychów

Postautor: Paweł.W. » 12 lut 2007, o 14:17

Dzięki za wszystko. Problem rozwiązany :)
Pozdrawiam.

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 19 gości