void SPI_SlaveInit(void)
{
DDRB |= (1<<PORTB4);//Set MISO to output
SPCR = (1<<SPE);
}
char SPI_SlaveReceive(void)
{
char data;
while(!(SPSR & (1<<SPIF)))
{}
data = SPDR;
SPDR = 0;
return data;
}
void SPI_SlaveSend(char data)
{
SPDR = data;
while(!(SPSR & (1<<SPIF)))
{}
SPDR = 0;
}
Eine Sammlung von meinen Projekten aus den Bereichen Physik, Elektronik, Informatik und sogar ein bisschen Botanik. Dieser Blog soll einerseits Hilfestellung bei Problemen geben aber andererseits auch als Anregung für weitere Projekte dienen. Falls es zu einem Thema Fragen oder Anregungen gibt: Einfach schnell einen Kommentar schreiben oder das Kontaktformular rechts unten benutzen, ich beantworte das normalerweise innerhalb von einem Tag.
AdSense
Sonntag, 26. Mai 2013
ATmega - Hardware-SPI
(English version) SPI-Kommunikation kann ziemlich praktisch sein (z.B. um einen Raspberry PI mit ATMegas um weitere Digitalkanäle zu erweitern). Für das SPI-Interface am ATMega8 habe ich jedoch kaum Informationen gefunden, daher hier der Code, welchen ich nach langem Zusammensuchen hatte. Die einzelnen Funktionen sollten selbsterklärend sein:
Abonnieren
Kommentare zum Post (Atom)
Welches Header File wurde benutzt zur Definition von SPE, PORTB4,SPIF?
AntwortenLöschenIch benutze das AVR Studio, da gibt es dann avr/io.h, da sollte alles drin sein.
LöschenIch habe versucht alles direkt im RPI zu bauen also ohne AVR Studio
Löschenhttp://www.instructables.com/id/Programming-the-ATtiny85-from-Raspberry-Pi/
avr/io.h ist zwar eingebaut aber die Konstanten werden in diesem Setup dennoch nicht gefunden
Damit habe ich mich leider noch nie auseinander gesetzt. Einerseits könnte es sein, dass bei dem ATtiny ein paar Konstanten nicht so sind wie beim ATmega, andererseits könnte es auch sein, dass die avr/io.h nicht dieselbe ist, welche im AVR Studio benutzt wird.
LöschenSchade in der Community rund um den RPI versucht man schon etwas länger die RGB LED WS2812 zum spielen zu bringen. Auf direkten Weg ist das noch nicht gelungen aber mit dem ATtiny85 als Interface funktioniert es sicher. Jetzt fehlt eben nur noch ein SPI Interface
LöschenMit deiner Arbeit dachte ich an folgende Lösungsschritte
1) ATtiny85 chip source: ATtiny85 from https://guloshop.de/shop/Mikrocontroller/ATtiny85::16.html?XTCsid=mfji8lnvqtmkg01g3terp60se7
2) http://www.instructables.com/id/Programming-the-ATtiny85-from-Raspberry-Pi/
Programming the ATtiny85 from Raspberry Pi
3) https://github.com/cpldcpu/light_ws2812
This is a small Ansi-C library to control WS2811/WS2812 based RGB Leds and strings.