Hey,
zur Zeit spiele ich mit 4x74HC595 an einem Atmega 168 rum. Soweit so
gut, die Pins 1 bis 16 leuchten nacheinander auf, so wie ich mir das
vorstelle. Doch 16 leuchtet dann alleine genauso lange wie der gesamte
Durchlauf, 17 bis 32 leuchten nie auf.
1 | uint32_t old_data = 1UL;
|
2 | int main(void){
|
3 |
|
4 |
|
5 | DDRB |= (1 << SER_PIN) | ( 1 << CLK_PIN) | (1<< RST_PIN);
|
6 | PORTB &= ~( 1 << RST_PIN);
|
7 | PORTB &= ~( 1 << CLK_PIN);
|
8 | PORTB &= ~( 1 << SER_PIN);
|
9 |
|
10 | while(1){
|
11 | for(uint8_t i=0; i< 32; i++){
|
12 | send_32_bits();
|
13 | old_data = old_data + old_data;
|
14 | _delay_ms(100);
|
15 | }
|
16 | old_data = 1UL;
|
17 | }
|
18 |
|
19 | }
|
Das ist mein Code soweit.
Meine Theorie wäre jetzt, das Pin 16 als Wert ja 2^15 hat (also 32768),
Pin 17 jedoch 65536, was größer als der uint16_t ist. Ich nutze jedoch
einen uint32_t, sodass ich es halt merkwürdig finde, dass genau an
dieser Grenze ein Fehler auftritt.
Habe ich irgendwas übersehen ?
Viele Grüße & vielen Dank im vorraus
Alexander