sterownik na procku...

Rozmowy na temat układów elektronicznych sterowania obrabiarek CNC

george2002
Czytelnik forum poziom 1 (min. 10)
Czytelnik forum poziom 1 (min. 10)
Posty w temacie: 7
Posty: 17
Rejestracja: 22 lip 2004, 16:29
Lokalizacja: KrakĂłw

#11

Post napisał: george2002 » 09 wrz 2004, 01:24

denx za odp i jeśli znajdziesz to będę wdzięczny bo przypuszczam że nardzo dużo może mi twuj programik na procka podpowiedzieć ponieważ jestem tak jak już pisałem w fazie testów sterownika 3 silniczków bipolarnych na atmedze 8535 ale jednak potrzebuję jeszcze paru informacji które może znajdę w twoim progsie :) aha a tak przy okazji to tutaj go wrzucisz czy gdzieś indziej :D ?

z góry denx george2002



Tagi:


Autor tematu
szogun
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 4
Posty: 7
Rejestracja: 24 sie 2004, 21:08
Lokalizacja: home alone :P

#12

Post napisał: szogun » 09 wrz 2004, 09:22

ottop pisze:jak pisałem działało tradicznie
Witam, moglbys podac troszke wiecej szczegolow??
wolno dzialal, nie nadazal z przerwaniami czy cos inszego???

thx

Awatar użytkownika

ottop
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 10
Posty: 346
Rejestracja: 07 cze 2004, 13:11
Lokalizacja: Bielsko-Biała
Kontakt:

#13

Post napisał: ottop » 09 wrz 2004, 17:17

Działał za wolno.
Udało mi się znaleść to co robiłem w bascomie.
Załączniki
Sterownik_mikro01.zip
(2.59 KiB) Pobrany 400 razy


george2002
Czytelnik forum poziom 1 (min. 10)
Czytelnik forum poziom 1 (min. 10)
Posty w temacie: 7
Posty: 17
Rejestracja: 22 lip 2004, 16:29
Lokalizacja: KrakĂłw

#14

Post napisał: george2002 » 09 wrz 2004, 19:38

mógłbyś ottop opisać w tych plikach dokładnie co się dzieje w każdej linijce ponieważ w bascomie programuję dopiero miesiąc i do końca nie wiem co w tym programie każda linijka robi :) , swoją drogą myślę że jeszcze troszkę i uda mi się zrobić na atmedze 8535 sterownik na 3 silniczki step, dir, enable i mikrokroki później tylko z wyjść atmegi jakieś moce np irf510 i może być to dość tani sterowniczek :)


damik
Znawca tematu (min. 80)
Znawca tematu (min. 80)
Posty w temacie: 1
Posty: 92
Rejestracja: 04 cze 2004, 14:09
Lokalizacja: ?l?sk

#15

Post napisał: damik » 09 wrz 2004, 22:33

ottop pisze:Działał za wolno.
Udało mi się znaleść to co robiłem w bascomie.
Jaki miałeś zegar dla proca , stosowałeś ten wewnętrzny oscylatorek (~1 MHz) czy zewnętrzny kwarc (ATtiny26 działa do 16MHz) ?
I jeśli kwarc to czy ustawiłeś odpowiednio Fuse bity w procu podczas programowania bo defaultowo jest wew. rezonatorek RC na 1MHz.
(sorry, pytam tak z zapobiegliwości) :wink:

Niestety nie posiadam Eagle'a by zobaczyć schemat ...
Pozdrawiam
Damik

Awatar użytkownika

ottop
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 10
Posty: 346
Rejestracja: 07 cze 2004, 13:11
Lokalizacja: Bielsko-Biała
Kontakt:

#16

Post napisał: ottop » 10 wrz 2004, 12:40

Pracował na wewnętrznym ustawionym na 8Mhz, być może dało by się poprawić jeszcze ten program i przyśpieszyć.
Eagla freeware można ściągnąć z www.cadsoft.de/
Do bascoma bardzo przydatny jest: http://www.mcselec.com/download/avr/bbavrpdf.zip polskie tłumaczenie helpa. Jak będę miał chwilę to postaram się dokładniej opisać działanie tego programu w bascomie


george2002
Czytelnik forum poziom 1 (min. 10)
Czytelnik forum poziom 1 (min. 10)
Posty w temacie: 7
Posty: 17
Rejestracja: 22 lip 2004, 16:29
Lokalizacja: KrakĂłw

