PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ein 8 Bits per funk mit AVR übertragen



jojo.glaser
26.09.2006, 17:38
Hi,

Ich habe mir von ConradEin Funk-Sende/Empfänger-Set 433 MHz AM gekauft.

Jetz möchte ich das PortA von einem AVR als eingang nutzen und mit dem Funkmodul übertragen und das PortA vom 2. AVR als ausgang nutzen.

Der sender und der empfänger können serielle Daten senden und empangen.

Ich habe den sender schon an den AVR angeschlossen und den Empänger an den anderen.

Ich bekomme es hin, das Signal von einem Pin zu übertragen.

Wie kann ich ein ganzes Port übertragen??

Vielen Dank für deine Hilfe!!!

pongi
26.09.2006, 18:29
Warum bracuhst du bei einer seriellen Datenübertragung ein ganzes Port??? Sinn einer seriellen Übertragung ist ja, dass man dazu nur eine Leitung zum senden, und eine zum empfangen braucht (also ein Sende-Pin, und ein Eingangspin). Ausserdem hat ein AVR schon eingebaute UART-Ressourcen (quasi für serielle Übertragung), und dafür sind schon zwei Pins vorkonfiguriert. Es ist viel einfacher, die zu benutzen. Ein ausgiebiges tutorial für den UART gibt es unter www.mikrocontroller.net

pongi

AVRboy
26.09.2006, 18:30
hi,

in was schreibst du denn deine programme. und was ist das denn genau für ein funkmodul denn bei conrad gibt es viele 433mhz am module.
und was meinst du mit porta ........ ich verstehe das irgend wie nich so ganz genau geht das noch ein bischen genauer oder verständlicher.

mfg

jojo.glaser
26.09.2006, 18:34
Mit PORT A meine ich die 8 Pins am AVR das PORT, das PORT A heißt.

Ich progge in C und habe das

http://www1.conrad.de/scripts/wgate/zcop_b2c/~flNlc3Npb249UDkwV0dBVEU6Q19BR0FURTEyOjAwMDEuMDMxZ S41ZDEyNjNjOSZ+aHR0cF9jb250ZW50X2NoYXJzZXQ9aXNvLTg 4NTktMSZ+U3RhdGU9MjkwMjQ3NzcyMw==?~template=PCAT_A REA_S_BROWSE&mfhelp=&p_selected_area=%24ROOT&p_selected_area_fh=&perform_special_action=&glb_user_js=Y&shop=B2C&vgl_artikel_in_index=&product_show_id=&p_page_to_display=DirektSearch&~cookies=1&zhmmh_lfo=&zhmmh_area_kz=&s_haupt_kategorie=&p_searchstring=Sende%2fEmpf%e4nger&p_searchstring_artnr=&p_search_category=alle&r3_matn=&insert_kz=&area_s_url=&brand=&amount=&new_item_quantity=&area_url=&direkt_aufriss_area=&p_countdown=&p_80=&p_80_category=&p_80_article=&p_next_template_after_login=&mindestbestellwert=&login=&password=&bpemail=&bpid=&url=&show_wk=&use_search=3&p_back_template=&template=&titel=&darsteller=&regisseur=&anbieter=&genre=&fsk=&jahr=&jahr2=&dvd_error=X&dvd_empty_error=X&dvd_year_error=&call_dvd=&kna_news=&p_status_scenario=&documentselector=&aktiv=&p_load_area=$ROOT&p_artikelbilder_mode=&p_sortopt=&page=&p_catalog_max_results=10

jojo.glaser
26.09.2006, 18:36
Mist der link geht net nehm bitte den:

http://www2.produktinfo.conrad.com/datenblaetter/175000-199999/190939-an-01-ml-Sende_Empfaenger_ModulSet_868MHz_de-en.pdf

magnetix48
26.09.2006, 19:00
Hallo,

überträgst du die Daten auch über die serielle Schnittstelle?
Was du machen mußt, ist den Port A des ersten AVR einlesen, in ASCII-Zeichen wandeln und über die serielle Schnittstelle ausgeben.
Auf der Gegeseite empfängst du seriell und gibst den Wert an Port A aus.

Gruß
Detlef

jojo.glaser
26.09.2006, 19:07
Ich kann ASCII im Roboternetz wissen nichts finden. Kannst du mir bitte einen link schicken? Währe nett! Danke

coCo
26.09.2006, 19:08
einfach ma google benutzen ;)

z.B. http://de.wikipedia.org/wiki/ASCII

