Zapojení by mělo být vpořádku, fleuryho programové moduly jsou funkční a vyšperkované, často však zbytečně moc . Místo relativně velkého všestranného kódu by ti na poslání pár bytů stačilo 5 řádků inicializace a posílací funkce, která by byla řekněme taky na 5 řádků.
Převodník bude dostačující pouze pro komunikaci. Kdybys ho chtěl použít na programování, tak máš velkou šanci, že neuspěješ.
Kombinace MAX + převodník USB-RS232 se dá nahradit jediným obvodem, např. FT232.
tak mě jde jenom o poslání pár dat do počítače, takže to asi vemu takhle s rs232. ta ft232 je sice hezká, ale zapojení se mi zdá nějaké složité a jak se znám, tak by mi to taky nemuselo fungovat, zvlášť když vidím to smdéčko a moje pájení
tak jsem to zapojil a udělal dle té knihovny,
do projektu napsal: #include “uart.h” #define UART_BAUD_RATE 9600
uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );
uart_puts(“String stored in SRAM\n”);
a ono to nic nepíše - mám to dobře ? Předpokládám že by to mělo vypisovat do hyperteminálu String stored in SRAM
Jak nastavit hyperteminál ? Jednak se mi ptá na port COM1/COM2, poté na bity za sekundu, datové bity, paritu, počet stop-bitů a řízení toků.
Díky za odpověď
Samozřejmě že nejsou, v komentáři je “tiny2313” . O svym mcu jsi nic nepsal, tak jsem nemohl čuchat, co máš. Taky nevim, jakou máš frekvenci (asi 1 nebo 8MHz), správnou hodnotu pro UBRR registr si najdi v tabulce “Examples of UBRRn Settings for Commonly Used Oscillator Frequencies”.
Pokud máš datasheet z 08/2010, tak je to od strany 196.
Tak jsem to zkusil, a stejně nechodí. V čem může být chyba ? To stačí opravdu jenom tyto tři řádky? Nechce ještě nějak nastavit DDR ,hyperterminál ? funguje to na všech COM portech ? (mam docela nový počítač, ten COM tam je možná dělaný přes nějaký přídavný čip.)
Napětí na T2out -10,5V (stále)
Ten kód jsem vyzkoušel než jsem ho postnul. Takže stačí (po modifikacích pro tvůj mcu).
Co se týká COM portu v PC, musíš vybrat ten správný, který je vytvořen převodníkem USB-COM. Buď můžeš zkoušet, nebo si otevři správce, rozbal si COM porty a zapoj převodník. Nějaký by měl přibýt a to je ten hledaný. Nastavení přenosu je 8 bitů, žádná parita a 1 stop bit (8N1). Rychlost záleží na tvém zdroji hodin a nastavení UBRR registru. Přihoď sem tvůj upravený kód a frekvenci mcu (a zdroj z jakého běží, pokud to není interní RC, tak i nastavení fuses).
Zkus následující kód abysme viděli, jesli mcu běží. Fuses by měly být správně. Každou vteřinu by se měl změnit stav diody na PB0 a být odeslán znak ‘A’.
tak konečně jsem se k tomu dostal, abych to otestoval. Port PB0 bliká, ale hyperterminál nic nepřijímá.
V čem může být chyba ? Ještě zkusím jiný procesor a počítač.
Spustim ve win XP terminál, bliká tam kurzor a nic nedělá. Jak mu mám odeslat znaky ? Když něco napíšu a dám enter, tak program se na chvilku zasekne, žádné napsané znaky nevypíše a ani nic přijatého nevypíše.
Tak nakonec jsem zjistil, že mám na počítači přehozené piny na COMu. Na jinym počítači jsem nic přepájet nemusel. Takže na samotném RS232 odeslanou hodnotu vrací.
Poté jsem vyzkoušel propojit TX a RX na TTL. Nevracelo se nic. Přepojil jsem proto obvod MAX232 z výstupů označených 2 na výstupy označené 1 a vrací. Je možné že musí být nejdříve zapojovány 1 a pak až 2 ? Nebo mám kousek MAX232 odpálenou ?
Takže zatím děkuji, znak A mi to odesílá.
Teď tady řeším funkci, aby mi to odesílalo celý string
void PosliString(volatile char retezec])
{
int konec = strlen(retezec);
int i;
for(i=0;i<konec;i++)
{
UDR0 = retezec*;
_delay_ms(1);
}
}
pokud tam nedam delay, tak to odesle pouze prvni dva znaky. Divné, ale takhle mi to zatim postacuje. Jak udělat, aby v hyperterminálu přešel na nový řádek ? Co mám odeslat za znak ?*