serial usb program
serial usb program
Sziasztok!
Szeretnék írni egy programot, ami kommunikál a számítógéppel virtuális soros vonalon USB-n keresztül. Elsőként csak egy szöveget szeretnék kiírni a terminálra. Ez nagyjából sikerült is, de valami gond van a beállításokkal, mert a terminálban értelmetlen jelek jelennek meg, ráadásul csak akkor, ha a terminált kisebb baud értékre állítom, mint a mikrokontrollert.
AVR-Duino v2 -es panellal próbálkozom.
Tud valaki segíteni, hogy milyen beállítások lennének jók?
Köszi előre is!
pentike
Szeretnék írni egy programot, ami kommunikál a számítógéppel virtuális soros vonalon USB-n keresztül. Elsőként csak egy szöveget szeretnék kiírni a terminálra. Ez nagyjából sikerült is, de valami gond van a beállításokkal, mert a terminálban értelmetlen jelek jelennek meg, ráadásul csak akkor, ha a terminált kisebb baud értékre állítom, mint a mikrokontrollert.
AVR-Duino v2 -es panellal próbálkozom.
Tud valaki segíteni, hogy milyen beállítások lennének jók?
Köszi előre is!
pentike
Nem arduinoval csinálom, hanem csak simán:
Se linux alatt minicom-val, se win alatt HyperTerminal-val nem látszik semmi, pedig a led sárgán villog az eszközön időnként. Látszik, hogy van adás. Ha följebbviszem a baudot pl 115200 -ra, akkor már látszanak valamik, de csupa értelmetlen karakter.
Kód: Egész kijelölése
/*
* main.c
*
* Created on: 2010.11.14.
* Author: pentike
*/
#include <avr/io.h>
#include <util/delay.h>
void serial_init(unsigned int bittimer) {
/* Set the baud rate */
UBRR0H = (unsigned char) (bittimer >> 8);
UBRR0L = (unsigned char) bittimer;
/* set the framing to 8N1 */
UCSR0C = (3 << UCSZ00);
/* Engage! */
UCSR0B = (1 << RXEN0) | (1 << TXEN0);
return;
}
void serial_write(unsigned char c) {
while (!(UCSR0A & (1 << UDRE0)))
;
UDR0 = c;
}
#define SPEED 9600
int main(void) {
char i = 0;
char *str = "the quick brown fox jumps over the lazy dog. 1234567890\r\n";
/* let the preprocessor calculate this */
serial_init( ( F_CPU / SPEED / 16 ) - 1);
while (1) {
serial_write(str[i++]);
if (str[i] == '\0') {
i = 0;
_delay_ms(500);
}
}
return 0;
}
„Bár az érdekes, hogy ha kiolvastatom a programozóval, az azt mondja, hogy 16MHz a chip frekvencia.”
Ez valami újdonság?
Még ilyenről nem is hallottam!

A belső oscilátort max 8Mhz-re álíthatod!
A külső kristály értékét meg nem lehet detektálni! (Csak Szemrevételezéssel (rávan írva), és jobb esetben arról is megy a procid!)

Ez valami újdonság?
Még ilyenről nem is hallottam!
A belső oscilátort max 8Mhz-re álíthatod!
A külső kristály értékét meg nem lehet detektálni! (Csak Szemrevételezéssel (rávan írva), és jobb esetben arról is megy a procid!)
A hozzászólást 2 alkalommal szerkesztették, utoljára kapu48 2010. november 17. szerda, 14:35-kor.
Eclipse avr-eclipse pluginnel. Van egy olyan gomb ami a chip típusát meg sebességét kiolvassa. Mondjuk lehet csak a típusát tudja meghatározni. Most nincs nálam az eszköz, de este kipróbálom.
SZERK: egyébként jogos, hogy a külső kristály órajelét csak macerásan lehetne mérni (gondolom mivel van belső is, a kettő arányát nem lenne nagy probléma meghatározni) és valószínűleg erre nincs is felkészítve a chip
SZERK: egyébként jogos, hogy a külső kristály órajelét csak macerásan lehetne mérni (gondolom mivel van belső is, a kettő arányát nem lenne nagy probléma meghatározni) és valószínűleg erre nincs is felkészítve a chip
A fusebit _nem_ a kezdo temakor!
Az arduinoban ez mar be van programozva!
Ha rosszul nyulsz a chiphez, akkor megölöd!
Biztositekbitekrol:
http://avr.tavir.hu/modules.php?name=Co ... age&pid=49
Az arduinoban ez mar be van programozva!
Ha rosszul nyulsz a chiphez, akkor megölöd!
Biztositekbitekrol:
http://avr.tavir.hu/modules.php?name=Co ... age&pid=49