Dwie magistrale 1wire

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Skrzydlaty
Użytkownik
Posty: 126
Rejestracja: 23 wrz 2007, 21:08
Lokalizacja: Krak

Dwie magistrale 1wire

Post autor: Skrzydlaty » 14 sie 2008, 13:26

Witam! Na jednym uC (Mega8) próbuje skonfigurowac dwie magistrale 1wire, do każdej z nich musze podpiąć po jednym DS18B20. Wymaganie to wlasnie dwie osobne linie danych.
Problem polega na tym że program nie dziala. Jesli skonfiguruje tylko jedna linie wszystko jest ok no ale dwie - nie dziala. Po glebszym tescie i sprawdzeniu dzialania programu wychodzi na to że procek jakby nie widział kostek DS przy skonfigurowanych 2 magistralach.
Pewnie coś z konfiguracją spiepszyłem... Oto fragment kodu"

Kod: Zaznacz cały

Config 1wire = Portc.5
1wreset
Config 1wire = Portc.4
1wreset
Dim Ile_1 As Integer
Dim Ile_2 As Integer

1wreset Portc , 5
Ile_1 = 1wirecount(portc , 5)                             
1wreset Portc , 4
Ile_2 = 1wirecount(portc , 4)                              
Lcd Ile_1 ;"   ";  Ile_2 
Dodatkowe polecenia "1wreset" przy konfiguracji zostały dodane w trakcie działania programu tak że niech nikogo to nie dziwi- bez nich taki rezultat działania programu jest taki sam. Na lcd pojawiają zie zera.

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Re: Dwie magistrale 1wire

Post autor: Ertew » 14 sie 2008, 22:28

Spróbuj najpierw skonfigurować i odczytać dane z jednego czujnika, a następnie z drugiego:

Kod: Zaznacz cały

Dim Ile_1 As Integer
Dim Ile_2 As Integer

Config 1wire = Portc.5
1wreset
1wreset Portc , 5
Ile_1 = 1wirecount(portc , 5) 
                            ' do tego momentu wszystko powinno działać

Config 1wire = Portc.4
1wreset
1wreset Portc , 4
Ile_2 = 1wirecount(portc , 4)                              


Lcd Ile_1 ;"   ";  Ile_2 

Skrzydlaty
Użytkownik
Posty: 126
Rejestracja: 23 wrz 2007, 21:08
Lokalizacja: Krak

Post autor: Skrzydlaty » 14 sie 2008, 22:59

Do zaznaczonego momentu....ani nie ruszyło. Dodalem po tym linijkę

Kod: Zaznacz cały

Lcd Ile_1
i nic. Wyświetla "0". Wcześniej przynajmniej mi znalazło ten jeden a teraz w ogóle. Jutro będę więcej kombinował ale i tak ta opcja już odpada :(

ZbeeGin

Post autor: ZbeeGin » 15 sie 2008, 8:53

Czy koledzy nie umieją czytać? W pomocy pisze, że wielokrotne użycie CONFIG 1WIRE jest niemożliwe. Aby mieć klilka magistral trzeba po prostu skorzystać z alternatytnych składni omijając CONFIG.

Skrzydlaty
Użytkownik
Posty: 126
Rejestracja: 23 wrz 2007, 21:08
Lokalizacja: Krak

Post autor: Skrzydlaty » 15 sie 2008, 12:02

Wiem o tym, przynajmniej ja. Ale pisze też że możliwe jest skonfigurowanie więcej niż 1 magistrali. "Alternatywna" składnia? Był bym wdzięczny za jakiś przykład.
Może przy instrukcji CONFIG zamiast konkretnego numeru portu dać jakąś zmienną? Możliwe ale czy zadziała? I co dalej?

ZbeeGin

Post autor: ZbeeGin » 15 sie 2008, 13:20

Sam przecież tą alternatywną składnię stosujesz...

Skrzydlaty
Użytkownik
Posty: 126
Rejestracja: 23 wrz 2007, 21:08
Lokalizacja: Krak

Post autor: Skrzydlaty » 16 sie 2008, 11:38

Ok, poszło.... nawet nie wiedziałem że przy konfiguracji można używać zmiennych.

ODPOWIEDZ