jojo.glaser
26.09.2006, 20:16
jetzt weis ich, was ASCII ist, Danke!

Wie kann ich einen I/0 code an einem Pin ausgeben, so dass ein anderer AVR den I/0 code einlesen kann?

Wie man einen Pin auf hi oder lo setzt weis ich, ich kann auch einen code ausgeben, indem ich den pin in bestimmten zeitabständen ein oder ausschalte, aber wie mache ich es, das der AVR, der das signal empfangen soll den gleichen takt hat und z.B. nich ein hi 2x zählt .....??

Sorry ich bin noch anfänger, kannst du mir das erklähren, wie man so nen I/= code von eimen avr zum anderen überträgt?? Währe nett! Danke

BastelWastel
26.09.2006, 22:19
An deiner stelle würd ich erst mal klein anfangen und bissl was über die hard/software lernen die du benutzen willst..

Ich vermute was du brauchst ist..

8pins von PORTA komplett auslesen (Speicheradresse des entsprechenden Registers findest du im Datenblatt),
der Wert besteht aus den besagten 8 bit "00000000" - "11111111" was dezimal 0 - 255 entspricht..
Betreffenden ASCII char schreibst du via UART seriell zu deinem funksender..
Auf Empfängerseite machst du das Spielchen genau umgekehrt..
ASCII char entgegennehmen, entsprechende Wertigkeit in das Register deines Ausgangsports schreiben und fertig..

Also am besten erst mal was über UART lesen.. (https://www.roboternetz.de/wissen/index.php/UART)

jojo.glaser
26.09.2006, 22:36
ja! genau so, aber wie sende ich das port seriell und zwar so, das es der avr, der es empfängt auch versteht? Der wes ja net ob der momentanz zustand für bin 1 oder 2 oder 3... steht wie mache ich sowas??

BastelWastel
26.09.2006, 23:30
Du sendest doch alle 8 bit (als 1 byte ASCII) auf einmal...

pongi
27.09.2006, 18:32
Ich galub, dass ich jetzt verstehe, was du meinst.... Du hast Daten im PORTA Register, und die willst du über serielle Schnittstelle zu einem anderen AVR senden, oder?
Dazu verwendest du am besten den eingebauten UART. Mehr dazu findest du -wie ich schon einmal erwähnt habe- unter http://www.mikrocontroller.net/tutorial/uart.
Die einzige Veränderung ist, dass du für die Kommunikation mit dem anderen AVR die Schaltung mir dem MAX232 nicht brauchst, da kannst du RX/TX bzw TX/RX direkt verknüpfen.

pongi

BastelWastel
27.09.2006, 20:26
sag ich doch die ganze zeit ^^

shaun
27.09.2006, 21:32
Beachte bitte, dass Du wenn Du vom Port A lesen willst, nicht PORTA sondern PINA benutzen musst, die Pin-Zustände des Eingabeports. DDRA muss dafür auf 0 stehen.

jojo.glaser
27.09.2006, 22:21
Ja, aber ich habe doch nur einen Kanal an der Funkübertragung und da muss ich jetzt einen Code hinschicken, der mir nacheinander die Bits überträgt. wie mache ich das??

BastelWastel
27.09.2006, 22:37
uargh...
der UART in deinem µC regelt die serielle komunikation nach paar einstellungen wie z.b. boudrate alleine..
wenn du den link gelesen hättest den ich dir gegeben habe müßtest du nich alles 5mal fragen...

https://www.roboternetz.de/wissen/index.php/UART

hier findest du sehr viele hilfsbereite leute, aber ich glaube wenn du dir alles nur erfragen willst und nichmal ne seite liest die man dir gibt verlieren die meißten relativ schnell die lust dir zu helfen..

TomHumpen
28.09.2006, 10:44
Naja BastelWastel, vielleicht fragen wir erstmal ob er von der Manchestercodierung redet!
Immerhin ist laut Datenblatt der Sender verpflichtet die Daten an das 868Mhz Modul in Manchester Codierung zu schicken. Damit fällt UART wieder flach. Hier im Forum sind Beispiele und Erläuterungen zur Umrechnung in ManchesterCodierung vorhanden. Einfach suchen.

So long....

stochri
28.09.2006, 11:56
Gibt es bei 433MHz nicht die vom Gesetz vorgeschriebene Einschränkung, dass man den Kanal nur mit 1% Sendezeit belasten darf ? Die restliche Zeit darf man nicht senden ?
Wenn man es doch tut, wird man wahrscheinlich die ganzen Funktermometer im näheren Umkreis lahm legen.