Skocz do zawartości
monkey

Atmega16 + UART + oti6858

Pomocna odpowiedź

Witam! to mój pierwszy post więc prosze o wyrozumiałość. Dopiero zaczynam zabawe z mikroprockami, elektronikiem tez nie jestem wielkim 😉

Dwa dni temu napisałem swój pierwszy program na atmege, jednak po zabawie diodami, timerkami i przerwaniami przyszła pora na coś troche bardziej złożonego. Zabrałem się za UART. Zeby podłączyć atmege do PC wykorzysałem stary kabelek do telefonu oparty o chip oti6858. Szukałem tu i tam jakie ma napięcia ten chip jednak nei znalazłem. W dokumentacji tez nie moglem sie doszukac, jednak znalazłem takie coś: http://radzio.dxp.pl/avr910.htm. Na tej stronie człowiek wykorzystuje prawie identyczną przejściówke jak ja - tak samo ma tylko 3 kabelki - rxd, txd i gnd. Jak widać na tym zdjęciu kabelki zostały podłaczone bezpośrednio do procesora (tutaj akurat attiny) omijając układ max, zatem zaryzykowałem i spróbowałem u mnie. Wszystko smiga wysmienicie(predkosc 1200), jednak zauwazylem ze jesli zasilanie układu jest rozlaczone i podpinam TYLKO przejsciowke do gniazda USB w PC cały układ zaczyna być zasilany z USB! (do układu są podłaczone tylko rxd, txd i gnd z przejsciowki) Nie potrafie rysowac schematów (jestem początkujący) jednak opierałem sie na schematach z kursu avr-gcc. Atmega16 jest podłączona dokładnei tak samo jak tutaj jedynie zamiast C8 zastosowałem zwykły (nie elektrolit) 100nF, do pinów PB0 - PB3 są podłączone 4 diody wg. schematu: pin - opornik 1k - dioda - gnd,
na wyjściu stabilizatora (za kondensatorami) jest podłączona dioda przez opornik 1k, która sygnalizuje zasilanie (równiez sie swieci po podlaczeniu przejsciowki). rxd przejsciowki do txd procesora, txd do rxd procesora, gnd do gnd 😉 całość jest zbudowana na płytce testowej.

Czy to mozliwe, ze procesor jest zasilany przez piny rxd, txd z przejsciowki (sprawdzalem wszystkie połaczenia na płytce testowej - jest OK, kabelki o nic nie zachaczają wszystko jest izolowane itp.), czy w ten sposób mozna uszkodzic procesor? Nie posiadam działającego miernika także nei mierzyłem napięć na płytce... Czy ktoś miał podobny problem? Czy to normalne? O.o

jestem poczatkujący, prosze o pomoc... próbowałem szukać ale tak naprawde nie wiem czego szukać :| Sprawdzałem połaczenia na płytce 10 razy... to prosty układ i najwazniejsze jest, ze wszystko DZIAŁA.

nie wiem czy kod programu się na coś przyda ale prosze:

#define F_CPU 1000000L
#include <avr/io.h>
#include <util/delay.h>               
#include <avr/interrupt.h>        

void uart_init()
{
UBRRH = 0b00000000;
UBRRL = 0x33;
UCSRA = 0b00000000;
UCSRB = 0b00011000;
UCSRC = 0b10000110;
}


void put_c_uart(char c)
{
UDR=c;
loop_until_bit_is_set(UCSRA,TXC);
UCSRA|=_BV(TXC);
}


char get_c_uart()
{
loop_until_bit_is_set(UCSRA,RXC);
UCSRA|=_BV(RXC);
return UDR;
}


void pstring(char * s, int size)
{
int i;
for(i=0;i<size;i++) put_c_uart(s[i]);
}




int main(void)
{
DDRB = 0xFF;
PORTB= 0x01;
uart_init();

 while(1)
{
	pstring("Jest zapalona dioda: ", 21);
	switch (PORTB)
	{
	case 1:
	put_c_uart('1');
	break;
	case 2:
	put_c_uart('2');
	break;
	case 4:
	put_c_uart('3');
	break;
	case 8:
	put_c_uart('4');
	break;
	}
	put_c_uart(10);
	put_c_uart(13);
	pstring("Nacisnij 'z' zeby zmienic diode...",34);
	put_c_uart(10);
	put_c_uart(13);
	if(get_c_uart()=='z') PORTB<<=1;
	if(PORTB>8) PORTB=0x01;

}

}

jak pisałem wyżej program DZIAŁA. Chodzi mi tylko o problemy z zasilaniem układu...

Udostępnij ten post


Link to post
Share on other sites

Takie cuda się dzieją - jest wszystko ok, ale mimo wszystko powinieneś zasilać procesor z innego źródła (w sensie innej nóżki).

Udostępnij ten post


Link to post
Share on other sites

Jeszcze nie widziałem procka zasilanego przez rxd 🤯

A jak programujesz procesor? Nie zasilasz przypadkiem procesora przez programator?

Udostępnij ten post


Link to post
Share on other sites

Jasne. Zasilam przez programator i w tym momencie nie potrzebuje podłączenia gnd z przejsciowki (programator i przejsciowka sa na usb, wiec to samo gnd) ALE jesli zasilanie jest odlaczone i podlacze TYLKO przejsciowke (bez zasilania ze stabilizatora albo programatora), jak wspomnialem wyzej tylko piny rxd txd i gnd z przejsciowki sa podlaczone - cały układ "ożywa". :/

Podsumowujac:

programator - NIE PODLĄCZONY

zasilanie układu - NIE PODŁĄCZONE

przejściówka - PODŁĄCZONA POD USB W PC - RXD, TXD i GND PODPIETE POD PROCEK

rezultat: UKŁAD DZIAŁA. tylko diody swieca sie słabiej 😉

Udostępnij ten post


Link to post
Share on other sites

Moja teoria jest następująca:

Zasilasz przez pin RXD procesora. W datasheecie od m8 jest rysunek:

Czyli prąd płynie z linii RXD przez diodę zabezpieczającą do zasilania.

Jeśli popłynie za duży prąd to pewnie dioda nie wytrzyma.

Możesz łatwo sprawdzić, czy tak jest.

Jeśli wyślesz coś do procesora powinien stracić zasilanie

Udostępnij ten post


Link to post
Share on other sites

Zgadza sie! z tym wysyłaniem akurat nie działało, procesor wysyłał i odbierał dane uzywajac tylko zasilania z rxd, jednak po odłączeniu tego pinu układ nie działał.

Przy takim układzie prąd był malutki więc raczej nic sie nei powinno się stać, ale zagrozenie istniało 😉 Gdzie poszukać rozwiązania jak podłączyć bezpiecznie rxd w takim układzie?😉

Dzieki wielkie!

Udostępnij ten post


Link to post
Share on other sites

Wystarczy że podłączysz zasilanie do procesora. Diody nie będą wtedy przewodzić. Problem jest tylko jeśli sygnał doprowadzony do procesora ma wyższe napięcie niż zasilanie.

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Nie, wystarczy tylko zasilanie procesora.

Diody są jako zabezpieczenia, i normalnie nie przewodzą.

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...