Das sollte die richtige Variante sein.Zitat:
LOW
dann die 2 bytes durchjagen
dann wieder HIGH
Druckbare Version
Das sollte die richtige Variante sein.Zitat:
LOW
dann die 2 bytes durchjagen
dann wieder HIGH
hi zusammen
ich hab nun die stelle gefunden wo mein ATmega16 stehen bleibt:
nach der init für die rs232 und dem lcd-display sollte er eigendlich den rfm12 inititalisieren.
er ruft die funktion auf in der folgende einstellungen gemacht werden sollen:
mit den werten gehts dann ab in diese funktion:Code:register_setzen_an_rfm12(0x80D7); //433Mhz
register_setzen_an_rfm12(0x82B9); //enable transmitter enable synthesizer enable crystal oszilator disable CLK-PIN
register_setzen_an_rfm12(0xA4B0); //433Mhz
register_setzen_an_rfm12(0xC6BD); //9600Baud
dann weiter hier hineinCode:void register_setzen_an_rfm12(int wert)
{
PORTB &= ~(1<<SS);
senden_mit_rfm12(wert);
PORTB |= (1<<SS);
}
so und in der funktion "senden_mit_rfm12(int wert)" bleibt der avr stehen und zwar genau in an dieser stelle:Code:void senden_mit_rfm12(int wert)
{
cursor_auf_startpos();
text_schreiben("teilen rfm12");
PORTC |= (1<<PC3);
int werte_array[16];
int pruefung = wert;
int i = 0;
for(i = 0; i<=15; i=i+1)
{
pruefung=pruefung - pow(2,i);
if (pruefung >=0)
{
werte_array[i]=1;
}
else
{
pruefung=pruefung + pow(2,i);
werte_array[i]=0;
}
}
cursor_auf_startpos();
text_schreiben("sending rfm12");
while(!(PIND & (1<<nIRQ)))
{
}
int j = 0;
for(j = 0; j<=15; j=j+1)
{
if(werte_array[j] == 1);
{
PORTB |= (1<<MOSI);
}
if(werte_array[j] == 0);
{
PORTB &= ~(1<<MOSI);
}
PORTB |= (1<<SCK);
_delay_ms(1);
PORTB &= ~(1<<SCK);
}
PORTC &= ~(1<<PC3);
}
kann es sein das der nIRQ verkehrt herum gepolt ist sprich das er wenn er was empfängt auf LOW springt und wenn der rfm12 sendebereit ist dann ist er auf HIGH?Code:while(!(PIND & (1<<nIRQ)))
{
}
jedenfalls is bei mir der nIRQ dauerhaft auf 1 weshalb die schleife sich nicht beendet
jemand ne idee? die schleife is ja da drin um zu verhindern das wärend ich empfange gesendet wird bzw andersrum
grüße
EDIT entschuldigt sich für den doppelpost
Stimmt, so müsste es gehen:
while(PIND & (1<<nIRQ))
Kann mir jemand sagen, wie ich das RFM12 an einen AtTiny26 anschliesen muss (der hat ja keinen SS Ausgang).
mfg
den muss er haben wenn er eine spi schnittstelle hat (gehört dazu)
beim programmieren des IC's wird der ss auf HIGH gesetzt damit solange alle anderen module ausgeschaltet sind (is bestandteile des bussystems welches durch die SPIschnittstelle aufgebaut werden kann)
ansonsten isses aber auch nicht so schlimm du kannste irgenwelche pins nehmen statt SS MISO MOSI bzw. CLK zum ansprechen des rfm12 da sowieso jede pinbelegung expleziet gesetzt wird und keine automatische SPIeigenschaft benutzt wird.
frage: schreibst du die init/transmit/reciev funktion selbst und in c mit nem GCC? wäre super wenn du mit die funktionen mal zeigen kannst dann.
meine funktionieren immernoch nicht und ich weiß nicht warum.
grüße
Schau doch mal auf der 1. Seite 5. Beitrag von mir. Dort hab ich die Header-Datei RFM12.h hochgeladen. Diese Datei hab ich irgendwo im Internet gefunden und etwas verändert. Ich verwende die Funktionen von ihr zum senden (und empfangen) von Daten. Aber da mein Programm gerade noch nicht fertig ist, weiß ich nicht, ob alle Funktionen so funktionieren, wie sie es sollten.
kannste wenn dein prog fertig is das trotzdem vllt hier reinstellen weil das auf seite1 hab ich irgendwie nicht verstanden bzw kann ich damit nix anfangen weil die funktionen die dort aufgerufen werden mir ja fehlen und genau die bräuchte ich um zu sehen was ich falsch gemacht hab
Kein Wunder, dass dir die Funktionen fehlen, ich hatte diesem Beitrag eigentlich eine Datei angefügt, aber die ist jetzt wohl verschwunden. :?
Egal, hier ist die Datei:
mfg
Jetzt ist die Datei auf der 1. Seite plötzlich wieder da???!!! Das verstehe ich nicht. :? :? :?
hi
wo issen die datei angefügt??? ich seh keinen link keinen button für anlage oder so
??? wusste auch garnich das man hier im forum sowas machen kann
EDIT sagt: oh ok habs
aber die header datei bringt mir auch nix
ich meinte eigendlich die .c datei
Wieso denn das? - Du hast die Funktionen zum Ansteuern in der RFM12.h und wie du das Modul initialisieren musst steht ja auf der 1. Seite 5. Beitrag von mir. Daraus kannst du dir dann deinen Code (-> .c Datei) schreiben.
Es kann noch etwas dauern (paar Monate) bis mein Code fertig ist, da er sehr komplex wird und ich momentan nur sehr wenig Zeit habe.
weil die init nicht die funktion ist die ich sehen will und bei mir berichtigen
ich wollt wissen wie die bei senden und empfangen aussieht.
da ja in der init nicht mehr passiert als das ich dem rfm12 einige bestimmte zahlen zum senden gebe.
daher wollt ich halt die sendefunktion haben weil ich glaube das dort mein fehler steckt
In der Datei stehen doch auch die Sende- und Empfangsfunktion:
rf12_rxdata() Daten empfangen
rf12_txdata() Daten senden
hey, bin jetzt endlich soweit, dass bei mir die schaltung mit den rfm12 aufzubauen, jetzt ist mir beim durchlesen aufgefallen, dass ich nen atmega32 verwende, ist das ein problem bzw. ist da die pinbelegung die gleiche?
ich such jetz nochmal bei mikrocontroller.net wegen diesem beispielprogramm, und wenn das so passt werd ichs mal einbauen und mich dann frisch ans programmieren machen
MfG Pr0gm4n
ps: ich kenn mich auch bei header- und includedateien in folgender hinsicht noch nicht aus:
wenn ich diese rfm12.h in meinem programm include, dann sind da funktionen drin mit denen ich zeichen/integers senden bzw. empfangen und das modul initialisieren kann oder stehen da bloß die namen und die eigentliche funktion in der rfm12.c z.b.
keine ahnung wie das läuft...