Moin Leute, ich stehe hier auf dem Schlauch. Ich habe ein Konfigurations char der innerhalb einer for-Schleife an einen ADC übergeben werden soll. Ich habe also z.B.: 01100110 Dann möchte ich im ersten Durchlauf den entsprechenden Portpin auf Null setzten, im zweiten und dritten auf eins usw... Nur wie picke ich mir die Werte raus? Den umgekehrten Fall, einen Wert von einem Pin in einen char schieben habe ich kapiert, nur andersherum verstehe ich es nicht :-( Vielen Dank schonmal Dirk
Vielleicht willst du ja Hardware-SPI nehmen? In Software ungefähr so:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
Gast
#591375
Hast du dir mal SPI angeschaut?
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
mach dir noch Gedanken: - welchen Pegel haben die Leitungen, wenn nicht gesendet wird - wann kommt das Taktsignal, d.h. die Flanken (kein Taktsignal haben im µC-Bereich eigentlich nur 1Wire oder UART-Signal) - muss die Datenleitung zwischen In/Output umgeschaltet werden (falls es nur eine gibt) - in welcher Reihenfolge werden mehrere Bytes gesendet - Kannst du nicht vielleicht eingebaute Hardware (SPI, TWI, USART) oder fertigen Code benutzen (Hier im Codesammlung -Forum) hth. Jörg
Klar könnte man Hardware SPI nehmen, aber dann kapiere ich das ja nie. Ich möchte das einmal zu Fuß machen, danach kann ich ja das Auto nehmen... Vielen Dank für die Tipps, werde sie mal versuche zu verstehen. Habe aber auch schon selber weiter geschaut. Könnte das funktioneren?
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
Wenn in "flag" das auszugebende Byte steht, dann dürfte das klappen.
Gast
#591408
> 1<<i ist auf dem AVR evtl. nicht so günstig, der kann nur 1 oder 4 Bits auf einmal schieben, also auf jeden Fall das List-File anschauen > if(flag & (1<<i) !=0) finde ich sehr hässlich -- if(flag &...) tut exakt das gleiche (aber meine persönliche Meinung) und am Ende musst du nach dem > CLRBIT(PORTB,3); //SCK auf 0 wahrscheinlich noch mal warten (Nop/delay..) hth. Jörg
Ich schreibe ein Byte seriell über einen Portpin auf eine 3 Leitungs Chipkarte SLE4442 so:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.