#17

Post napisał: george2002 » 10 wrz 2004, 16:13

wielkie denx ponieważ myślę (chyba że się mylę) iż można zrobić niezły a dość tani sterowniczek z lpt step/dir i enable na bascomie wystarczy np opta na wejściu-atmega8535-irf510 na wyjściu i jest tani sterowniczek tak mi sięwydaje przynajmniej narazie nie myślę o czoperowaniu ale kto wie ;)

Awatar użytkownika

ottop
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 10
Posty: 346
Rejestracja: 07 cze 2004, 13:11
Lokalizacja: Bielsko-Biała
Kontakt:

#18

Post napisał: ottop » 10 wrz 2004, 17:34

Jeśli bez czoperowania to nie powinno być większych problemów


george2002
Czytelnik forum poziom 1 (min. 10)
Czytelnik forum poziom 1 (min. 10)
Posty w temacie: 7
Posty: 17
Rejestracja: 22 lip 2004, 16:29
Lokalizacja: KrakĂłw

#19

Post napisał: george2002 » 13 wrz 2004, 14:00

hejka właśnie skleciłem taki programik sterujący (jak narazie) step/dir na 3 silniki na atmedzie8535 i mam taki problem: z dwoma przerwaniami działa rewelacja ale jeśli załączę trzecie przerwanie to przy kompilacji wyskakuje mi taki błąd:
error : 5 Line : 18 No more space for BIT [EICRA]

poniżej przedstawiam sklecony przezemnie programik na mój procek(mega8535):

'************************************************************
'* Program obsługi serownika silnika krokowego z mikrokrokiem *
'* dla procesora Mega8535 - wersja unipolarna *
'* (c) george2002 2004-09-11 *
'************************************************************
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
$regfile = "m8535.dat" 'wybór procka
$crystal = 8000000 'wartość użytego kwarcu
Config Porta = Output 'konfiguracja portów
Config Portb = Input 'konfiguracja portów
Config Portc = Output 'konfiguracja portów
Config Portd = Input 'konfiguracja portów
Config Int0 = Falling 'konfiguracja przewrania 0
Config Int1 = Falling 'konfiguracja przewrania 1
Config Int2 = Falling 'konfiguracja przewrania 2
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim Krokx As Byte 'zmienne
Dim Kroky As Byte 'zmienne
Dim Krokz As Byte 'zmienne
Dim Krokix(8) As Byte 'zmienne
Dim Krokiy(8) As Byte 'zmienne
Dim Krokiz(8) As Byte 'zmienne
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Enable Interrupts 'włączenie przerwań
Set Portd.2 'podciąganie wewnętrzne procka-przerwanie 0
Set Portd.3 'podciąganie wewnętrzne procka-przerwanie 1
Set Portd.4 'podciąganie wewnętrzne procka-dirx
Set Portd.5 'podciąganie wewnętrzne procka-diry
Set Portd.6 'podciąganie wewnętrzne procka-dirz
Set Portb.2 'podciąganie wewnętrzne procka-przerwanie 2
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Krokx = 1 'wartość początkowa
Kroky = 1 'wartość początkowa
Krokz = 1 'wartość początkowa
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Enable Int0 'włączenie przerwania 0
Enable Int1 'włączenie przerwania 1
Enable Int2 'włączenie przerwania 2
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
On Int0 Krokx Nosave 'procedura obsługi 0 przrwania
On Int1 Kroky Nosave 'procedura obsługi 1 przrwania
On Int2 Krokz Nosave 'procedura obsługi 2 przrwania
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Krokix(1) = &B11110001 'tablica kroków x
Krokix(2) = &B11110011 'tablica kroków x
Krokix(3) = &B11110010 'tablica kroków x
Krokix(4) = &B11110110 'tablica kroków x
Krokix(5) = &B11110100 'tablica kroków x
Krokix(6) = &B11111100 'tablica kroków x
Krokix(7) = &B11111000 'tablica kroków x
Krokix(8) = &B11111001 'tablica kroków x
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Krokiy(1) = &B10001111 'tablica kroków y
Krokiy(2) = &B11001111 'tablica kroków y
Krokiy(3) = &B01001111 'tablica kroków y
Krokiy(4) = &B01101111 'tablica kroków y
Krokiy(5) = &B00101111 'tablica kroków y
Krokiy(6) = &B00111111 'tablica kroków y
Krokiy(7) = &B00011111 'tablica kroków y
Krokiy(8) = &B10011111 'tablica kroków y
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Krokiz(1) = &B10000000 'tablica kroków z
Krokiz(2) = &B11000000 'tablica kroków z
Krokiz(3) = &B01000000 'tablica kroków z
Krokiz(4) = &B01100000 'tablica kroków z
Krokiz(5) = &B00100000 'tablica kroków z
Krokiz(6) = &B00110000 'tablica kroków z
Krokiz(7) = &B00010000 'tablica kroków z
Krokiz(8) = &B10010000 'tablica kroków z
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Do 'pętla
'pętla
Loop 'pętla

