FAQ | Points | Add... | Recent posts | Search | Register | Log in


Atmega8L i sprzętowy I2C [Bascom]


Post new topic  This topic is locked      Main Page -> Forum Index -> Microcontrollers Generally -> AVR Microcontrollers -> Atmega8L i sprzętowy I2C [Bascom]
Author
Message
Logan
Poziom 22
Poziom 22


Joined: 09 Jul 2004
Posts: 1803
Location: Jelenia Góra

Post#1 Post from the author of the topic 10 Mar 2010 20:44   

Atmega8L i sprzętowy I2C


Witam

Mam bardzo dziwny problem z komunikacją z układem DS1307. Zacznę od początku. Mam zestaw ewaluacyjny z Atmega8 i układem DS1307, jakiś czas temu napisałem sobie pogram do komunikacji poprzez sprzętowy TWI. Wszystko działało aż miło, teraz chciałem znowu skomunikować się z DS'em, ale okazało się, że nie mam żadnej komunikacji. Sprawdziłem 10 razy wszystkie połączenia i jest OK (z resztą tu się nie da pomylić bo to płytka ewaluacyjna), w akcie desperacji przelutowałem DS'a. Bezskutecznie. Jedyne co zmieniłem to procesor z Atmega8 na Atmega8L, ale w nocie katalogowej nie znalazłem nic co by wskazywało na jakieś problemy z TWI. Postanowiłem iść dalej i sprawdzić która instrukcja zwraca błąd. Napisałem prosty programik:
Code:

$regfile = "m8def.dat"   'Atmega8
$crystal = 8000000  'kwarc 8MHz
$lib "i2c_twi.lbx"  'sprzetowy I2C

Config Scl = Portc.5
Config Sda = Portc.4
Config Twi = 100000 'predkosc 100kHz

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.0 , Rs = Portd.7
Cursor Off

Const Adres_w = &B11010000
Const Adres_r = &B11010001
Cls

I2cstart
Gosub Blad
I2cwbyte Adres_w
I2cwbyte &H0        'adres rejestru
I2cwbyte &H0        ' zeruje bit CH
I2cstop

I2cstart
I2cwbyte Adres_w
I2cwbyte &H07       'rejestr kontrolny
I2cwbyte &B00010000 'ustawiam 1Hz na wyjsciu DS1307
I2cstop

End

Blad:
If Err = 1 Then
Lcd "Blad"
Else
Lcd "OK"
End If
Return


Okazało się, że już pierwsza instrukcja I2Cstart zwraca błąd. Gdzie szukać usterki ?
Back to top
   
ElektroTME
Poziom 14
Poziom 14


Joined: 09 Sep 2008
Posts: 154
Location: szcz

Post#2 10 Mar 2010 21:54   

Re: Atmega8L i sprzętowy I2C


U mnie w zegarze z pcf'em działa to w takiej konfiguracji, lecz nie korzystam z zewnętrznej biblioteki:

Code:
$regfile = "m8def.DAT"
$crystal = 8000000

Config Pinc.4 = Input
Config Pinc.5 = Input
Config Scl = Portc.5
Config Sda = Portc.4
Config I2cdelay = 5

Const Pcf_o = 163                                           'adres zegara RTC odzczytu
Const Pcf_z = 162                                           'adres zegara RTC zapisu
Const Control = 8

I2cinit
I2cstart
I2cwbyte Pcf_z
I2cwbyte 8
I2cwbyte Control
I2cstop

Edit: na atmedze8 i 8L działa tak samo :P
Back to top
   
Logan
Poziom 22
Poziom 22


Joined: 09 Jul 2004
Posts: 1803
Location: Jelenia Góra

Post#3 Post from the author of the topic 10 Mar 2010 21:59   

Re: Atmega8L i sprzętowy I2C


Ale to nie ma nic do rzeczy, próbowałem nawet sampli z Bascoma, które wcześniej działały bez problemu.
Back to top
   
ElektroTME
Poziom 14
Poziom 14


Joined: 09 Sep 2008
Posts: 154
Location: szcz

