ik wil een 8 bits serieël signaal gaan demultiplexen. het is een bestaand 8 bits signaal waarvan nog niet bekend is of er een start- en/of stopbit aanwezig is.
hoe zit dat met de uart van een atmel microprocessor, heeft deze perse een start of stopbit nodig om te synconiseren?
en als het serieële signaal nou eens alleen een start- of stopbit blijkt te hebben, of juist allebij. kan de uart dat signaal dan altijd gebruiken? herkent de uart zelf een eventueel start-/stopbit of moet je dit programmeren?
ik denk dat de at90s2313 wel geschikt zal zijn.
op de site van atmel is de datasheet te vinden
http://www.atmel.com/dyn/products/datasheets.asp?family_id=607
Volgens mij heb je bij atmel altijd een start en een stop bit nodig. Zelfs met USART van bijvoorbeeld de MEGA128.
Heb je dat serieele signaal een klok zitten dan? Want anders kan niet verzenden zonder startbit en zonder stopbit is de kans op fouten wel erg groot.
het signaal is afkomstig van een radardetector. het ondvangende gedeelte (de antenne) zit in de bumper en stuurt een 8 bits serieël signaal naar het kastje in het dashboard dat piept (display genaamd).
dit display gaan we nu voor school project vervangen door een eigen fabrikaat.
er is maar 1 signaalader tussen antenne en display (en 2aders voor de voeding, dus 3 in totaal). het 8 bits signaal heeft een baudrate van 9600 bps. deze informatie heb ik van de importeur, ze konden me niet vertellen of er een start- en/of stopbit aanwezig is/zijn.
maar de uart, heeft die echt een start en een stopbit nodig?
Het start bit is echt nodig. Maar zal er wel in zitten probeer anders eerst even of er data naar een pc gestuurd wordt met bijvoorbeeld hyperterminal.
Ik heb ook veel met AVR's en seriele protocollen gewerkt. Om te achterhalen op wat voor protocol die radar werkt kan ik je Windmill Comdebug sterk aanraden. Is een freeware tooltje waarmee je echt alles met je seriele poort kunt doen, de link waar je hem kunt downloaden: http://www.windmill.co.uk/comDebug.zip
Als je dit gebruikt ben je er binnen 1 minuut achter.
Dus: even die radar aan de pc knuppen met 3 draadjes en met behulp van de bovenstaande software het protocol te ontrafelen.
[Bericht gewijzigd door Toverstaf op ]
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
UART/USART werkt altijd met 1 startbit, en 1 of meerdere stopbit(s), 1 of geen pariteitsbit, en 5 tot 9 databits. Dit hoort nou eenmaal bij het protocol en daar kan je wel in gaan rotzooien maar dan werken apparaten die op dat protocol zijn gebaseerd niet meer.
De interne UART van een AVR werkt dan ook niet meer. Die heeft namelijk hardwarematig dat protocol ingebouwd zitten.
sytse
Euh......
Je kunt er volgens mij wel van uit gaan dat er een start en stopbit aanwezig zijn. Maar als dit nu niet zo is kun je ook een software uart gebruiken op je AVR hier kun je zelf instellingen in veranderen als je dat zou willen. Zie www.atmel.com bij aplication notes voor informatie over die software uart
ik heb de detector nu op de com poort aangesloten. met hyperterminal ondvang ik raar genoeg helemaal niks. met windmill ondvang ik allemaal nullen met af en toe een ander karakter (waarschijnlijk ondvangt de detector dan even een signaal).
maar ik met windmill niet bekijken of er een start en stopbit(s) zijn. hoe kan ik hier achter komen?
ehm ja, inderdaad.
toch een start en stopbit(s)
hoe kom ik er nu achter hoeveel stopbits er zijn?
met windmill ondvang ik data, zowel met 1 als met 2 stobits ingesteld
jawel een rs232 zit zo in elkaar
- = hoog signaal
_ = laag signaal
d = data
_dddddddd-
s d s
t a t
a t o
r a p
t b
b i
i t
t
als er niets verzonden wordt is het kanaal hoog.
Om aan te geven dat je gaat verzenden maak je het kanaal
laag(startbit). Dan verstuur je de dat en maak het kanaal
weer hoog(stopbit(s)).
Als de zender 2 stopbits heeft en de ontvanger 1 dan gaat
het goed want de ontvanger denkt dan dat even niets
verstuurd wordt.
_dddddddd--_dddddddd-
Als de zender 1 stopbit heeft en de ontvanger 2 dan gaat
het fout want de ontvanger kan dan niet meer de aparte
bytes onderscheiden.
_dddddddd-_dddddddd-
hier is er nog veel meer info erover
http://www.lammertbies.nl/comm/info/nl_RS-232_specs.html#intr
bedankt voor het speurwerk,
op die manier ondvangt de pc dus de data, maar een avr microcontroller? moet die niet exact weten hoeveel
stopbit('s) er zijn? of ziet hij een stopbit extra ook als 'geen data' zoals rs232
is er geen computer programmatje waarmee je de serieële poort binair kunt uitlezen?
dat er dus gewoon heel eenvoudig 100000000010000000001000000000 of iets dergelijks komt te staan
sven
pointers don't kill programs, programmers kill programs
zo ver ik weet kan je bij een UART bij een AVR niks instellen van start of stopbits.
In je RX-buffer komen gewoon de eerste 8 (of 9) bits te staan.
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op 14 oktober 2003 22:47:43 schreef willemhs:
op die manier ondvangt de pc dus de data, maar een avr microcontroller? moet die niet exact weten hoeveel
stopbit('s) er zijn? of ziet hij een stopbit extra ook als 'geen data' zoals rs232
Bij een AVR moet je instellen of het 1 1,5 of 2 stopbits zijn.
is er geen computer programmatje waarmee je de serieële poort binair kunt uitlezen?
dat er dus gewoon heel eenvoudig 100000000010000000001000000000 of iets dergelijks komt te staan
Nee, want niemand heeft daar wat aan.
Of je moet het gewoon zelf schrijven.
Op 14 oktober 2003 22:53:56 schreef sven:
zo ver ik weet kan je bij een UART bij een AVR niks instellen van start of stopbits.
In je RX-buffer komen gewoon de eerste 8 (of 9) bits te staan.
Dan weet je nog niet genoeg van AVR's 
Maar ik snap nog steeds niet wat er nou wordt gezeurt over die start en stopbits. Die zijn helemaal niet van belang. Daar moet je helemaal niet naar kijken, en wil je dat wel graag doen dan moet je eerst maar een cursus nemen over RS232 ofzo.
[Bericht gewijzigd door Bastiaan op ]
hoezo een cursus nemen over RS232, wat heeft dat met de uart in een avr te maken. en wat ik zeur over dat start en stopbit(s), ik wil graag weten of de avr iets kan met het serieële signaal van de antenne. blijkbaar wel, want er is een start en stopbit(s) (wat volgends de leverancier waarschijnlijk niet zo was?!?)
wat ik nu nog weten wil is of de antene 1, 1.5, of 2 stopbits heeft. maar ik denk dat ik daar via de pc niet achter ga komen. en dat dus maar gewoon moet uitproberen.
sven
pointers don't kill programs, programmers kill programs
[...]
Dan weet je nog niet genoeg van AVR's
Dat kan misschien wel zijn, maar met de types waarmee ik werk, heb ik nog geen vermelding gevonden van start of stopbits. Bij een USART wel daarentegen...