serial usb program

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Avatar
pentike
DrótVégénSzéndarab
Hozzászólások: 21
Csatlakozott: 2010. november 6. szombat, 6:00

serial usb program

Hozzászólás Szerző: pentike »

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
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Sebesség: 9600 bps. Nagyobb sebesség esetén hibás lehet a kapott adat.
Az Arduino alatt a Example->Communication->ASCII table.pde-t próbáld meg.

PC-n és a ARDUINO-ban azonos legyen a sebesség!
Avatar
pentike
DrótVégénSzéndarab
Hozzászólások: 21
Csatlakozott: 2010. november 6. szombat, 6:00

Hozzászólás Szerző: pentike »

Nem arduinoval csinálom, hanem csak simán:

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;
}
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.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A stabil kommunikáció a 16 MHz-s kristály miatt 19200 bpsig OK, felette trükközni kell!

Szerintem a soros regisztered nincs jól beállítva....


Arduino-t azért javaslom, mert így eldönthető, hogy hol a hiba:
-avr
- soros driver
- PC oldali SW beállítása
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Az AVR biztosítékbitjeit igaz nem állítottad el sehova?
Az eredeti arduino-s beállításon vannak?
Avatar
pentike
DrótVégénSzéndarab
Hozzászólások: 21
Csatlakozott: 2010. november 6. szombat, 6:00

Hozzászólás Szerző: pentike »

Nem, biztosíték biteket nem állítottam. Annak milyen jelentősége lenne? Este feltöltöm rá az arduino-t. Abban alapból van soros kommunikáció?
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

A Hardwer hibát már kizártad?
Nekem is van pl.: Rossz USB-s vezetékem (Vékony Kinai!)
Ami csak tápegységnek jó!
:roll:
Avatar
pentike
DrótVégénSzéndarab
Hozzászólások: 21
Csatlakozott: 2010. november 6. szombat, 6:00

Hozzászólás Szerző: pentike »

Mobil vinyóról húztam le, az gond nélkül működött vele, szóval nem hinném, hogy ez a gond, de azért biztos ami biztos, majd megpróbálom másik kábellel.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Az arduinoban alapban sokminden alap dolog van....

Ha nem piszkáltad a chipet, akkor külső 16 MHzról jár... (AVR-Duino alapbeállítás)
Ha szűz chip: 1 MHz belső.
Avatar
pentike
DrótVégénSzéndarab
Hozzászólások: 21
Csatlakozott: 2010. november 6. szombat, 6:00

Hozzászólás Szerző: pentike »

Ez lesz a megoldás. Egy olyan chip van benne amin nincs AVR-Duino matrica, szóval lehet az 1 MHz-n ketyeg és ezért kell az egekbe állítani a baudot, hogy valami megjelenjen. Bár az érdekes, hogy ha kiolvastatom a programozóval, az azt mondja, hogy 16MHz a chip frekvencia.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

„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!)
:lol:
A hozzászólást 2 alkalommal szerkesztették, utoljára kapu48 2010. november 17. szerda, 14:35-kor.
Avatar
pentike
DrótVégénSzéndarab
Hozzászólások: 21
Csatlakozott: 2010. november 6. szombat, 6:00

Hozzászólás Szerző: pentike »

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
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Ha feltöltesz á prg-t, akkor tudsz sebességet mérni.
Az AVR nem adja vissza, hogy min jár.
ha az eclipse-ben kiválaszhatsz arduino-t, az _szabvány_ 16 vagy 8 MHz-s....
Avatar
pentike
DrótVégénSzéndarab
Hozzászólások: 21
Csatlakozott: 2010. november 6. szombat, 6:00

Hozzászólás Szerző: pentike »

Világos. Ha nem arduino-val szeretném megcsinálni, akkor milyen fuse biteket kell beállítani? Illetve az arduino-hoz is kellenek a megfelelő fuse bit beállítások nem?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

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
Válasz küldése