Forum: Mikrocontroller und Digitale Elektronik DS1990A und ATmega 8


von Chris C. (chris-berlin)


Lesenswert?

Hallo zusammen,
vieleicht kann mir jemand ein Tip geben, ich wollte ein iButton DS1990A 
zur Sicherheitsabfrage nutzen. Angeschlossen haben ich Ihnen wie folgt.

an PB1 geht ein Kabel zur Kontakteinheit des iButtons "Leser" (Data) und 
auch ein 4,7 KOhm Wiederstand von PB1 zu 5 Volt. Die Masse ebend an 
Masse, soweit so gut.

Mit folgendem Programm passiert rein garnichts. Normalerweise sollte 
hier die Seriennummer und die Anzahl der 1wire Geräte angezeigt werden. 
Habe ich da irgwendwo ein denkfehler, bin noch ein neuling bei AVR 
Programmierung.

$regfile = "m8def.dat"
$crystal = 3000000
$baud = 9600
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space

Config 1wire = Portb.1

Config Lcd = 16 * 2 ' LCD 16x2 mit HD 44780 Controller
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , Db5 = 
Portc.3 , Db6 = Portc.4 , Db7 = Portc.5


Dim Rom_data(8) As Byte
Dim I As Byte , W As Word

Declare Sub Crc8_check()
Cls
Do


Rom_data(1) = 1wsearchfirst()
If Err = 1 Then Goto Cnt

For I = 1 To 8
Print Hex(rom_data(i));
Next
Crc8_check
Print

Do
Rom_data(1) = 1wsearchnext()
If Err = 1 Then Exit Do
For I = 1 To 8
Print Hex(rom_data(i));
Next
Crc8_check
Print
Loop

Cnt:
W = 1wirecount()
Locate 2 , 0
Lcd "iButtons ist" ; W

Loop

End

Sub Crc8_check()
$external _crc8
Local Result As Byte

Loadadr Rom_data(1) , Z
ldi R24,8
!Call _crc8
Loadadr Result , X
st X,R16
If Result = 0 Then
Lcd "CRC-8 OK";
Wait 2
Else
Lcd "Crc -8 Error ";
Wait 2
End If
End Sub


Gruß

Chris

von Peter D. (peda)


Lesenswert?

Christian Schaebsdat wrote:

> Habe ich da irgwendwo ein denkfehler, bin noch ein neuling bei AVR
> Programmierung.

Naja, mit AVR hat das nichts mehr zu tun, sondern mit Bascom.

Da sollte doch irgendwo ne Doku und Beispiele zu den "Schwarzen 
Kästelchen" mit bei sein.


Ich habe keine Black Boxen genommen, sondern mir die Funktionen anhand 
der Ablaufdiagramme in den Maxim Datenblättern selber geschrieben:

Beitrag "DS1820, DS18B20 in C"


Peter

P.S.:
Womit erzeugst Du die 3MHz ?
Ein recht ungebräuchlicher Wert.
Stehen die Fuses vielleicht noch auf 1MHz ?

von chris-berlin (Gast)


Lesenswert?

Die 3 Mhz waren schon immer da, hatt ich immer als Vorlage bei ATmega8 
der kann doch 3 Mhz Intern oder ? oder muß ich ihm das noch woanders 
sagen ?

Also mal kurz, hardwareseitig sollte es also funktionieren ? Dann weis 
ich wenigstens wo ich dann suchen muß.

Chris

von Peter D. (peda)


Lesenswert?

chris-berlin wrote:
> Die 3 Mhz waren schon immer da, hatt ich immer als Vorlage bei ATmega8

Vorlagen sind schön, wenn sie zutreffen.
Also erstmal prüfen, was sie bedeuten und ob sie zutreffen.

> der kann doch 3 Mhz Intern oder ?

Nein.

> oder muß ich ihm das noch woanders
> sagen ?

Ja.

Ich würde sagen, es ist allerhöchste Zeit für Dich, mal das Datenblatt 
zur Hand zu nehmen (mindestens die Abschnitte "System Clock and Clock 
Options" und "Fuse Bits").


Peter

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.