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.
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
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ę
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?
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?
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?
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?
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.
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.
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?
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?
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.
-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.
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
Z własnego doświadczenia wiem, że najlepiej bazować na już wcześniej wypróbowanych rzeczach.
Wygląda na to, że jestem naprawdę niekumaty.
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
Z własnego doświadczenia wiem, że najlepiej bazować na już wcześniej wypróbowanych rzeczach.
Wygląda na to, że jestem naprawdę niekumaty.
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
$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
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!
--------------------------------------------
$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!
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.
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.
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.
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.
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 31 gości