Skocz do zawartości

Atmega16 + UART + oti6858


monkey

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...

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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 😉

Link do komentarza
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

Link do komentarza
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!

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.