Forum: Mikrocontroller und Digitale Elektronik DS1820 will nicht an Atmega32


von Christian M. (cooool39)


Lesenswert?

Also der sensor funktioniert an einen Atmega8 bloß halt nicht am 
Atmega32 (code ist natürlich an den Atmega32 angepasst worden) aber der 
Ds1820 will halt nicht gehen, bzw wird nicht erkannt.
Woran kann das liegen ?  ist er am falschen Port?? (d.0)
1
$regfile = "m32def.dat"
2
$crystal = 16000000
3
4
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0
5
Config Lcd = 16 * 2
6
Config 1wire = Portd.0
7
8
Const Parasitpower = 1
9
10
Const Ds1820 = &H10
11
12
Const Skiprom = &HCC
13
Const Read_rom = &H33
14
Const Convertt = &H44
15
Const Read_ram = &HBE
16
Const Write_ram = &H4E
17
Const Copy_ram = &H48
18
Const Recall_ee = &HB8
19
Const Read_power = &HB4
20
21
Dim Family_code As Byte
22
Dim Serial_number(6) As Byte
23
Dim Crc As Byte
24
Dim Scratch(9) As Byte
25
26
Dim I As Byte
27
Dim Temp As Word
28
Dim Temp1 As Integer
29
Dim Stemp As Single
30
31
Do
32
   1wreset
33
   If Err = 1 Then Lcd "Ibutton Error"
34
35
   1wwrite Read_rom
36
37
   Family_code = 1wread()
38
   For I = 1 To 6
39
      Serial_number(i) = 1wread()
40
   Next
41
   Crc = 1wread()
42
   If Family_code <> Ds1820 Then Exit Do
43
44
   1wwrite Convertt
45
46
   #if Parasitpower
47
      Wait 2
48
   #else
49
      Do
50
         Temp = 1wread()
51
      Loop Until Temp = &HFF
52
   #endif
53
54
   1wreset
55
   If Err = 1 Then Lcd "Ibutton Error"
56
57
   1wwrite Skiprom
58
   1wwrite Read_ram
59
   For I = 1 To 9
60
      Scratch(i) = 1wread()
61
   Next
62
63
   Temp = Scratch(2)
64
   Shift Temp , Left , 8
65
66
   Temp = Temp + Scratch(1)
67
   Temp1 = Temp
68
69
   Temp1 = Temp1 / 2
70
   Lcd Temp1
71
72
   Stemp = Scratch(8) - Scratch(7)
73
   Stemp = Stemp / Scratch(8)
74
   Stemp = Stemp + Temp1
75
   Stemp = Stemp - 0.25
76
   Lowerline
77
   Lcd Fusing(stemp , "#.##")
78
   Wait 2
79
Loop
80
81
 Lcd "Kein Sensor"
82
83
End

von Paul Baumann (Gast)


Lesenswert?

Ich denke, daß es daran liegt:If Family_code <> Ds1820 Then Exit Do
Das Ding gibt &H10 zurück, wenn er nach seinem Family-Code gefragt wird, 
aber nicht seinen Namen "DS1820".

MfG Paul

von nobody (Gast)


Lesenswert?

Beispiel für myAVR Board mit LCD Display und Temperatursensor DS1820

http://bascom-forum.de/index.php/topic,76.msg185.html#msg185

von Christian M. (cooool39)


Lesenswert?

am avrbord / bzw am armega8 geht es einwandfrei halt bloß nicht an einen 
Atmega32!!!

von Holger K. (krulli) Benutzerseite


Lesenswert?

wie stehen die Fuses beim Mega32? Noch auf internen Takt? JTAGEN noch 
aktiviert?

von Randy N. (huskynet)


Lesenswert?

Es müsste an dem aktivierten JTAG liegen. Beim ATmega32 sind die 
JTAG-Anschlüsse am Port C. Ich hatte vor kurzem das gleiche Problem. 
Einfach das Fuse-Bit JTAGEN löschen, und es geht.

von Christian M. (cooool39)


Lesenswert?

also am JTAG liegt es nicht (habe sowie so schon von portc auf portb 
gewechselt) aber wie sieht es nun mit dem takt aus? ich ahbe einen 16MHz 
quarz und den chip auf external clock eingestellt, ist das richtig?

von Holger K. (krulli) Benutzerseite


Lesenswert?

external crystal/resonator High Freq.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.