1 | /*
|
2 | Anschlüsse des zweiten ATTiny 13:
|
3 |
|
4 | ---
|
5 | Reset RES -|* |- VCC
|
6 | Eingang L PB3 -| |- PB2 Eingang Akku Ok von ersten ATTiny13
|
7 | Eingang R PB4 -| |- PB1 Warnblinker bei Akku leer
|
8 | GND -| |- PB0 Takt weiter auf LEDs
|
9 | ---
|
10 |
|
11 | */
|
12 |
|
13 | #define F_CPU 9600000
|
14 | #include <avr/io.h>
|
15 | #include <util/delay.h>
|
16 |
|
17 | #define MIN 16
|
18 |
|
19 | /****************************************************************************************/
|
20 |
|
21 | void Takt()
|
22 | {
|
23 | TCCR0A |= (1<<COM0A1);
|
24 | for (char a=MIN; a<255; a++) { _delay_us(160); OCR0A = a; } // Rampe hoch
|
25 | _delay_ms(872.5); // Wert beibehalten Spannungen
|
26 | for (char b=255; b>MIN; b--) { _delay_us(340); OCR0A = b; } // Rampe runter
|
27 | TCCR0A &= ~(1<<COM0A1);
|
28 | _delay_ms(913.3);
|
29 | }
|
30 |
|
31 | /****************************************************************************************/
|
32 |
|
33 | int main (void)
|
34 | {
|
35 | DDRB |= 0x03; // Ausgänge
|
36 |
|
37 | // Grundeinstellungen für PWM
|
38 | TCCR0A |= (1<<COM0A1); // Compare Match Output A Mode; Non PWM Mode; Fast PWM Mode; Phase Correct PWM Mode
|
39 | // TCCR0A |= (1<<COM0A0); // Compare Match Output A Mode; 00 -> Normal Mode OC0x abgeschaltet
|
40 | // TCCR0B |= (1<<COM0B1); // Compare Match Output B Mode; 01 -> Res.
|
41 | // TCCR0B |= (1<<COM0B0); // Compare Match Output B Mode; 10 -> Löschen OC0x bei Compare Match, set on Top
|
42 | // Reserve 11 -> Set Oc0x bei Compare Match, löschen on Top
|
43 | // Reserve
|
44 | TCCR0A |= (1<<WGM01 ); // Waveform Generation Mode
|
45 | TCCR0A |= (1<<WGM00 ); // Table 11-8 on Page 72 (ATTiny13(doc2535).pdf)
|
46 |
|
47 | // TCCR0B |= (1<<FOC0A ); // Nicht bei Fast PWM
|
48 | // TCCR0B |= (1<<FOC0B ); // Nicht bei Fast PWM
|
49 | // RESERVE
|
50 | // RESERVE
|
51 | // TCCR0B |= (1<<WGM02 ); // Binäre Zählung bei WGM02 -> WGM00
|
52 | // TCCR0B |= (1<<CS02 ); // Prescaler 0 , 1, 2, 3, 4, 5, 6, 7
|
53 | // TCCR0B |= (1<<CS01 ); // Prescaler No CLK, 1, 8, 64, 256, 1024, ext, ext
|
54 | TCCR0B |= (1<<CS00 ); // Prescaler Binäre Zählung bei CS02 -> CS00
|
55 |
|
56 | /****************************************************************************************/
|
57 |
|
58 | OCR0A = MIN;
|
59 | _delay_ms(6000); // Warten auf Signal von ATTiny 13/1
|
60 |
|
61 | while ((PORTB & 0x04) == 0x04)
|
62 | {
|
63 | if ((PORTB & 0x18) == 0x18) {;} else { Takt(); }
|
64 | }
|
65 |
|
66 | PORTB |= (1<<PB1);
|
67 |
|
68 | while ((PORTB & 0x04) != 0x04)
|
69 | {
|
70 | Takt();
|
71 | }
|
72 |
|
73 | return(0);
|
74 | }
|