End 'koniec programu
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Krokx: 'obsługa 1 przerwania
Disable Interrupts 'wyłączenie przerwań
If Pind.4 = 0 Then 'jeżeli pind.4 ma stan niski to:
If Krokx > 2 Then Decr Krokx Else Krokx = 8 'jeżeli krokx większy od 2 wtedy zmniejsz krokx w przeciwnym wypadku krokx równa się 8
Elseif Pind.4 = 1 Then 'innaczej jeśeli pind.4 ma stan wysoki to:
If Krokx < 8 Then Incr Krokx Else Krokx = 1 'jeżeli krokx mniejszy od 8 wtedy zwiększ krokx w przeciwnim wypadku krokx równa się 1
End If 'koniec warunku
Portc = Krokix(krokx) And Krokiy(kroky) 'wyjście kroków na port c
Enable Interrupts 'włączenie przerwań
Return 'powrót do miejsca wywołania
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Kroky: 'obsługa 1 przerwania
Disable Interrupts 'wyłączenie przerwań
If Pind.5 = 0 Then 'jeżeli pind.5 ma stan niski to:
If Kroky > 2 Then Decr Kroky Else Kroky = 8 'jeżeli kroky większy od 2 wtedy zmniejsz kroky w przeciwnym wypadku kroky równa się 8
Elseif Pind.5 = 1 Then 'innaczej jeśeli pind.5 ma stan wysoki to:
If Kroky < 8 Then Incr Kroky Else Kroky = 1 'jeżeli kroky mniejszy od 8 wtedy zwiększ kroky w przeciwnim wypadku kroky równa się 1
End If 'koniec warunku
Portc = Krokiy(kroky) And Krokix(krokx) 'wyjście kroków na port c
Enable Interrupts 'włączenie przerwań
Return 'powrót do miejsca wywołania
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Krokz: 'obsługa 1 przerwania
Disable Interrupts 'wyłączenie przerwań
If Pind.6 = 0 Then 'jeżeli pind.6 ma stan niski to:
If Krokz > 2 Then Decr Krokz Else Krokz = 8 'jeżeli krokz większy od 2 wtedy zmniejsz krokz w przeciwnym wypadku krokz równa się 8
Elseif Pind.6 = 1 Then 'innaczej jeśeli pind.6 ma stan wysoki to:
If Krokz < 8 Then Incr Krokz Else Krokz = 1 'jeżeli krokz mniejszy od 8 wtedy zwiększ krokz w przeciwnim wypadku krokz równa się 1
End If 'koniec warunku
Porta = Krokiz(krokz) 'wyjście kroków na port a
Enable Interrupts 'włączenie przerwań
Return
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''


i teraz mam do kolegów piszących coś w bascom pytanie:
wg noty katalogowej mega8535 ma 3 zewnętrzne przerwania 0, 1 i 2
co można zrobić bo to 2 przerwanie chodziło ???
albo jak to zrobić ???
dzięki z wskazówki
george2002

PS.
Załączam też notę katalogową mega8535 :)
Załączniki
atmega8535.pdf
(215.14 KiB) Pobrany 788 razy

Awatar użytkownika

ottop
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 10
Posty: 346
Rejestracja: 07 cze 2004, 13:11
Lokalizacja: Bielsko-Biała
Kontakt:

#20

Post napisał: ottop » 13 wrz 2004, 17:07

Jeśli błąd generuje ta linia:

Config Int2 = Falling 'konfiguracja przewrania 2

to można ją pominąć - za to na jakie zbocze ma reagować przerwanie INT2 odpowiada bit ISC2 w rejestrze MCUCSR - standartowo ustawiony (wartość początkowa) na 0 (falling edge)

Natomiast przerwanie INT2 można uruchomić ustawiając poprostu bit 5 (INT2) w rejestrze GICR

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Elektronika CNC”