Siųsti duomenų ATmega32 į AT89S51 per SPI .... help!

F

freakkaito

Guest
Noriu siųsti duomenis AT89S51 nuo ATMEGA32 per SPI uosto, tai mane taip sunku, yra ten kas nors galėtų man padėti.

Aš atlikau šį kodą į iniciacijos AT89s51, bet nėra atsakinga ne visi.Mano AVR naudoti XTAL 4MHz ir AT89s naudoti 16MHz, ir mano perduoti laikrodis 1 MHz (1 / 4 AVR laikrodis arba 1 / 16 at89s laikrodis, tai ką jie parašė ant lapo).Aš naudoju WinAVR parengti ją.

# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# include <avr/pgmspace.h>
# include <avr/io.h>
# include <avr/interrupt.h># include "global.h"
# include "lcd.h"

# define SPI_USEINT

LC targetInit (void);
void targetClear (void);
uint8_t spiTransferByte (uint8_t duomenis);
lakiųjų u08 spiTransferComplete;
void spiInit (void);int main (void)
(

# ifdef SPI_USEINT
Signalas (SIG_SPI)
(
spiTransferComplete = TRUE;
)
# endiflcd_init (LCD_DISP_ON);
spiInit ();
pradžia:
if (! targetInit ())
(
lcd_gotoxy (0,1);
lcd_puts ( "Target Klaida");delay1s ();
goto pradžia;
)
kitas
(
lcd_clrscr ();
lcd_puts ( "tikslinė OK");
)

targetClear ();
_delay_ms (100);
spiTransferByte (0xAA) / / rašyti 0xAA nukreipti
)
LC targetInit (tuščia)
(
spiTransferByte (0xac) / / Siųsti pirmasis baitas
spiTransferByte (0x53); / / Siųsti antrasis baitas
spiTransferByte (0) / / Siųsti 3. baitas
if (spiTransferByte (0) == 105) / / atsa turėtų būti 105 dešimtųjų arba 69 HEX
(
return (1);
)
kitas
(
return (0);
)
)

tuščia targetClear (tuščia)
(
spiTransferByte (0xac) / / target aiškus nurodymas
spiTransferByte (0x80);
spiTransferByte (0);
spiTransferByte (0);
)
uint8_t spiTransferByte (uint8_t duomenys)
(

# ifdef SPI_USEINT

spiTransferComplete = false;
outb (SPDR duomenys) / / Siųsti duomenis

while (! spiTransferComplete);
# else

outb (SPDR duomenys) / / Siųsti duomenis

while (! (INB (SPSR) & (1 <<SPIF))) / / laukti apdaila
# endif

grįžti INB (SPDR) / / get return duomenų
)tuščia spiInit (tuščia)
(Skaičius (PORTB, 7) / / set SCK hi
Skaičius (DDRB, 7) / / set SCK kaip produkcija
CBI (DDRB, 6); / / set Miso kaip pirkimo
Skaičius (DDRB, 5) / / set MOSI kaip produkcija
Skaičius (DDRB, 4) / / SS turi būti produkcija Meistras režimu dirbti/ / Setup SPI sąsaja:

Skaičius (SPCR, MSTR) / / kapitonas būdas

CBI (SPCR, SPR0) / / clock = f / 4
CBI (SPCR, SPR1);

CBI (SPCR, DORD) / / MSB pirmą

Skaičius (SPCR, SPĮ); / / Enable SPI
INB (SPSR);/ / Enable SPI pertraukti

Skaičius (SPCR, SPIE);

)

Mano diplay yra LCD 16x2.Prašome kai kūno help me ....

 
ieškoti kodą į zip failą.89S51 neturi aparatūros SPI, todėl jūs turite naudoti bit-bang SPI nusistovėjusią tvarką zip failas aš išsiųsta.Pasirinkite teisė vieną Clock Rate pasirinkote savo AVR.

Taip pat atsižvelgiama į PDF failą žiūrėti.Ji gali duoti jums keletą idėjų.

Sėkmės

 
bet kaip apie ISP programmer, jie naudoja tą patį PIN, SPI, MOSI, Miso ir SCK.kai draugai man pasakė, kad aš galiu siųsti serijos duomenimis per SPI-ISP, I just don't know how, bet vis tiek ačiū už šaltinį ir atsakymą I'll išmokti ją.<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />
 
freakkaito rašė:

bet kaip apie ISP programmer, jie naudoja tą patį PIN, SPI, MOSI, Miso ir SCK.
kai draugai man pasakė, kad aš galiu siųsti serijos duomenimis per SPI-ISP, I just don't know how, bet vis tiek ačiū už šaltinį ir atsakymą I'll išmokti ją.<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />
 
Citata:

Mano AVR naudoti XTAL 4MHz ir AT89s naudoti 16MHz, ir mano perduoti laikrodis 1 MHz (1 / 4 AVR laikrodis arba 1 / 16 at89s laikrodis, tai ką jie parašė ant lapo).
 

Welcome to EDABoard.com

Sponsor

Back
Top