Post#4 10 Mar 2010 22:20   

Re: Atmega8L i sprzętowy I2C


Nie widzę w Twoim kodzie instrukcji I2cinit, może dlatego wywala błąd?
Jeżeli wywala Ci błędy to przyczyna leży raczej po stronie programu.
Prześledź jeszcze raz wszystko krok po kroku, może o czymś zapominasz, spróbuj ustawić piny jako wejścia, dodać kilka wydawałoby się zbędnych instrukcji, może zaskoczy.
Back to top
   
atom1477
Poziom 25
Poziom 25


Joined: 14 Jul 2005
Posts: 6360

Post#5 10 Mar 2010 22:26   

Re: Atmega8L i sprzętowy I2C


No i spróbuj na programowym I2C.
Back to top
   
Google

Google Adsense


Post# 10 Mar 2010 22:26   





Back to top
   
janbernat
Poziom 23
Poziom 23


Joined: 21 Oct 2008
Posts: 3680
Location: Warszawa

Post#6 10 Mar 2010 22:35   

Re: Atmega8L i sprzętowy I2C


A co to za płytka?
Back to top
   
Logan
Poziom 22
Poziom 22


Joined: 09 Jul 2004
Posts: 1803
Location: Jelenia Góra

Post#7 Post from the author of the topic 10 Mar 2010 23:07   

Re: Atmega8L i sprzętowy I2C


ElektroTME wrote:
Nie widzę w Twoim kodzie instrukcji I2cinit, może dlatego wywala błąd?
Jeżeli wywala Ci błędy to przyczyna leży raczej po stronie programu.
Prześledź jeszcze raz wszystko krok po kroku, może o czymś zapominasz, spróbuj ustawić piny jako wejścia, dodać kilka wydawałoby się zbędnych instrukcji, może zaskoczy.


Zobacz w helpie kiedy się używa I2Cinit. Zwróć też uwagę, że wcześniej wszystko działało na tym samym wsadzie, wątpię, żeby stał się cud i zniknęły, bądź pojawiły się nowe instrukcje w pliku .bas.

:arrow: atom1477 Na programowym nigdy nie ma błędu (zmienna Err zawsze 0), nawet jak odłączę układ...

:arrow: janbernat Płytka to EVBavr04 z Propoxu.
Back to top
   
janbernat
Poziom 23
Poziom 23


Joined: 21 Oct 2008
Posts: 3680
Location: Warszawa

Post#8 10 Mar 2010 23:14   

Re: Atmega8L i sprzętowy I2C [Bascom]


A czy już wylutowałeś akumulator i wstawiłeś normalne ogniwo CR2032 zamiast ich wynalazku?
I ustaw zworki żeby się nie ładowało.
Bo przekracza dopuszczalne napięcie na DS i nic nie chodzi.
Back to top
   
Logan
Poziom 22
Poziom 22


Joined: 09 Jul 2004
Posts: 1803
Location: Jelenia Góra

Post#9 Post from the author of the topic 10 Mar 2010 23:26   

Re: Atmega8L i sprzętowy I2C [Bascom]


janbernat wrote:
A czy już wylutowałeś akumulator i wstawiłeś normalne ogniwo CR2032 zamiast ich wynalazku?
I ustaw zworki żeby się nie ładowało.
Bo przekracza dopuszczalne napięcie na DS i nic nie chodzi.


Tak, przerabiałem to na samym początku, po wlutowaniu nowego DS uruchomiłem wszystko (kiedyś).
Back to top
   
janbernat
Poziom 23
Poziom 23


Joined: 21 Oct 2008
Posts: 3680
Location: Warszawa

Post#10 10 Mar 2010 23:42   

Re: Atmega8L i sprzętowy I2C [Bascom]


To może CR2032 jest już słabe- jak to było dawno?
Ja używałem do tego
$lib "ds1307clock.lib"
Back to top
   
Logan
Poziom 22
Poziom 22


Joined: 09 Jul 2004
Posts: 1803
Location: Jelenia Góra

