logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmel][C/WinAVR/AVRStudio]Co kupić - zestaw

kosciej 13 Mar 2009 23:35 2123 8
REKLAMA
  • #1 6278693
    kosciej
    Poziom 11  
    Hej!

    Jestem początkujący :)
    Chciałbym się dowiedzieć, co mam kupić na początek do zabawy z µC. Czytam forum przez ostatni tydzień dość intensywnie, lecz mam kilka pytań, na które nie znalazłem odpowiedzi :)
    1. Jaki programator? Wiem, że są min. 2 rodzaje (ISP i HVProg - ISP In System Programming, oraz hw, który może odblokować zablokowany procek...). Na allegro znalazłem takie, które mnie zainteresowały:

    - https://www.elektroda.pl/rtvforum/faq.php pkt.10.11

    I teraz tak - jeden typu STK500 (Współpraca z AVRStudio, upgrade softu z AS), drugi prosty STK200.

    Nie będę ukrywał również, że różnica cen jest znaczna, bo to każdy widzi :D
    A może coś innego byście polecali? Dobrze by było, żeby sprzęt miał dobre zabezpieczenia, żeby nic nie zepsuć :)

    Czy może spróbować budowę samemu? (Choć pewnie nie byłoby to tak estetyczne jak te kupne ;) )

    2. Napisałem taki kod, który sprawdzałem w symulatorze AVRStudio i VMLab. Kod działa, lecz nie wiem, czy ma sens "w realu" :D
    Oraz problemem jest przerwanie pracy programu. Zawsze mimo wywołania przerwania i spełnienia warunku pętla for dolatuje do końca...A jak ma być stop, to stop :|

    Kolejne pytanie - jak wyliczyć poprawną wartość TCNTx, bo jak wyczytałem to jest czas po jakim jest przerwanie (TCCRx - wartość początkowa licznika, tak?)

    Oto kod:

    
    #define F_CPU 1000000UL  // 1 MHz
    #define DELAY 5
    #include <avr/io.h>
    #include <avr/interrupt.h>
    #include <util/delay.h>
    
    ISR(SIG_OVERFLOW0){
    	TCNT0 = 247;
    	if(bit_is_clear(PINB, 0)){
    		PORTB|=_BV(1);
       }
    }
    int main(void){
    	TCCR0=0x03;
    	TCNT0=247;
    	TIMSK =1 << TOIE0;
    	sei();
    	DDRA=0xFF;
    	PORTA=0xFF;
    	DDRB=0x00;
    	PORTB=0xFF;
    	register int i,j;
    	while(1){
    		if(bit_is_clear(PINB,1))
    			PORTB&=~(_BV(1));
    		if(bit_is_clear(PORTB,1)){
    		for(i=7;i>=0;i--){
    			PORTA&=~(_BV(i));
    			if(i!=0)
    				PORTA&=~(_BV(i-1));
    			_delay_ms(DELAY);
    			PORTA|=(_BV(i));
    			_delay_ms(DELAY);
    			if(i==0){
    				for(j=0;j<=7;j++){
    					PORTA&=~(_BV(j));
    					if(j!=7)
    						PORTA&=~(_BV(j+1));
    					_delay_ms(DELAY);
    					PORTA|=(_BV(j));
    					_delay_ms(DELAY);
    					}
    				}
    			}
    		}
    	}
    	return 0;
    }
    
    


    PS. Czy jest sens kupować płytkę stykową do zabawy dla początkującego?
    Jeśli tak, to czy polecacie jakieś firmy/producentów? Czy polecacie jakiś sklep, gdzie mogę również kupić tanio programator, oraz taką płytkę, by zaoszczędzić na przesyłce? :)

    Pozdrawiam!

    Linki do aukcji usunąłem - regulamin p.10.11
    [zumek]
  • REKLAMA
  • #2 6279525
    MarcinKawka
    Poziom 12  
    Ja posiadam właśnie taki STK200, jedyną wadą jest że musze wgrywać programy za pomocą PonyPROG a nie w AVRStudio, chociaż podobno już jest jakiś plugin do AVRStudio który go obsługuje.

    Cytat:
    (TCCRx - wartość początkowa licznika, tak?)


    W TCCRx ustawiasz tryb działania licznika (Normal, PWM, CTC lub inny), szczegóły znajdzesz w datasheecie dla swojego mikrokontrolera.
    Druga rzeczą którą ustawiasz za pomocą trzech najmniej znaczących bitów w TCCR jest dzielnik częstotliwości. Zwykle można ustawić wartości 1,8,256,1024 ale znowu zajrzyj do datasheeta od swojego AVRa.

    Przykładowo jeśli masz F_CPU 1Mhz to z dzielnikiem np. 256 licznik taktowany będzie częstotliwością 1Mhz/256 = 3.906 kHz

    Jeśli ustawiasz TIMSK =1 << TOIE0 to licznik liczy aż do przepełnienia, wtedy dopiero zgłasza przerwanie i automatycznie liczy znowu od zera.

    3.906 kHz odpowiada zwiększaniu TCNTx co 256 us czyli jeśli to był licznik 8bitowy to przepełni się po 256*256 = 65.5ms a jeśli 16bitowy to po 256*65.5 = 16.7s. I ponowny apel o zajrzenie do data sheeta.

    Apropo twojej pętli for i przerwania, nie widze związku między nimi, kod przerwania nie modyfikuje zmiennej j więc nie ma wpływu na fora.
  • #3 6279604
    kosciej
    Poziom 11  
    Racja - że o tym nie pomyślałem...zmienię i i j na wartości końcowe i szybko mi wyjdzie z pętli :D

    A czy ten STK500 jest "opłacalny", czy za tę cenę kupię jakiś HVProg?

    Pozdr!
  • REKLAMA
  • #4 6279814
    Citek
    Poziom 22  
    Osobiście mogę ci polecić programator na USB, działa bez problemu pod AVR Studio i jest w przystępnej cenie ok.40zł. Akurat widzę, że osoba od, której kupowałem (redflu) nie ma wystawionych żadnych aukcji.
    Jeżeli chodzi o płytkę stykową to też bardzo się przydaje, uważam nawet, że jest lepsza od gotowców, ponieważ sam sobie wszystko składasz po swojemu i przy okazji się jeszcze czegoś nauczysz.

    ...

    "reklamę" usunąłem - regulamin p.2
    [zumek]
  • REKLAMA
  • #5 6280106
    klops_mops
    Poziom 17  
    Co do programatorów, to muszę polecić Ci zbudowanie bardzo prostego programatora USBasp, pracującego poprzez USB. Ja go mam i bardzo sobie chwalę, poszukaj na elektrodzie info o tym programatorze. Storna autora programatora: http://www.fischl.de/usbasp/

    Na prawdę nie bój się budować własnych programatorów, przyjemność dużo większa niż kupienie gotowca. Budowa jest bardzo łatwa, zwłaszcza, że są już gotowe wzory płytek.

    Pozdrawiam :)
  • REKLAMA
  • #6 6281598
    kosciej
    Poziom 11  
    Budowy to ja się nie boję (coś tam z elektroniki kiedyś robiłem - prostej, bo prostej, ale lutownicę trzymać umiem ;)). Do budowy takiego programatora, muszę już jeden mieć :)

    Ale może sobie zbuduje stk200/300 - to jest proste i nie wymaga programatora :)
  • #7 6281679
    kaktus_c++
    Poziom 18  
    Jeśli chodzi o programator fishl.de to taki kupiłem za 30 zł gotowy, 2 miechy temu na allegro i działa i jestem zadowolony. Wcześniej miałem "programator" - zwyczajnie kable podłączone do procka na lpt i też działał.

    A jeśli chodzi o tanie zestawy "gotowce" to zobacz firmę propox, tylko zanim zamówisz to dowiedz się o czas realizacji (bo ja czekałem 2 miesiące).
  • #8 6282911
    Ravender
    Poziom 20  
    Ja jestem wyznawcą tylko jednego rozwiązania - płytka stykowa :). Tak na prawdę to gotowce z reguły udostępniają: parę przycisków, jakieś diody do mrugania, wyświetlacz LEC, LCD i klawiaturę plus kilka scalaków.

    Skończysz się tym bawić w przeciągu dwóch tygodni i tyle..

    Płytkę stykową będziesz mógł wykorzystywać ciągle na wiele różnych sposobów.
  • #9 6297852
    kosciej
    Poziom 11  
    Hej!

    Popełniłem taki schemat:
    [Atmel][C/WinAVR/AVRStudio]Co kupić - zestaw

    Oprogramowanie go - później.
    Mam pytanie - jak dobrać wartości rezystorków? Wartości kondensatorów wziąłem z datasheeta dla LM7805T, czy są poprawne?

    Czy to ma szanse działać?

    Jak dodać jakiś driver do takiego wyświetlacza (programowo i sprzętowo)?
    Bo do układu będę jeszcze dobudowywał LCD 16x2 i potrzebuję przynajmniej jeszcze kilku przycisków (też dodam później), z czego 2 powinny działać na INT (zczytywanie impulsów i STOP)...Boję się, że mi nie starczy pinów :(

    Pozdrawiam!

    PS. Kolego Ravender - Twoja stronka jest super - wiele dzięki niej się nauczyłem :D
REKLAMA