WGR-V
 
Lade ...
Suche ...
Keine Treffer
wgrhal.h
gehe zur Dokumentation dieser Datei
1
9#ifndef WGRHAL_H
10#define WGRHAL_H
11
12#define MALLOC
13#define PWM_NOTES
14#define SSD1351
15
16#include "wgrtypes.h"
17
21#define SYSTEM_CLOCK 10000000
22
26#ifndef HWREG32
27#define HWREG32(addr) (*((volatile uint32_t *)(addr)))
28#endif
29
33#define nop() __asm__ volatile("nop")
34
38#define DEBUG_ADDR 0x00000100
39
43#define UART_BASE_ADDR 0x00000200
47#define UART_CTRL_OFFSET 0x00
51#define UART_BAUD_OFFSET 0x04
55#define UART_STATUS_OFFSET 0x08
59#define UART_TX_OFFSET 0x0C
63#define UART_RX_OFFSET 0x10
64
68#define TIME_BASE_ADDR 0x00000300
72#define TIME_MS_L_OFFSET 0x00
76#define TIME_MS_H_OFFSET 0x04
80#define TIME_MIK_L_OFFSET 0x08
84#define TIME_MIK_H_OFFSET 0x0C
88#define SYS_CLK_OFFSET 0x10
89
93#define PWM_BASE_ADDR 0x00000400
97#define PWM_PERIOD_OFFSET 0x00
101#define PWM_DUTY_OFFSET 0x04
105#define PWM_COUNTER_OFFSET 0x08
109#define PWM_CTRL_OFFSET 0x0C
110
114#define GPIO_BASE_ADDR 0x00000800
118#define GPIO_DIR_OFFSET 0x0000
122#define GPIO_IN_OFFSET 0x0004
126#define GPIO_OUT_OFFSET 0x0008
130#define GPIO_OUT_STEP 0x04
134#define GPIO_PIN_COUNT 8
135
139#define DEFAULT_TIMEOUT 10
140
141/* Standard Memory Functions */
150void *memcpy(void *dest, const void *src, uint32_t n);
151
160void *memset(void *dest, int32_t c, uint32_t n);
161
170void *memmove(void *dest, const void *src, uint32_t n);
171
172/* Standard String Functions */
179uint32_t strlen(const char *s);
180
188int32_t strcmp(const char *s1, const char *s2);
189
198int32_t strncmp(const char *s1, const char *s2, uint32_t n);
199
207char *strcpy(char *dest, const char *src);
208
216void int_to_str(int32_t num, int base, char *str);
217
224int32_t parse_integer(const char *str);
225
233int32_t parse_int_multi(const char *str, const char **next);
234
235/* Writing to Debug Register */
241void debug_write(uint32_t value);
242
243/* UART Functions */
247void uart_enable(void);
248
252void uart_disable(void);
253
259void uart_set_baud(baud_sel_t baud);
260
266uint32_t uart_get_status(void);
267
273uint32_t uart_is_ready(void);
274
280uint32_t uart_is_busy(void);
281
287uint32_t uart_rx_full(void);
288
294uint32_t uart_rx_empty(void);
295
301uint32_t uart_tx_full(void);
302
308uint32_t uart_tx_empty(void);
309
316int32_t uart_wait_tx_full(uint32_t timeout_ms);
317
324int32_t uart_wait_rx_data(uint32_t timeout_ms);
325
333int32_t uart_write_byte(uint8_t data, uint32_t timeout_ms);
334
342int32_t uart_putchar(char c, uint32_t timeout_ms);
343
350
359int32_t uart_write_buffer(const uint8_t *buffer, uint32_t length, uint32_t timeout_ms);
360
368int32_t uart_read_byte(uint8_t *data, uint32_t timeout_ms);
369
376char uart_getchar(uint32_t timeout_ms);
377
386int32_t uart_read_buffer(uint8_t *buf, uint32_t length, uint32_t timeout_ms);
387
394void uart_send_uint32(uint32_t value, uint32_t timeout_ms);
395
402void uart_print_uint(uint32_t num, int32_t base);
403
409void uart_print_int(int32_t num);
410
416void uart_print(const char *s);
417
418/* Time Functions */
424uint32_t get_sys_clk(void);
425
429void millis_reset(void);
430
436uint64_t millis_long(void);
437
443uint32_t millis(void);
444
448void micros_reset(void);
449
455uint64_t micros_long(void);
456
462uint32_t micros(void);
463
469void delay(uint32_t ms);
470
476void delay_micro(uint32_t microsec);
477
478/* PWM Functions */
484void pwm_set_period(uint32_t period);
485
491void pwm_set_duty(uint32_t duty);
492
498uint32_t pwm_get_period(void);
499
505uint32_t pwm_get_duty(void);
506
512uint32_t pwm_get_counter(void);
513
519void pwm_set_control(uint32_t control);
520
526uint32_t pwm_get_control(void);
527
533void pwm_set_mode(uint8_t enable_pwm);
534
540uint32_t pwm_get_mode(void);
541
547void pwm_set_50_percent_mode(uint8_t enable);
548
554void pwm_set_pre_counter(uint16_t pre_counter);
555
561uint32_t pwm_get_pre_counter(void);
562
563/* GPIO Functions */
570void gpio_write_pin(uint8_t pin, uint8_t value);
571
577uint8_t gpio_read_all_pins(void);
578
585uint8_t gpio_read_pin(uint8_t pin);
586
593void gpio_set_direction(uint8_t pin, uint8_t direction);
594
601uint8_t gpio_read_direction(uint8_t pin);
602
603#endif /* WGRHAL_H */
void pwm_set_mode(uint8_t enable_pwm)
Aktiviert oder deaktiviert den PWM-Modus.
Definition wgrhal.c:604
uint32_t uart_is_busy(void)
Prüft, ob die UART beschäftigt ist.
Definition wgrhal.c:288
uint32_t pwm_get_mode(void)
Liest den aktuellen PWM-Modus.
void pwm_set_50_percent_mode(uint8_t enable)
Aktiviert oder deaktiviert den 50%-Modus des PWM.
Definition wgrhal.c:614
void gpio_set_direction(uint8_t pin, uint8_t direction)
Setzt die Richtung eines GPIO-Pins.
Definition wgrhal.c:665
uint32_t uart_tx_empty(void)
Prüft, ob der UART-Sende-Puffer leer ist.
Definition wgrhal.c:308
int32_t uart_read_buffer(uint8_t *buf, uint32_t length, uint32_t timeout_ms)
Liest einen Puffer von Bytes von der UART-Schnittstelle.
Definition wgrhal.c:410
void gpio_write_pin(uint8_t pin, uint8_t value)
Schreibt einen Wert auf einen GPIO-Pin.
Definition wgrhal.c:643
uint32_t get_sys_clk(void)
Liest die Systemtaktfrequenz.
Definition wgrhal.c:492
int32_t uart_write_buffer(const uint8_t *buffer, uint32_t length, uint32_t timeout_ms)
Sendet einen Puffer von Bytes über die UART-Schnittstelle.
Definition wgrhal.c:369
void int_to_str(int32_t num, int base, char *str)
Konvertiert eine Ganzzahl in einen String.
Definition wgrhal.c:122
char uart_getchar(uint32_t timeout_ms)
Liest ein Zeichen von der UART-Schnittstelle.
Definition wgrhal.c:399
uint8_t gpio_read_direction(uint8_t pin)
Liest die Richtung eines GPIO-Pins.
Definition wgrhal.c:681
int32_t parse_int_multi(const char *str, const char **next)
Parst eine Ganzzahl aus einem String und gibt den Zeiger auf das nächste Zeichen zurück.
Definition wgrhal.c:205
int32_t uart_read_byte(uint8_t *data, uint32_t timeout_ms)
Liest ein Byte von der UART-Schnittstelle.
Definition wgrhal.c:388
uint32_t uart_rx_full(void)
Prüft, ob der UART-Empfangspuffer voll ist.
Definition wgrhal.c:293
uint32_t uart_rx_empty(void)
Prüft, ob der UART-Empfangspuffer leer ist.
Definition wgrhal.c:298
uint8_t gpio_read_all_pins(void)
Liest alle GPIO-Pins.
Definition wgrhal.c:651
int32_t parse_integer(const char *str)
Parst einen String in eine Ganzzahl.
Definition wgrhal.c:165
int32_t uart_wait_rx_data(uint32_t timeout_ms)
Wartet darauf, dass Daten im Empfangspuffer vorhanden sind, bis zu einer Zeitüberschreitung.
Definition wgrhal.c:328
void delay_micro(uint32_t microsec)
Verzögert die Ausführung um eine bestimmte Anzahl an Mikrosekunden.
Definition wgrhal.c:554
void uart_set_baud(baud_sel_t baud)
Setzt die Baudrate der UART-Schnittstelle.
Definition wgrhal.c:269
int32_t uart_putchar(char c, uint32_t timeout_ms)
Sendet ein Zeichen über die UART-Schnittstelle.
Definition wgrhal.c:359
uint32_t pwm_get_duty(void)
Liest das aktuelle PWM-Duty-Cycle.
Definition wgrhal.c:584
uint32_t uart_get_status(void)
Liest den Status der UART-Schnittstelle.
Definition wgrhal.c:278
void pwm_set_period(uint32_t period)
Setzt die PWM-Periode.
Definition wgrhal.c:569
uint64_t millis_long(void)
Liest einen langen Millisekunden-Zähler.
Definition wgrhal.c:502
void pwm_set_pre_counter(uint16_t pre_counter)
Setzt den Pre-Counter für PWM.
Definition wgrhal.c:624
void debug_write(uint32_t value)
Schreibt einen Wert in das Debug-Register.
Definition wgrhal.c:246
void micros_reset(void)
Setzt den Mikrosekunden-Zähler zurück.
Definition wgrhal.c:521
void uart_putchar_default_timeout(char c)
Sendet ein Zeichen über die UART-Schnittstelle mit voreingestelltem Timeout.
Definition wgrhal.c:364
void delay(uint32_t ms)
Verzögert die Ausführung um eine bestimmte Anzahl an Millisekunden.
Definition wgrhal.c:545
void uart_print(const char *s)
Gibt einen String über die UART aus.
Definition wgrhal.c:478
void pwm_set_control(uint32_t control)
Setzt den PWM-Kontrollwert.
Definition wgrhal.c:594
int32_t strcmp(const char *s1, const char *s2)
Vergleicht zwei Strings.
Definition wgrhal.c:86
void pwm_set_duty(uint32_t duty)
Setzt das PWM-Duty-Cycle.
Definition wgrhal.c:574
void * memcpy(void *dest, const void *src, uint32_t n)
Kopiert n Bytes von src nach dest.
Definition wgrhal.c:26
void millis_reset(void)
Setzt den Millisekunden-Zähler zurück.
Definition wgrhal.c:497
void uart_disable(void)
Deaktiviert die UART-Schnittstelle.
Definition wgrhal.c:263
void uart_send_uint32(uint32_t value, uint32_t timeout_ms)
Sendet einen 32-Bit-Wert über die UART-Schnittstelle.
Definition wgrhal.c:427
uint32_t uart_is_ready(void)
Prüft, ob die UART bereit ist.
Definition wgrhal.c:283
uint32_t uart_tx_full(void)
Prüft, ob der UART-Sende-Puffer voll ist.
Definition wgrhal.c:303
uint32_t pwm_get_counter(void)
Liest den aktuellen PWM-Zählerstand.
Definition wgrhal.c:589
void * memset(void *dest, int32_t c, uint32_t n)
Setzt n Bytes im Zielpuffer auf den Wert c.
Definition wgrhal.c:37
int32_t uart_wait_tx_full(uint32_t timeout_ms)
Wartet darauf, dass der Sende-Puffer voll wird, bis zu einer Zeitüberschreitung.
Definition wgrhal.c:313
int32_t strncmp(const char *s1, const char *s2, uint32_t n)
Vergleicht maximal n Zeichen zweier Strings.
Definition wgrhal.c:96
void * memmove(void *dest, const void *src, uint32_t n)
Kopiert n Bytes von src nach dest, wobei sich überlappende Speicherbereiche korrekt behandelt werden.
Definition wgrhal.c:47
char * strcpy(char *dest, const char *src)
Kopiert einen String von src nach dest.
Definition wgrhal.c:114
void uart_print_uint(uint32_t num, int32_t base)
Gibt eine positive Ganzzahl in einem bestimmten Zahlensystem über die UART aus.
Definition wgrhal.c:438
int32_t uart_write_byte(uint8_t data, uint32_t timeout_ms)
Sendet ein Byte über die UART-Schnittstelle.
Definition wgrhal.c:343
uint32_t millis(void)
Liest den aktuellen Millisekunden-Zähler (32-Bit).
Definition wgrhal.c:516
uint64_t micros_long(void)
Liest einen langen Mikrosekunden-Zähler.
Definition wgrhal.c:526
uint8_t gpio_read_pin(uint8_t pin)
Liest den Zustand eines bestimmten GPIO-Pins.
Definition wgrhal.c:656
uint32_t pwm_get_control(void)
Liest den aktuellen PWM-Kontrollwert.
Definition wgrhal.c:599
uint32_t strlen(const char *s)
Bestimmt die Länge eines Strings.
Definition wgrhal.c:76
void uart_print_int(int32_t num)
Gibt eine Ganzzahl über die UART aus.
Definition wgrhal.c:467
uint32_t pwm_get_period(void)
Liest die aktuelle PWM-Periode.
Definition wgrhal.c:579
uint32_t micros(void)
Liest den aktuellen Mikrosekunden-Zähler (32-Bit).
Definition wgrhal.c:540
uint32_t pwm_get_pre_counter(void)
Liest den aktuellen Pre-Counter für PWM.
Definition wgrhal.c:631
void uart_enable(void)
Aktiviert die UART-Schnittstelle.
Definition wgrhal.c:257