hi, ich bastle jetzt seit einiger zeit an meinem dcf77 empfänger. und ich weiß einfach nicht was falsch läuft :/ ich kann das signal zwar empfangen aber irgendwie passt es nicht wenn ich es manuell auswerte... ich habe mehr mals in reihe das signal empfangen lassen und es mir notiert es sieht immer sehr ähnlich aus (datum/jahr usw.) von daher kann es nicht sooo arg falsch sein :/ hier mal zwei komplette signale.. mag sein das das ganze atm noch nicht 100%ig verkabelt ist aber wenn sich zwei strings so stark ähnlich sind wird es ja so schlecht auch nicht sein oder? :/ 0110010100101010001010010010000110100001001010100011001000010000 0111011110000010001010001110100110100001001010100011001000010000 hier der code
1 | main() |
2 | {
|
3 | DDRD = 0x00; |
4 | MCUCR = (1<<ISC01) | (1<<ISC00) ; //positive flanke |
5 | GICR = (1<<INT0); //int0 aktiv |
6 | |
7 | TCCR1A = 0x00; |
8 | TCCR1B = (1<<CS12); //prescaler 256 //wertet die signallängen aus |
9 | |
10 | lcd_pwrup(); |
11 | |
12 | TCNT1=0; |
13 | sei(); |
14 | |
15 | while(1) |
16 | {
|
17 | if(k==2) |
18 | {
|
19 | cli(); |
20 | lcd_choporder(1); //clear screen |
21 | _delay_ms(2); |
22 | |
23 | sprintf(out,"%08lx",ether3); |
24 | lcd_sendstring(out); //gibt den out string aus |
25 | |
26 | sprintf(out,"%08lx",ether4); |
27 | lcd_sendstring(out); |
28 | while(1); |
29 | }
|
30 | }
|
31 | }
|
32 | |
33 | ISR(INT0_vect) |
34 | {
|
35 | if(TCNT1>23000) {ether3=ether1; ether4=ether2; ether1=0; ether2=0; lcd_senddata('x'); if(j>26){k++;}; i=0;j=0;} //anfang einer neuen minute |
36 | |
37 | TCNT1=0; |
38 | |
39 | if(z>=15) {lcd_choporder(1); z=0;} //leert das display periodisch damit es nicht überläuft |
40 | |
41 | while(up); |
42 | |
43 | |
44 | if(TCNT1<1800 && TCNT1>1200 && i<32) {ether1|=(0l<<31-i); lcd_senddata('0'); i++; z++;} //füllt die erste long variable |
45 | if(TCNT1>2700 && TCNT1<3600 && i<32) {ether1|=(1l<<31-i); lcd_senddata('1'); i++; z++;} |
46 | |
47 | if(TCNT1<1800 && TCNT1>1200 && i>31) {ether2|=(0l<<31-j); lcd_senddata('0'); j++; z++;} //füllt die zweite long variable |
48 | if(TCNT1>2700 && TCNT1<3600 && i>31) {ether2|=(1l<<31-j); lcd_senddata('1'); j++; z++;} |
49 | |
50 | |
51 | |
52 | TCNT1=0; |
53 | }
|
ein problem was vereinzelt auftritt ist das schnell hintereinander 2zahlen aufs display geschrieben werden...ist mir schleierhaft wie das sein kann :/ wäre echt klasse wenn ihr mir weiterhelfen könnt gruß