Skocz do zawartości

[Programowanie] Szybki start z WinAVR


abxyz

Pomocna odpowiedź

kolego dziękuje za zainteresowanie 🙂 ale jednak poprzez ten mostek H to trochę za trudne rozwiązanie 🙁 masz może jakiś inny pomysł ? posiadam

http://programatory.com.pl/sklep/index.php?p156,modul-uruchomieniowy-atmega128

i tak sobie myślałem żeby to wykonać za pomoc potencjometrach jeśli dobrze mówię 😋

wg mnie wyglądało by to tak od pinu pb0 do pinu pb7 zapodać potencjometry od takiego który powodował by na pierwszym pinie to by silniczek pracował na bardzo małych obrotach poprzez naciśniecie guzika zmieniał by sie pin zasilający na pb2 gdzie potencjoimetr by stanowił troszkę mniejsze ograniczenie prędkości i tak do pinu pb 7 gdzie silniczek pracował by na prawie ze maksymalnych obrotach pomysł wydaje mi sie prosty tylko ze pozostaje kwestia kodu :/ program musiał by po każdym naciśnięciu przycisku zmieniać pin wyłączając pierwszy a włączając kolejny 🙁

Link do komentarza
Share on other sites

A jak chcesz podpiac zasilanie pod 8 pinow? :>

Bez mostka H (czy to scalonego czy na elementach dyskretnych) nie zrobisz zmiany polaryzacji czyli bedziesz mial tylko jeden kierunek obrotow.

Link do komentarza
Share on other sites

juz na upartego odpuszczę lewo prawo 🙁 chyba ze wpadnę na jakiś pomysł z serii dziwnych 😋 jak narazie to spaliłem programator tzn nie daje napięcia na moduł uruchomieniowy ale zaraz cosik przylutuje i będzie grało 🙂

Link do komentarza
Share on other sites

Ogółem procek nie uciągnie silnika "prosto z nóżki" - za duży pobór prądu. Czy chcesz, czy nie - jesteś skazany albo na mostek H (możliwość sterowania dwukierunkowego - czyt. lewo-prawo), albo np zwykły tranzystor otwierający i zamykający obwód zasilania silnika (sterowania tranzystora podłączone do mikrokontrolera) ale już bez zmiany kierunku obrotów.

PS Schemat, który przedstawiłem wyżej jest naprawdę banalny - nie ma tam nic prócz mostka i kilkunastu przewodów! A i sterowanie PWM w bascomie to bułka z masłem, zobaczysz!

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

widzisz kolego nawet nie wiem co to ten mostek H i skad go wziąć :/ znalazłem na kursie

 Wyjścia: PA0,PA1
*/

#define F_CPU 1000000L 
#include <avr/io.h>
#include <util/delay.h>        

int main(void)
{
 /* Definicja zmiennych */
 int t;

 /* P0,P1 -  wyjścia */
 DDRA  = 0x03;  
 PORTA = 0x00;

 /* Główna pętla */
 while(1)
 { 
   /* Pierwsza lampka stopniowo rozjaśnia się,
      druga stopniowo gaśnie
   */
   for(t=0; t<=768; t+=2)
   {  
     PORTA |= 0x01;    // ustawia bit nr 0
     PORTA &= ~0x02;   // kasuje bit nr 1    
     _delay_us(t); // opóźnienie w mikrosekundach

     PORTA &= ~0x01;   // kasuje bit nr 0
     PORTA |= 0x02;    // ustawia bit nr1     
     _delay_us(768-t);
   }  
   /* Pierwsza lampka stopniowo gaśnie,
      druga stopniowo rozjaśnia się
   */    
   for(t=768; t>=0; t-=2)
   {  
     PORTA |= 0x01;
     PORTA &= ~0x02;
     _delay_us(t);
     PORTA &= ~0x01;
     PORTA |= 0x02;
     _delay_us(768-t);  
   }
 }  
}

jednak że u mnie to nie działa chyba przez to ze mam atmege 128 a nie 16 🙁

a co do silniczka to prosto z nóżki to śmiga 🙂

Link do komentarza
Share on other sites

Witam mam problem z zaprogramowaniem uC. Posiadam atmega8 i do tego http://www.wobit.com.pl/download/pdf/przetworniki/MAK50.pdf . Enkoder ma 10 przewodów,które mam podlączyć do uC. 6 z 10 przewodów łącze do portuC, natomiast 4 pozostałe do portu D (mają być wejściami) jak w załączniku. Jak mam ustawić porty, żeby wszystko grało?


DDRC = 0x00;         // PortC jako wejście (6 z 10 przewodow enkodera)
   PORTC = 0x00;        // z podciągnięciem do  GND