Post#11 Post from the author of the topic 10 Mar 2010 23:58   

Re: Atmega8L i sprzętowy I2C [Bascom]


janbernat wrote:
To może CR2032 jest już słabe- jak to było dawno?
Ja używałem do tego
$lib "ds1307clock.lib"


Faktycznie trochę słabe już to ogniwo - 2,7V, wg noty Vbat_min to 2V. Na wszelki wypadek wsadziłem nowa, ale dalej nie działa.
Tej biblioteki "ds1307clock.lib" w Bascomie 1.11.9.8 już nie ma, w starszej wersji jest, ale mimo to, programowy I2C i tak nie działa (próbowałem Sampla ds1307.bas).
Back to top
   
janbernat
Poziom 23
Poziom 23


Joined: 21 Oct 2008
Posts: 3680
Location: Warszawa

Post#12 11 Mar 2010 00:14   

Re: Atmega8L i sprzętowy I2C [Bascom]


No, ale się kompiluje bez błędów w 1.11.9.8.
Zarówno z jak i bez $lib "ds1307clock.lib".
Back to top
   
Logan
Poziom 22
Poziom 22


Joined: 09 Jul 2004
Posts: 1803
Location: Jelenia Góra

Post#13 Post from the author of the topic 15 Mar 2010 21:22   

Re: Atmega8L i sprzętowy I2C [Bascom]


Dostaje błąd "Library file not found". Używam dema 1.11.9.8, w starszej wersji, z tą biblioteką, program się kompiluje, ale nie działa. Kiedyś działał.
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 15 Mar 2010 21:22   





Back to top
   
janbernat
Poziom 23
Poziom 23


Joined: 21 Oct 2008
Posts: 3680
Location: Warszawa

Post#14 15 Mar 2010 22:07   

Re: Atmega8L i sprzętowy I2C [Bascom]


Uzywam pełnej wersji- normalnie się kompiluje.
Wyjście po I2Cinit do gosub Blad- gdzie masz dwukrotne ustawianie LCD-dużo czasu to pochłania- to nie jest pomysł na debugowanie.
Spróbuj zrobić to na jakiejś diodzie z toggle albo coś równie szybkiego.
Back to top
   
Logan
Poziom 22
Poziom 22


Joined: 09 Jul 2004
Posts: 1803
Location: Jelenia Góra

Post#15 Post from the author of the topic 15 Mar 2010 22:16   

Re: Atmega8L i sprzętowy I2C [Bascom]


Słuszna uwaga, zmieniłem kod:
Code:
$regfile = "m8def.dat"       'Atmega8
$crystal = 8000000  'kwarc 8MHz
$lib "i2c_twi.lbx"  'sprzetowy I2C

Config Scl = Portc.5
Config Sda = Portc.4
Config Twi = 100000 'predkosc 100kHz
Const Adres_w = &B11010000
Const Adres_r = &B11010001

Config Portd.0 = Output
Led Alias Portd.0
Set Led

I2cstart
Gosub Blad
I2cwbyte Adres_w
I2cwbyte &H0        'adres rejestru
I2cwbyte &H0        ' zeruje bit CH
I2cstop

I2cstart
I2cwbyte Adres_w
I2cwbyte &H07       'rejestr kontrolny
I2cwbyte &B00010000 'ustawiam 1Hz na wyjsciu DS1307
I2cstop

End

Blad:
If Err = 1 Then
Reset Led
End If
Return


Dalej mam błąd.
Back to top
   
janbernat
Poziom 23
Poziom 23


Joined: 21 Oct 2008
Posts: 3680
Location: Warszawa

Post#16 15 Mar 2010 22:27   

Re: Atmega8L i sprzętowy I2C [Bascom]


Ab ovo- zacznijmy od początku.
"Jedyne co zmieniłem to procesor z Atmega8 na Atmega8L".
Nowy- ustawiony fabrycznie na 1MHz z wewnętrznego oscylatora.
Back to top
   
Logan
Poziom 22
Poziom 22


Joined: 09 Jul 2004
Posts: 1803
Location: Jelenia Góra

