Software C für Hardware
-
Hallo leute,
ich weiß nicht, ins welche forum ich meinen beitrag
schreiben sollte..s geht um folgendes:
ich soll per software-programmierung einen signal generator
programmieren, also sozusagen auf einer hardware. dabei gibt s mehrere anforderungen:1. verschiedene signalverläufe (also zeitmäßig von min. 8ms bis 128ms)
2. eine zeitspanne soll variabel einstellbar sein
3. soll über den rx-ausgang ausgegeben werden (im mom nicht so wichtig)um nochmal alles genauer zu erläutern:
ich habe einen 4bit schalter mit dem ich 16zustände generieren könnte.
den schalter also einlesen, welche stellung er hat und dann sozusagen
die bestimmten signalverläufe ausgeben, nachdem ein anderer druck-knopf
(dahinter muss noch eine entsprell funktion hinterlegt werden)
aussenden.wie kann ich dieses nun programmieren?
ich weiß, ich brauche drei funktionen:
1.schalter einlesen und überprüfen
2.signal auf ausgang legen
3.abfragen, ob der drucktaster gedruckt wurde und dann entprellzeit
beachtennochmal zu den zeitverläufen:
sollte der drucktaster betätigt werden, muss erst 8ms ein LOW-Signal und
anschließend min 8ms HIGH-Signal..dieses ist variabel und somit hinter
dem SWITCH-Schalter abgelegt.ein beispiel: ist der switchschalter auf 0000, dann liefert er mir die
zeit 8ms(LOW) und dann 8ms(HIGH). ist er auf 0001, dann 8ms (LOW) und
16ms(HIGH). 0010 = 8ms+24ms usw.ich hoffe, einer von euch kann mir helfen..
-
naja, entweder mit verzögerungsschleifen oder mit 'nem timer. wieso soll denn die pause immer 8ms sein?
-
also, s muss nicht immer 8ms sein..die ersten 8ms, die auf LOW sind, müssen bzw. sind vorgegeben..
mit der aufteilung von 8ms habe ich mir nur gedacht, dass dies dann einfacher wäre, wenn man eine wiederholbare zeit hat..
wie würden denn die verzögerungsschleifen aussehen??
also, ich habe mir schon überlegt, dass ich eine schleife mache, die
meinetwegen meine funktionen alle 2ms aufruft..dies ist schon
vorgegeben..dann muss ich halt die funktionen schreiben..den schalter kann ich ja mit hilfe von if-else abfragen oder gibts da
etwas einfacheres??und dann in den verschiedenen abzweigungen meine andere funktion
abfragen..bitte hilfe..
-
ungefähr so:
void delay_ms (int ms) { // hier code zum warten einfügen } ... int get_key_vaklue (void) { // hier den schalter auslesen return ...; } ... for (;;) { low(); // low signal ausgeben delay_ms (8+get_key_value()); // wartet 8 ms + schalterwert high(); // high signal ausgeben delay_ms (8+get_key_value()); // wartet 8 ms + schalterwert }
dan haste immer gleiches puls/pausen verhältnis.
-
danke für die hilfe..ich werde mir mal die sache angucken und berichten..
eine frage hätte ich aber noch: wie kann ich am einfachsten den schalter auslesen?? ich habe dies ja mit einer if-else verzweigung gemacht, aber da brauche ich ja 16 abfragen..
und wie kann ich einen timer für 1ms programmieren?? oder kennt sich einer aus mit timer von 8kHz die entsprechenden werte zu ermitteln??
-
PiotreD schrieb:
eine frage hätte ich aber noch: wie kann ich am einfachsten den schalter auslesen?? ich habe dies ja mit einer if-else verzweigung gemacht, aber da brauche ich ja 16 abfragen..
lies den schalter als byte ein und/oder shifte bzw. odere dir das so zurecht, dass die 4 bits die unteren bist eines bytes sind, dann hast du einen wert 0...15, mit dem sich's leicht arbeiten lässt.
PiotreD schrieb:
und wie kann ich einen timer für 1ms programmieren?? oder kennt sich einer aus mit timer von 8kHz die entsprechenden werte zu ermitteln??
das kommt auf deine hardware an. guckst du ins user-manual. wo soll das laufen?