Hallo zusammen
Ich habe folgendes Problem. Ich nutze einen ATtiny1614, mit dem ich einen 12PIN LCD Tn Positive 4-stelliges Segment display betreiben will. Allerdings bekomme ich bisher überhaupt nicht auf den Display. Vielleicht findet jemand ein Fehler den ich nicht sehe?
Den Display habe ich mit einem TM1621C zusammengehängt und den TM1621C mit dem ATtiny1614. Folgende pins:
ATtiny1614 - TM1621C PA1 - CS PA2 - WR PA3 - Data Gnd - VSS VDD - VDD
TM1621c - Display COM0 - COM1 (Pin1) COM1 - COM2 (Pin2) COM2 - COM3 (Pin3) COM3 - COM4 (Pin4) SEG0 - Pin5 SEG1 - Pin6 SEG2 - Pin7 SEG3 - Pin8 SEG4 - Pin9 SEG5 - Pin10 SEG13 - Pin11 SEG14 - Pin12
Zudem nutze ich folgenden code, damit möchte ich simpel 88:88 darstellen:
/**
- ATtiny1614 → TM1621C: Zeigt 88:88
- PA1 = CS, PA2 = WR, PA3 = DATA */ #include <avr/io.h> #include <util/delay.h>
#define CS_PIN PIN1_bm // PA1 #define WR_PIN PIN2_bm // PA2 #define DAT_PIN PIN3_bm // PA3
// ~2 µs Setup/hold static inline void tpd(void) { _delay_us(2); }
// Ein Bit senden (MSB-first), CPOL=1/CPHA=1 static void sendbit(uint8_t bit) { if (bit) PORTA.OUTSET = DAT_PIN; else PORTA.OUTCLR = DAT_PIN; tpd(); PORTA.OUTCLR = WR_PIN; tpd(); PORTA.OUTSET = WR_PIN; tpd(); }
// Mehrere Bits MSB-first static void sendbits(uint32_t data, uint8_t bits) { for (int i = bits - 1; i >= 0; i--) sendbit((data >> i) & 1); }
// 12-Bit-Kommando senden static void sendcmd(uint16_t cmd) { PORTA.OUTCLR = CS_PIN; tpd(); sendbits(cmd, 12); tpd(); PORTA.OUTSET = CS_PIN; tpd(); }
// 13-Bit-Datenpaket: 101 + addr[5:0] + data[3:0] static void writedata(uint8_t addr, uint8_t data4) { uint16_t packet = (0b101u << 10) | ((addr & 0x3F) << 4) | (data4 & 0x0F); PORTA.OUTCLR = CS_PIN; tpd(); sendbits(packet, 13); tpd(); PORTA.OUTSET = CS_PIN; tpd(); }
int main(void) { // I/O → output, idles: CS=1, WR=1 PORTA.DIRSET = CS_PIN | WR_PIN | DAT_PIN; PORTA.OUTSET = CS_PIN | WR_PIN; _delay_ms(10); // POR-Delay
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
}