Skip to content

Instantly share code, notes, and snippets.

@avr-programmierung
avr-programmierung / spi-flash-02.c
Created May 16, 2019 11:41
ATmega88 @ 8MHz SPI-Kommunikation mit Flash-Speicher SST25VF016B
/* spi_flash_02.c
* SPI-Kommunikation mit Flash-Speicher SST25VF016B
* 1.) Statusregister lesen
* 2.) Ein Byte auf Adresse 000101 schreiben
* 3.) Ein Byte von Adresse 000101 lesen
* 4.) Kompletten Flashspeicher löschen
* Controller: ATmega88 @ 8MHz
*/
#include <avr/io.h>
#define WP (1<<PC5) // Write Protect disable @PC5
@avr-programmierung
avr-programmierung / spi-flash-01.c
Created May 16, 2019 11:38
ATmega88 @ 8MHz SPI-Kommunikation mit Flash-Speicher SST25VF016B und Auslesen des Statusregisters
/* spi_flash_01.c
* SPI-Kommunikation mit Flash-Speicher SST25VF016B und Auslesen des Statusregisters
* Controller: ATmega88 @ 8MHz
*/
#include <avr/io.h>
#define WP (1<<PC5) // Write Protect disable @ PC5
#define HOLD (1<<PC4) // Stop serial communication disable @ PC4
#define CE (1<<PB2) // Chip Enable @ PB2
#define MOSI (1<<PB3) // Master Out Slave In @ PB3
#define MISO (1<<PB4) // Master In Slave Out @ PB4
@avr-programmierung
avr-programmierung / spi-receive-02.c
Created May 16, 2019 11:34
ATmega88 @ 8MHz SPI-Slave - Daten am MOSI per Interrupt Anforderung empfangen und am PORTD ausgeben
/*
* spi_receive_02.c
* SPI-Slave - Daten am MOSI per Interrupt Anforderung empfangen und am PORTD ausgeben
* Controller: ATmega88 @ 8MHz
*/
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
void SPI_Slave_Init(void)
@avr-programmierung
avr-programmierung / spi-receive-01.c
Created May 16, 2019 11:18
ATmega88 @ 8MHz SPI-Slave - Daten am MOSI empfangen und am PORTD ausgeben
/* * spi_receive_01.c
* SPI-Slave - Daten am MOSI empfangen und am PORTD ausgeben
* Controller: ATmega88 @ 8MHz
*/
#include <avr/io.h>
#include <util/delay.h>
void SPI_Slave_Init(void)
{
SPCR &= ~(1<<MSTR); // Controller = Slave
@avr-programmierung
avr-programmierung / spi-master-datenuebertragung.c
Last active May 16, 2019 11:14
ATmega88 @ 1MHz SPI-Master - Datenübertragung zweier 8-Bit Daten (11010010 und 10000001)
/*
* spi_send_01.c
* SPI-Master - Datenübertragung
* Übertragung zweier 8-Bit Daten (11010010 und 10000001)
* Controller: ATmega88 @ 1MHz
*/
#include <avr/io.h>
#include <util/delay.h>
void SPI_Master_Init(void)
@avr-programmierung
avr-programmierung / led-fading-04.c
Created May 16, 2019 11:12
ATmega88 @ 1MHz LED fading 04 with 10bit valuetable and phasecorrect pwm
/*
* LED_fading_04.c
* with 10bit valuetable and phasecorrect pwm
* Controller: ATmega88 @ 1MHz
*/
#include <avr/io.h>
#include <util/delay.h>
#define button_down (!(PIND & (1<<PIND2)))
#define button_up (PIND & (1<<PIND2))
@avr-programmierung
avr-programmierung / led-fading-03.c
Created May 16, 2019 11:06
ATmega88 @ 8MHz LED fading 03
/*
* LED_fading_03.c
* Controller: ATmega88 @ 8MHz
*/
#include <avr/io.h>
#include <util/delay.h>
#include // Einbinden der Headerdatei math.h für mathematische Funktionen
int main(void)
{
@avr-programmierung
avr-programmierung / led-fading-02.c
Created May 16, 2019 11:04
ATmega88 @ 8MHz LED fading 02 with 10bit valuetable and phasecorrect pwm
/*
* LED_fading_02.c
* with 10bit valuetable and phasecorrect pwm
* Controller: ATmega88 @ 8MHz
*/
#include <avr/io.h>
#include <util/delay.h>
const unsigned int pwm_table_10[64] =
@avr-programmierung
avr-programmierung / led-fading-01.c
Created May 16, 2019 11:02
ATmega88 @ 8MHz LED fading 01
/* LED_fading_01.c ATmega88 @ 8MHz */
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRB |= (1<<PB1); // OC1A = output
ICR1 = 1000; // Top Value = 1000
OCR1A = 750; // Compare Match bei 750
@avr-programmierung
avr-programmierung / phasecorrect.c
Created May 16, 2019 10:59
ATmega88 @ 8MHz Phasenkorrektur
/* pwm_phasecorrect_01.c ATmega88 @ 8MHz */
#include <avr/io.h>
int main(void)
{
DDRB |= (1<<PB1); // OC1A = Ausgang
ICR1 = 1000; // ICR = Top Wert bei 1000
OCR1A = 750; // Compare Match für OC1A bei 500
// Mode 10: PWM, Phase Correct, Prescaler = 8, Clear OC1A on compare match