• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Atmega 324A
#1
Witajcie.

Zacząłem swoją Atmege 324A-PU od programowania w środowisku Atmel Studio po przez USBasp. Na płytce stykowej umieściłem najprostszy program do zapalenia i zgaszenia diody. Po napisaniu i skompilowaniu programu nie wystąpiły żadne błędy, natomiast przy wgrywaniu na uC avrdude wyrzucił błędy następujące:
- atmega324a not found
- cannot set sck period. please check for usbasp firmware update.

Pierwszy błąd dość szybko rozwiązałem, w pliku avrdude.conf podmieniłem sygnaturę z Atmegi 324P na swoją 0x1E 0x95 0x15, dzięki czemu po wybraniu w projekcie Atmegi 324P program wgrał się na uC, dioda zaczęła się zapalać i gasnąć. Drugi błąd natomiast wyczytałem, że może być związany ze starym wsadem atmegi w programatorze, ale nie miał on wpływu na wgrywanie programu, dlatego nic z nim nie robiłem.

Niestety po jakimś czasie uznałem, że język C dla początkującego jest trochę za trudny, dlatego postanowiłem zacząć programować w środowisku Arduino IDE. Wyczytałem, że po przez programator USBasp mogę wgrywać normalnie bez bootloader program ze środowiska Arduino IDE. Przystosowałem Arduino IDE do swojego uC instalując paczkę MightyCore, dzięki której mogłem w wyborze płytek wybrać swoją Atmege 324A. Tak jak w przypadku Atmel Studio pierwszy program był napisany dla diody, wybrałem z przykładów Blink zmieniając w kodzie nr pinu. Kompilacja programu przebiegła pomyślnie natomiast przy wgrywaniu na uC wystąpiły znane mi błędy z Atmel Studio. Błąd dotyczący sygnatury rozwiązałem w ten sam sposób co wcześniej podmieniając swoją sygnaturę, następnie wybierając Atmege 324P program wgrywał się na uC.

Niestety po wgraniu programu uC nie zapalał diody, sprawdziłem połączenia, diodę i wszystko było w porządku. Sprawdziłem napięcie na pinie, który miał podawać na przemian stan wysoki, niski i tutaj okazuje się, że napięcie jest stałe w granicach 1,5V, czyli tak jakby program w ogóle się nie wykonywał. Posprawdzałem inne piny, sytuacja podobna nigdzie nie było sygnału wysokiego,niskiego na przemian.

Myślałem, że może w jakiś sposób uszkodziłem uC, więc dla sprawdzenia wróciłem do Atmel Studio i po wgraniu programu dioda zaczęła z powrotem działać. Następnie z powrotem wróciłem do Arduino IDE wgrywając program, niestety dioda nie działała.

Może ktoś ma jakiś pomysł czemu w Atmel Studio bez problemu wykonuje się pogram a przeniesienie projektu na Arduino IDE nie przynosi rezultatów?

Dodam jeszcze, że fuse bity są fabryczne, nie dodawałem do układu zew kwarcu, w arduino w narządziach ustawiałem przy wgrywaniu 8mhz wewnętrzny zegar.

  • [url=https://www.elektroda.pl/rtvforum/viewtopic.php?p=18395515#][/url]
 
Odpowiedź
#2
Wstaw kod i schemat.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#3
Możesz sobie ustawić zegar w Arduino na 8MHz, ale on nie ustawia tego przy wgrywaniu szkicu, tylko przy wgrywaniu bootloadera. Jak nie chcesz samego programu bootloadera i zajętego miejsca w pamięci to ustawiasz opcję by bootloadera nie było, ale i tak go wgrywasz, to ustawia tylko fuse bity. Może głupie, ale tak to działa.
Ewentualnie weź sobie programik AVR LAB++ i nim ustawić wyłaczenie dzielnika div8 dla zegara. Fabrycznie uC przylatują ustawione na 1MHz.
Jak już wstawisz schemat i kod, o który prosi Robson Kerman to się upewnimy, czy ustawiłeś ten pin jako wyjście.
No i do wyboru są 3 standardy pinout dla płytek opartych o 324.
 
Odpowiedź
#4
Schemat to najprostsze podłączenie na płytce stykowej.

VCC/AVCC filtrowane przez kondesator 100nF
Reset pociagniety przez rezystor 10k
Na Pinie nr 20 przez rezystor 1k połączona dioda

W schemacie błędu nie ma ale mogę zrobić zdjęcie ewentualnie.

Kod programu jest przykładem z Arduino "blink"


Kod:
// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(20, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(20, HIGH);  // turn the LED on (HIGH is the voltage level)
  delay(5000);                      // wait for a second
  digitalWrite(20, LOW);    // turn the LED off by making the voltage LOW
  delay(5000);                      // wait for a second
}


Program się kompiluje, wgrywa ale atmega nie wystawia na pinie nr 20 stanu wysokiego, niskiego napięcie stałe około 1,7V
 
Odpowiedź
#5
Co oznacza, w przypadku Atmega 324, pin nr 20?
Nie widzę tego schematu, co miałeś wstawić, ale podłączone jest według tego rysunku?
[Obrazek: 68747470733a2f2f692e696d6775722e636f6d2f...622e706e67]
A może jednak nie przestawiły się ustawienia zegara?
Może program działa, tylko te 5 sekund to w rzeczywistości 80 sekund?
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#6
Tak to jest ten schemat, dioda podłączona do pinu nr 20.

A AvR LAB sprawdzałem fusebity


Załączone pliki Miniatury
       
 
Odpowiedź
#7
A ptaszek oznacza zero, czy może jeden?
Nie znam tego programu (nakładki na AVR dude) ,ale to nie jest takie oczywiste, na przykład Burn-o-mat jak ma zaptaszkowane to jest zero.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#8
W AVR LAB ++ widać, że obecne fusy to 0, więc ptaszki zerują, a to ustawia funkcje. Ptaszek przy CKDIV8 na pewno włącza dzielnik przez 8. Pierwszy raz widzę, by wszystkie fusy były ustawione na 0. Przywróć fabryczne, potem odznacz tylko CKDIV8 i będzie na fabrycznym oscylatorze wewnętrznym bez dzielnika - 8MHz.
Masz też włączony JTAG, zobacz na jakich pinach się znajduje, jeśli akurat te piny chcesz używać jako I/O to musisz JTAG wyłączyć (a na to wygląda - piny 18-21).
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości