Hallo,
erstmal: ich weiss, dass dieses Thema hier schon oft durchgekaut wurde.
Trotzdem krieg ich meinen Sensor nicht zum laufen, also frage ich
halt...
Theorie:
Ich nehme das tolle Proggie von dieser Seite
http://www.mikrocontroller.net/mc-project/Pages/Projekte/Wetterstation/sensors/DS1620/ds1620.zip
, passe gerade mal in der ds1620.c meinen Port an, uns schon läuft alles
mit meiner main:
1 | #include <avr/io.h>
|
2 | #include <stdlib.h>
|
3 |
|
4 | #include "DS1620.h"
|
5 |
|
6 | volatile unsigned char ReceivedByte;
|
7 |
|
8 | int main (void)
|
9 | {
|
10 | // ***PORTS***
|
11 | PORTA=0xFF;
|
12 | DDRA=0xFF;
|
13 |
|
14 | PORTB=0xFF;
|
15 | DDRB=0xFF;
|
16 | // ***PORTS***END
|
17 |
|
18 | sei();
|
19 |
|
20 | while (1)
|
21 | {
|
22 | // für DS1620
|
23 |
|
24 | if (ReceivedByte == 49) {
|
25 |
|
26 | char s[20];
|
27 | int16_t i = ds1620_init();
|
28 | itoa( i, s, 10 ); // 10 fuer radix -> Dezimalsystem
|
29 | uart_puts( s );
|
30 | PORTA= ~ReceivedByte;
|
31 | ReceivedByte=0;
|
32 |
|
33 | }
|
34 |
|
35 | if (ReceivedByte == 50) {
|
36 |
|
37 | ds1620_write_config (100);
|
38 | }
|
39 | if (ReceivedByte == 51) {
|
40 |
|
41 | char s[20];
|
42 | int16_t i = ds1620_read_config();
|
43 | itoa( i, s, 10 ); // 10 fuer radix -> Dezimalsystem
|
44 | uart_puts( s );
|
45 | ReceivedByte=0;
|
46 | }
|
47 |
|
48 | }
|
49 |
|
50 | ISR(USART_RXC_vect)
|
51 | {
|
52 | ReceivedByte = UDR; // Fetch the recieved byte value into the variable //ByteReceived"
|
53 | //UDR = ReceivedByte; // Echo back the received byte back to the computer
|
54 | }
|
auf meinem ATMega16 und AVRStudio.
Praxis: geht nicht.
Testen tue ich das mit Terminal v1.9 und schon s1620_init() (wenn ich
also ne gibt mir 10 aus, und nicht 0x02, wie die //Erläuterung es
eigentlich will..und ds_read_config () gibt mir immer 74 aus, egal was
ich in ds_read_config(unsigned char) reinschreibe.
Hab ich da irgendetwas ganz grob vercheckt? (wahrscheinlich..sonst würds
ja laufen ;-)
vielen Dank für etwaige Hilfe
Gruß
jax