DDRD = 0xCC;        // PortD: PD0 oraz PD1 jako wyjscia do MAX232; PD2 PD3 PD6 PD7 jako wejscia (brakujace 4 przewody do enkodera)	
PORTD = CC;		    //dobrze? 	

Czy tak będzie dobrze?

Z góry dzięki za pomoc.

IMG_4aa6280696ae83250.jpg

Link do komentarza
Share on other sites

jednak że u mnie to nie działa chyba przez to ze mam atmege 128 a nie 16 🙁

a to może działa ino tą atmege widze że ustawiłeś na 1MH i poprostu nie widać jak się diody zmieniają? spróbuj powstawiać tak ze 30 NOPów i zobacz jak sie zachowa albo zmień jeszcze częstotliwość atmegi

Link do komentarza
Share on other sites

mogę się podpiąć?

chciałem zrobić to na atmega8 i z zewnętrznym kwarcem 12MHz. zrobiłem dokładnie według instrukcji w pierwszym poście, ale wyskakują mi błędy:

> "make.exe" all

-------- begin --------
avr-gcc (WinAVR 20090313) 4.3.2
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Compiling C: bootloader.c
avr-gcc -c -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=12000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./bootloader.lst  -std=gnu99 -MMD -MP -MF .dep/bootloader.o.d bootloader.c -o bootloader.o 
In file included from bootloader.c:25:
d:/winavr/lib/gcc/../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete.  Use <avr/interrupt.h>."
bootloader.c:31:20: error: usbdrv.h: No such file or directory
bootloader.c:41: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'replyBuffer'
bootloader.c:42: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'state'
bootloader.c:48: warning: function declaration isn't a prototype
bootloader.c:56: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'usbFunctionSetup'
bootloader.c:91: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'usbFunctionWrite'
bootloader.c: In function 'main':
bootloader.c:138: warning: implicit declaration of function 'usbInit'
bootloader.c:141: warning: implicit declaration of function 'usbPoll'
make.exe: *** [bootloader.o] Error 1

> Process Exit Code: 2
> Time Taken: 00:00

o co chodzi?

Link do komentarza
Share on other sites

Masz błędy w kodzie w liniach: 20, 31, 41, 42, 48, 56, 91, 138, 141... Poza on raczej wyraźnie mówi co mu się nie podoba... Jeśli nie będziesz chciał z nim współpracować to raczej możesz wziąć swój uC i wyrzucić bo na nic ci się on nie przyda

Link do komentarza
Share on other sites

Nie wiem jak to jest dokładnie z plikami z rozszerzeniem ".h". Jak kiedyś programowałem w MS VC++ lub DevC+++ to tam jak się dodało plik takiego typu to dla

#include <NAZWA.h>

szukał on tego pliku w folderze z bibliotekamie np.

c\program files\devc++\library\NAZWA.h

a dla

..\projekt\NAZWA.h

w folderze z projektem

Jak to się ma dla WinAVR i jak się tworzy projekt z kilku plików z rozszerzeniem ".c"??

Link do komentarza
Share on other sites

Jeśli chcesz dołączyć pliki *.h znajdujący się w katalogu projektu, to piszesz np. tak:

#include "lcd.h"

#include "ds18b20.h"

czyli nazwy dołączanych plików objęte są parą cudzysłowów.

Żeby skompilować program składający się z kilku plików *.c, wpisuje się ich nazwy do pliku Makefile, wspominałem o tym w artykule.

Link do komentarza
Share on other sites

Czy WinAVR i AVRdude grają bez problemu na Windozie 7 64bit?

Odpisuję na podstawie swoich doświadczeń z Vista64. Myślę. że nie powinno być większych różnic w Win7, ale to będę mógł sprawdzić dopiero za jakieś 2 tygodnie. Jeżeli temat będzie Cię nadal interesował pisz.

A więc:

AVRdude działa bez problemów, nakładka Burn.... także. Trzeba tylko ementualnie wyłączyć certyfikaty sterowników, żeby moły działać programatory.

Przy WinAVR problemy byłu, Poczytałem tu i ówdzie, pociągałem co nieco. I działa......

Jest tam jakaś biblioteka, którą gdzieś tam trzeba podłączyć.

Przepraszam za błędy i styl pisania, a mija mi 3 nieprzespana noc 🙁

Pozdrawiam

Przemek

Link do komentarza
Share on other sites

Większość programów z XP uruchomisz na Win 7 (nawet x64), wystarczy we właściwościach wybrać tryb zgodności z XP SP2. WinAVR mi śmiga (choć wersja systemu x86) 😉

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.