Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięshiftout i shiftin czyli komunikacja między MEGA32 i TINY13
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Witam.
Czy ktoś z Was ma działający przykład komunikacji między tymi dwoma prockami za pomocą podanych instrukcji?
Staram się wysłać jeden bajt z MEGA do TINY ale jakoś mi nie wychodzi.
Mam 3 połączone linie. Na jednej daję LOW(MEGA),co generuje przerwanie w TINY. Dotąd działa. Po stanie niskim MEGA wysyła liczbę integer poprzez shiftout. TINY w przerwaniu ma wpisane shiftin,ale reaguje tak jakby nic nie odebrał(wartość odebrana zawsze =0,a próbuję przesłać 6). Częstotliwość MEGA to 4MHz a TINY 1,2MHz (po preskalerze) dlatego w shiftout daję 5us przerwy między bitami. Fajnie by było gdyby ktoś z Was już miał podobny projekt. Jeśli nie macie to po południu wrzucę moje programy i może ktoś znajdzie błąd. Póki co nie chcę motać w głowach
Pozdrawiam
Michał
Czy ktoś z Was ma działający przykład komunikacji między tymi dwoma prockami za pomocą podanych instrukcji?
Staram się wysłać jeden bajt z MEGA do TINY ale jakoś mi nie wychodzi.
Mam 3 połączone linie. Na jednej daję LOW(MEGA),co generuje przerwanie w TINY. Dotąd działa. Po stanie niskim MEGA wysyła liczbę integer poprzez shiftout. TINY w przerwaniu ma wpisane shiftin,ale reaguje tak jakby nic nie odebrał(wartość odebrana zawsze =0,a próbuję przesłać 6). Częstotliwość MEGA to 4MHz a TINY 1,2MHz (po preskalerze) dlatego w shiftout daję 5us przerwy między bitami. Fajnie by było gdyby ktoś z Was już miał podobny projekt. Jeśli nie macie to po południu wrzucę moje programy i może ktoś znajdzie błąd. Póki co nie chcę motać w głowach
Pozdrawiam
Michał
Ja tam specem od bascoma nie jestem ale jak ci nie wyjdzie to moze zrób po asemblerowemu stworz sobie dwie rocedury wysyłąjące zero i jedynke a potem odwołaj sie do ktorejś zaleśnie od najmłodszego bitu.... potem obróć zmienną wysyłaną i to samo... owtarzasz 8 razy i wląne chyba nie taki był zamysł bascoma zeby w ten sposób wysyłąć i troche to napiechotne ale bedize działąć:)
Tiaa.
Referat też możesz wpisać w jednej linijce. Nie wnikam. Jeszcze dziś popróbuję,ale jak mi się nie uda to pewnie zrobię to na piechotę.
[ Dodano: 01-06-2006, 00:06 ]
Męczyłem pół nocy i nie potrafię. Zrobiłem na MEGA shiftout , a na tiny czytam kolejne bity. Jutro wkleję,chyba że uda mi się tak jak chciałem to też coś dam.
Ale mi się chce spać.ojejjjoooo, za 5 godzin wstaję....
[ Dodano: 02-06-2006, 22:31 ]
Tak jest w MEGA
A tak w TINY
Jak ktos wie jak uzyc w ATTINY instrukcji SHIFTIN to proszę o pomoc.Powyższy program działa,ale wolałbym to z SHIFTIN
Referat też możesz wpisać w jednej linijce. Nie wnikam. Jeszcze dziś popróbuję,ale jak mi się nie uda to pewnie zrobię to na piechotę.
[ Dodano: 01-06-2006, 00:06 ]
Męczyłem pół nocy i nie potrafię. Zrobiłem na MEGA shiftout , a na tiny czytam kolejne bity. Jutro wkleję,chyba że uda mi się tak jak chciałem to też coś dam.
Ale mi się chce spać.ojejjjoooo, za 5 godzin wstaję....
[ Dodano: 02-06-2006, 22:31 ]
Tak jest w MEGA
Kod: Zaznacz cały
'prog na procek ATMEGA32
'łączy się z ATTINY13 by przesłać mu dane
' tak połączono ATMEGA32 z ATTINY13
'SCK(PB7) ----T0/SCK(PB2)
'MISO(PB6) ----MISO/INT0(PB1)
'MOSI(PB5) ----MOSI/...(PB0)
'PB7 z ATMEGA32 bede uzywal do taktowania przesylanych danych -SCK
'PB6 z ATMEGA32 bede uzywal do wlaczenia przerwania w TINY
'PB5 z ATMEGA32 bede uzywal do przesylania danych.
$crystal = 1000000
$regfile = "m32def.dat"
Config Portb = Output
Dim Temp As Byte 'zmienna do wysylania
Do
Wait 5 'opoznienie petli
Temp = 10 'tu wartosc wysylana
Set Portb.7 'zegar w stan wysoki
Reset Portb.6 'rozpoczecie przerwania w tiny
Waitms 5 'mala przerwa zeby TINY byl gotowy
Shiftout Portb.5 , Portb.7 , Temp , 2 , 8 , 100 '2 oznacza wysylanie przy niskim stanie pinu zegarowego,jako pierwszy LSB
Waitms 5
Set Portb.6
Loop
End 'end program
Kod: Zaznacz cały
'ATTINY13
$regfile = "ATtiny13.dat"
$crystal = 1200000
Config Portb = $b00001000
Config Portb.3 = Output 'wyjsicem na glosnik jest portb.3
Config Pinb.0 = Input 'koncowka danych
Config Pinb.1 = Input 'przerwanie INT0
Config Pinb.2 = Input 'zegar
On Int0 Wprzerwaniu Nosave 'jesli wystapi przerwanie od INT0 to wlacz podprogram
Enable Int0 'wlacz przerwanie int0
Config Int0 = Falling 'przerwanie na opadajacym zboczu
Dim Temp As Integer , I As Integer 'tu tez dam TEMP,bedzie to samo
Temp = 0
Enable Interrupts 'wlacz system przerwan
Do 'nieskonczona petla
Loop
End
Wprzerwaniu: 'podprogram przerwania
Disable Interrupts
For I = 0 To 7
Bitwait Pinb.2 , Reset 'czekaj az zegar zacznie "tykac"
Temp.i = Pinb.0 'jak zegar na LOW to odczytuje bit
Bitwait Pinb.2 , Set 'jak zegar na HIGH to powrot do poczatku petli i czekamy na LOW
Next I
For I = 1 To Temp 'buzzer piszczy *temp* razy
Set Portb.3
Waitms 100
Reset Portb.3
Waitms 100
Next I
Enable Interrupts
Return
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 27 gości