Post#17 Post from the author of the topic 15 Mar 2010 22:33   

Re: Atmega8L i sprzętowy I2C [Bascom]


Nie no, aż tak źle ze mną nie jest ;)
Atmega8L i sprzętowy I2C [Bascom]
Back to top
   
janbernat
Poziom 23
Poziom 23


Joined: 21 Oct 2008
Posts: 3680
Location: Warszawa

Post#18 15 Mar 2010 22:50   

Re: Atmega8L i sprzętowy I2C [Bascom]


No ja kiedyś też w akcie desperacji wstawiłem nowego DS i kwarc.
Na takiej samej płytce.
Co okazało się bez sensu- błąd był w programie.
A masz ten procesor który z tym chodził- nie przeprogramowany?
Back to top
   
Logan
Poziom 22
Poziom 22


Joined: 09 Jul 2004
Posts: 1803
Location: Jelenia Góra

Post#19 Post from the author of the topic 18 Mar 2010 20:45   

Re: Atmega8L i sprzętowy I2C [Bascom]


Znalazłem przyczynę - uszkodzony portc.4, nie wiem tylko jak go uszkodziłem... Na porcie cały czas jest logiczne 0, nie działa nawet Set Portc.4.
Back to top
   
janbernat
Poziom 23
Poziom 23


Joined: 21 Oct 2008
Posts: 3680
Location: Warszawa

Post#20 18 Mar 2010 21:12   

Re: Atmega8L i sprzętowy I2C [Bascom]


To zamiast Set Porc.4. wpisz lepiej set portc.4
Back to top
   
Google

Google Adsense


Post# 18 Mar 2010 21:12   





Back to top
   
Logan
Poziom 22
Poziom 22


Joined: 09 Jul 2004
Posts: 1803
Location: Jelenia Góra

Post#21 Post from the author of the topic 18 Mar 2010 21:22   

Re: Atmega8L i sprzętowy I2C [Bascom]


Literówka mi się wkradła, w sofcie mam set portc.4
Back to top
   
janbernat
Poziom 23
Poziom 23


Joined: 21 Oct 2008
Posts: 3680
Location: Warszawa

Post#22 18 Mar 2010 22:27   

Re: Atmega8L i sprzętowy I2C [Bascom]


To jest sprzętowy SDA- jak ustawiłeś w programie TWEN w rejestrze TWCR to na nic nie reaguje.
Zrób nowy program do migania diodą na tym pinie.
Back to top
   
Logan
Poziom 22
Poziom 22


Joined: 09 Jul 2004
Posts: 1803
Location: Jelenia Góra

Post#23 Post from the author of the topic 18 Mar 2010 23:02   

Re: Atmega8L i sprzętowy I2C [Bascom]


Cały czas mówię o nowym :)
Code:
$regfile = "m8def.dat"       'Atmega8
$crystal = 8000000  'kwarc 8MHz

Config Portc.4 = Output
Set Portc.4

Do
Toggle Portc.4
Wait 1
Loop

Back to top
   
Post new topic  This topic is locked      Main Page -> Forum Index -> Microcontrollers Generally -> AVR Microcontrollers -> Atmega8L i sprzętowy I2C [Bascom]
Page 1 of 1
Similar topics
atmega8L bascom sprzętowe generowanie sygnału prostokątnego (3)
[Atmega8L][Bascom]Przekonfigurowanie portu w locie (5)
[Atmega8L][Bascom] RC5-nieprawidłowy odbiór (24)
[BASCOM] [ATMEGA8L] Problem z programem do zamka (4)
Atmega8L - bascom avr niechce go wyczytać (2)
[Bascom] atmega8L sprawdzenie programu (25)
[bascom/atmega1280/i2c] I2C nie działa - brak komunikacji (2)
Jak obsługiwać sprzętowy I2C w Bascom-ie (ATmega16)? (8)
[Atmega8L][Bascom] Generator przebiegu 36kHz dla diody IR (1)
[Atmega32][Bascom] UART sprzętowy a programowy (3)

Page generation time: 0.178 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed