Skip to content

Instantly share code, notes, and snippets.

@avr-programmierung
avr-programmierung / dotmatrix.c
Created May 16, 2019 12:47
ATmega88 @ 8MHz Dotmatrix Display 5x7
/*
* dotmatrix_1.c
* ATmega88 @ 8MHz
* Dotmatrix Display 5x7
* Zeilen = Kathode
* Spalten = Anode
*
* D0 -|--|--|--|--|-
* D1 -|--|--|--|--|-
* D2 -|--|--|--|--|-
@avr-programmierung
avr-programmierung / zufallszahlen.c
Created May 16, 2019 12:46
ATmega88 @ 8MHz Zufallszahlen
/* zufallszahlen_01.c
* ATmega88 @ 8MHz */
#include
#include <avr/io.h>
uint16_t zufallszahl, zz, wuerfelzahl, eins=0, zwei=0, drei=0, vier=0, fuenf=0, sechs=0;
int main(void)
{
for (uint16_t i=0; i<100; i++) // 100 Durchläufe erzeugen
@avr-programmierung
avr-programmierung / lcd-ausgabe.c
Created May 16, 2019 12:43
ATmega88 @ 8MHz LCD Ausgabe für Hitachi HD44780 kompatible LCD Controller
/****************************************************************
* LCD Ausgabe für Hitachi HD44780 kompatible LCD Controller
* LCD-Initialisierung: 4-Bit Interface
* Mikrocontroller: ATmega88 @ 8MHz
* LCD-Display: Displaytech 162B (LCD-Controller KS0070B)
*
* Konfiguration: PORT D7 = LCD D7
* PORT D6 = LCD D6
* PORT D5 = LCD D5
* PORT D4 = LCD D4
/*
* pointer_01.c
*/
#include <avr/io.h>
char data; // Datentyp char für Zeichen
uint8_t i;
void lcd_write(char *t) // *t = Pointer auf übergebenes Zeichen
{
@avr-programmierung
avr-programmierung / 7-segment-multiplex.c
Created May 16, 2019 12:39
ATmega88 @ 8MHz display_value wird am PORTB im Multiplexbetrieb ausgegeben
/* display_value wird am PORTB im Multiplexbetrieb ausgegeben
* Controller: ATmega88 @ 8MHz */
#include <avr/io.h>
#include <util/delay.h>
uint16_t display_value;
uint8_t einer, rest, zehner, hunderter;
#define T1 0xFE // Transistor 1 = ON (T1 = 11111110)
#define T2 0xFD // Transistor 2 = ON (T2 = 11111101)
@avr-programmierung
avr-programmierung / lightsensor-isl29020.c
Created May 16, 2019 12:36
ATmega88 @ 8MHz Lichtmessung (alle 200ms) und Ausgabe der Lichtstärke in Lux in der Variablen "lux_value"
/* Light_Sensor_ISL29020.c
* Lichtmessung (alle 200ms) und Ausgabe der Lichtstärke in Lux in der Variablen "lux_value"
* Ein möglicher Übertragungsfehler (ERROR) wird durch eine LED an PB1 angezeigt
* CPU: ATmega88, FCPU = 8MHz
* I²C CLK Frequency = 62,5kHz, --> CLK Frequency = FCPU/(16 + 2*(TWBR)*Prescaler Value)
*/
#include <avr/io.h>
#include <util/delay.h>
#define START 0x08 // A START condition has been transmitted
@avr-programmierung
avr-programmierung / lm75-tempsensor.c
Created May 16, 2019 12:33
ATmega88 @ 8MHz Temperaturmessung (5x pro Sekunde) und Ausgabe der Temperatur als Binärwert am PORTD
/*
* LM75_Tempsensor.c
* Temperaturmessung (5x pro Sekunde) und Ausgabe der Temperatur als Binärwert am PORTD
* Eine negative Temperatur wird zusätzlich durch eine LED an PB0 angezeigt
* CPU: ATmega88
* FCPU: 8MHz
* I²C CLK Frequency = 100kHz, CLK = 8000000/(16 + 2*(0x50)*1)
*/
#include <avr/io.h>
#include <util/delay.h>
@avr-programmierung
avr-programmierung / usart-interrupt-demo.c
Created May 16, 2019 12:30
ATmega88 @ 8MHz Funktionen zum Senden und Empfangen eines Bytes per USART-Rx-Interrupt
/*
* usart_interrupt_demo_01.c
* Funktionen zum Senden und Empfangen eines Bytes per USART-Rx-Interrupt
* Controller: ATmega88 @ 8MHz
*/
#include <avr/interrupt.h> // Headerdatei für Interrupts einbinden
...
...
void USART_Init( uint16_t ubrr)
{
@avr-programmierung
avr-programmierung / uart-demo.c
Created May 16, 2019 11:53
ATmega88 @ 8MHz Initialisierung der UART, 9600, 8N1; unter Verwendung von Marcos
/*
* uart_demo_01.c
* Initialisierung der UART, 9600, 8N1; unter Verwendung von Marcos
* Funktionen zum Senden und Empfangen eines Bytes im Polling
* Ein empfangenes Zeichen wieder senden und am PortB ausgeben * Pinbelegung der UART-Schnittstelle: Tx = PD1, Rx = PD0
* Controller: ATmega88 @ 8MHz
*/
#include <avr/io.h>
#define FOSC 8000000 // Set clock Speed in Hz
@avr-programmierung
avr-programmierung / usi-spi.c
Created May 16, 2019 11:50
ATtiny44 @ 1MHz Initialisierung der USI Schnittstelle (SPI Mode)
/*
* usi_spi_01.c
* Controller: ATtiny44 @ 1MHz
*/
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
void SPI_init(void) // Initialisierung der USI Schnittstelle (SPI Mode)
{