• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Hex wysłandy do uC nie działa

Object Storage Arubacloud
0 głosów
289 wizyt
pytanie zadane 20 marca 2018 w C i C++ przez program naczelny Gaduła (3,320 p.)

Już dawno chciałem wgrać do mojej atmegi8 jakikolwiek program. to takie proste zamrugać (OCZYWIŚCIE SIEDZIAŁEM NAD TYM RÓWNO 48H I CH... ugrałem.) heh, dioda. 

To taka historyjka z noob amatorskiego życia, a przechodzac do własciwego pytania, to powiem co robiłem po kolei i co nie pykło:

- kupienie sprzęciku (no fajnie mam tego dużo jestem pro, wyświetlacz nawet)

- instalacja atmel studio i mkavrCalculator

- stworzenie najtrudniejszego układu na świecie, patrz góra.

- następny okropnie trudny element czyli c i hex. W programie nie mogło być żadnego błędu. 

Prosta sprawa, herce czy co tak nwm zielony jestem na 1000000L coś tam dwie biblioteki, ustawienie na wyjście wcześniej define, oprócz tego stan niski czy tam wysoki nie pamietam. 

Anyway czy wiecie co może być nie tak? Program napisany i skompilowany w atmel stdio znaleziony hex w plikach projektu i wysłany przez mkavrcalc. do atmegi8 - tyle. Powinno działać, poradzi ktoś? 

Ps: umieram z niemocy pls help for my mind

komentarz 20 marca 2018 przez adrian17 Ekspert (344,860 p.)
Raczej trudno będzie coś zgadnąć... pokażesz może kod?
komentarz 21 marca 2018 przez program naczelny Gaduła (3,320 p.)
#define F_CPU 1000000L
#include <avr/io.h>
#include <util/delay.h>

#define LED1 PB1

void main(void)
{
    DDRB  |= (1<<LED1); //Ustawienie pinów sterujących diodami jako wyjścia
    
    PORTB |= (1<<LED1);    //Ustawienie stanu wysokiego na wyjściu
    
}
komentarz 21 marca 2018 przez program naczelny Gaduła (3,320 p.)
chyba znalazłem problem, ale nie w kodzie tylko w atmel studio. Bo mogę stworzyć projekt dedykowany na płytkę, i jemu moge zrobić build przez f7. Ale wtedy ten hex składa się chyba z wszystkich plików skompilowanych pod daną płytkę. Nie wiem natomiast jak inaczej skompilować na hex, bo przy tworzeniu new file NIE MA okienka BUILD. Nie rozumiem za cholerę dlaczego. I nie wiem jak wysłać hex do uC bo mam programator niekompatybilny z atmel studio, muszę wysyłać hexa przec mkavrcalculator.

1 odpowiedź

+1 głos
odpowiedź 21 marca 2018 przez mokrowski Mędrzec (155,460 p.)

Ogólnie.. 

1. Definicji F_CPU nie powinno umieszczać się w plikach projektu. To jest ustawienie środowiska kompilacji. Definiuj to we właściwościach projektu.

2. Osobiście nie używam Atmel Studio ze względu na brak kontroli całego procesu budowania (mi nie wystarcza ta kontrola którą daje mi to środowisko). To preferencje osobiste, ale Eclipse z wtyczką do avr jest o niebo lepsze.

3. Programy dla MCU programowane bare-metal, raczej kończy się pętlą nieskończoną. Długo pisać dlaczego to zalecenie jest lepsze. Ogólnie jeśli włączysz przerwania bez ich obsługi będziesz zdziwiony. Lepiej wstawić "grzęznącą pętlę" w początkowym okresie nauki.

4. Pisałeś że masz mkavr.. to narzędzie potrafi wgrać wsad do MCU i dobrze współpracuje z Eclipse + wtyczka AVR.

Jako szkielet program poprawił bym na:

#include <avr/io.h>
#include <util/delay.h>

#define LED1 PB1

void main(void)
{
    DDRB  |= (1<<LED1); // Ustawienie pinów sterujących diodami jako wyjścia
    
    PORTB |= (1<<LED1);    // Ustawienie stanu wysokiego na wyjściu

    for(;;) {    // Opóźnienie z pętlą nieskończoną.
        _delay_ms(500);
    }
    
    return 0; //To jest konieczne w C, nawet jeśli na MCU nikt nie sprawdzi kodu powrotu
}

 

komentarz 21 marca 2018 przez program naczelny Gaduła (3,320 p.)
Co do pętli to już probowałem, ale to wogóle nie działa, pin jest po prostu ciągle wejściem. Coś nie tak z hex. Ale masz rację, zainstaluję eclipse i zobacze co się da zrobić.
1
komentarz 21 marca 2018 przez mokrowski Mędrzec (155,460 p.)

O ile dobrze widzę, powinieneś ustawić taktowanie zegara z wewnętrznego oscylatora RC bo nie widać na zdjęciu rezonatora kwarcowego. Zrobisz to w FUSE'ach mkvCalc'a.

Sugeruję zacząć od uporządkowanego kodu. Z jasnymi definicjami intencji. Definicje portów, funkcje i w main() wyłącznie prosta logika:

#include <avr/io.h>
#include <util/delay.h>

#define LED1_PIN  PB1
#define LED1_PORT PORTB
#define LED1_DDR  DDRB

static void led_init(void)
{
	LED1_DDR |= (1 << LED1_PIN);
}

static void led_toggle(void)
{
	LED1_PORT ^= (1 << LED1_PIN);
}

int main(void)
{
	led_init();
	for(;;) {
		led_toggle();
		_delay_ms(1000);
	}
	return 0;
}

Led będzie co 1 sek. gaszony i zapalany. To po to abyś wiedział czy poprawnie ustawiłeś zegar.

Głowa do góry... Po początkowych problemach "okołosprzętowych", będzie lepiej :)

komentarz 21 marca 2018 przez program naczelny Gaduła (3,320 p.)
Dzięki za gotówkę! ;) tak samo mówię domownikom, że po początkowej fazie rzucania płytkami przyjdzie zrozumienie, już wszyscy się denerwują przez to że ja wysiadam więc może po instalku eclipse, zfusowaniu i nowym kodzie w końcu coś wyjdzie ;)

jak coś to bd dalej tu pytał, nie zamykam
komentarz 29 marca 2018 przez program naczelny Gaduła (3,320 p.)

Zainstalowałem eclipse, wszystko z poradnikiem pana Mirka, i nic.

Toolchain-zrobione

plugin avr-zrobione 

I tak dalej wszystko ok aż nagle przychodzi w 2 poradniku pana Mirka do konfiguracji ustawień. Trzeba tam było rozwinąć zakladke "avr" w "properties" w "window" i wejść w "paths". Uwaga, uwaga, oczywiście zakładki "avr" nie ma. Nigdzie. Wszystko zrobiłem jak w poradniku.  Wie ktoś DLACZEGO?!

 

ps: MAM TEGO SZCZERZE DOSYĆ

 

Podobne pytania

0 głosów
1 odpowiedź 206 wizyt
pytanie zadane 20 marca 2016 w C i C++ przez Yari27 Początkujący (410 p.)
+2 głosów
3 odpowiedzi 120 wizyt
pytanie zadane 24 sierpnia 2023 w C# przez Mati336 Użytkownik (560 p.)
0 głosów
1 odpowiedź 299 wizyt
pytanie zadane 22 lipca 2019 w C i C++ przez niezalogowany

92,584 zapytań

141,434 odpowiedzi

319,669 komentarzy

61,967 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...