-
Thread
LED Display mit 16x8 LED's
Ports neu aufzuteilen und mir die ersten 6 Zeilen vom PortB und die zwei die dann noch fehlen vom PortC nehmen. PortD dann zum anlegen vom 8Bit Muster. Wie würdet ihr daran gehen? Gruß AVRli, der nun schon ein "8x6" Matrix hat... *freu*
die zeilen gesteuert und direkt mit den ports die spalten. Mit nem Atmega 8 und 16Mhz inkl. uart geht das einwandfrei. Ich bastel nur noch grad an der software rum.
-
Thread
Einen allgemeinen Namen für alle PORTś definieren?
Hallo, meine Frage steht eigentlich schon im Titel. Kann man eigentlich für alle Ports (PORTA, PORTB, PORTC.....) einen und denselben namen definieren z.B. OUT. Wenn ja wie? Wäre sehr dankbar. So funktionierts auf jedenfall nicht: #define OUT PORTA #define OUT PORTB #define OUT PORTC while (1
Alex L. schrieb im Beitrag #1810943: > Kann man eigentlich > für alle Ports (PORTA, PORTB, PORTC.....) einen und denselben namen > definieren z.B. OUT. Wenn ja wie? Das geht nicht.
-
Thread
Probleme beim ansteuern eines LCD TC1602A-09 + ATMEGA8
Hallo, PORTC beim Mega 8 PC0-5 = ADC0-5 PC6 = RESET PC7 = ... nicht vorhanden! mal wieder das Datenblatt ignoriert? MfG
Hallo, also es geht *YaY*. Aber leider nur die ersten 8 Zeichen :(. Woran kann, das liegen? MFG
-
Thread
Platine für Mega16
Die Datenleitungen von PORTC und PORTD, da mache ich mir keine sorgen.
so nah wie möglich am Pin plaziert sein sollen. Der RESET-Pin ist direkt mit VCC verbunden. Das geht schon, ich würde in diesem Fall aber die Brown-Out-Detektion des ATmega16 aktivieren. Sonst sind im Unterspannungsfall skurile Effekte möglich.
-
Thread
Interrupt erwischt nicht immer alle Interrupts.
ISC01); Frequenzzaehler=0; //--Frequenzzähler nochmals auf 0 Setzen SET_BIT(PORTC,2); //--Reset Loslassen Delay_10ms(50); //--Kurz warten //--Frequenz berechnen //Periodendauer = (Frequenzzaehler/1000000.0); //Frequenz = ((1/Periodendauer
Frequenz = Frequenzzaehler; Frequenzzaehler = 0; CLEAR_BIT(PORTC,2); //--Reset erneut Ziehen //--Strom und Spannung hohlen Strom=get_Strom(); Spannung=get_Spannung(); //--R berechnen Widerstand = (Spannung
-
Thread
Einfache Schalter>LED-Schaltung: Register brauchen mehrere Sekunden zum Reset
nach dem "Loslassen" des Buttons noch einige Sekunden (~5) angeschaltet, bis sie schließlich aus geht. Per Suchmaschine habe ich dazu keine wirklich passenden Lösungen gefunden - ich hatte "als erstes Projekt" in der Vergangenheit auch eine Siebensegmentanzeige angesteuert, damals wurde "sofort" umgeschalten
gedrückt war. [c] #include <avr/io.h> #include <stdlib.h> int main(){ DDRB = 0x00; PORTC = 0xFF; DDRC = 0xFF; while(1) { if(PINB & (1<<PINB0) ){ PORTC = 0x00; } else{ PORTC = 0xFF; } } return 1; } [/c] Atmega 328P, als Entwicklungsboard
-
Thread
BASCOM-Einsteiger --> Bin-Zahl an Port ausgeben
ausgeben. Der Port steuert einfache LEDs, die mir den Wert dann also in binärer Form darstellen. Geht das zum Beispiel so für den Wert 100? Dim Minute As Byte Minute = Bin(100) Portb.0 = Minute.0 Portb.1 = Minute.1 Portb.2 = Minute.2 Portb.3 = Minute.3 Portb.4 = Minute.4 Portb.5 = Minute
z,B. so: Config Portb = output Config Portc = output Config Portd = output Minute=100 Portb.4 = Minute.0 Portb.5 = Minute.1 Portb.6 = Minute.2 Portb.7 = Minute.3 Portc.0 = Minute.4 Portc.1 = Minute.5 Portd.0 = Minute.6 Portd.1 = Minute
-
Thread
sbit bei AVR
das da passiert ist dann klar. Du könntest auch auf inline C Code zurückgreifen. inline void portc6(uint8_t value) { if (value) { // != 0 PORTC &= (1<<6); } else { // == 0 PORTC |= ~(1<<6); } }
sbi 0x15,6 sbrs r24,0 cbi 0x15,6 [/avrasm] Das sind gerade mal 5 Taktzyklen. Besser geht es nicht, wenn der Wert von i zur Compilezeit nicht bekannt ist.
-
Thread
Empfangen über SPI von ADC-Daten
Trailing-Edge } uint16_t SPI_receive_ADC() { cli(); // Interrupts deaktivieren PORTC |= (1<<PC0); // ADC Enable aus PORTC &= ~(1<<PC0); // Enable-Pin für ADC aktivieren uint16_t averageData = 0; averageData = (SPI_receive_byte()<<8); averageData |= SPI_receive_byte(); PORTC |= (1<<PC0); // ADC Enable aus sei(); // Interrupts aktivieren return averageData; } uint8_t SPI_receive_byte() // Byte empfangen { SPDR = 0x00; // Wert in Buffer schreiben
-
Thread
ungewollter Reset AtMega128
<< DDD0); // rotary encoder 1 //Pull Ups PORTD |= (1 << DDD0); PORTC |= (1 << DDC4); PORTC |= (1 << DDC5); } [/c]
durch niederohmigkeit des pullups wird für kurze Zeit Einbruch im Vcc verursacht. Dadurch geht µP in Reset. Beim Encoder habe ich damals 10MOhm eingesetzt.
-
Thread
AVR64DD28, mEDBG, Studio 7.0 - Fehler beim Schreiben von Fuses
Hallo, Fuse schreiben geht auch nicht, dann wird das Auslesen nach schreiben zum Vergleich fehlschlagen. Es kommt wahrscheinlich nicht das an was geschrieben werden soll. Ich schau mir das Morgen nochmal genauer. Die Flussmittelreste
Hardware, ich habe hier aus der 'tinyAVR® 1-series'-Reihe nur den ATtiny1614, und der hat keinen PORTC. Bei den AVRmxyn fehlt mal PORTB, mal TCA. Kurzum: wenn Sie Ihr Programm so ändern, dass es auf dem ATtiny1614 läuft (u.a. PORTC -> PORTA), will ich mich gerne mit Ihrem LDS-Problem befassen.
-
Thread
Entprellung Ziffern-Tastenfeld
Nachdem das jetzt geht, gibt es leider ein neues Problemchen: Ich habe noch 2 Tasten an PC5 und PC6 hängen. An PC0 bis PC3 hängen Ausgänge (Multiplexing eines LED-Displays). Ich möchte nun die Entprell-Routine erweitern
bewirken nichts. Also meine Vermutung ist, dass ich die Wechselwirkungen mit den anderen Pins an PORTC nicht richtig "ausgeblendet" bekomme??
-
Thread
PIC Interrupt - Gedankenfehler?
Ich denke mal du meinst mit UP=Unterprogramm? Das geht beim PIC nicht, hat auch nichts mit der Interrupttiefe (das wären z.b. 1 beim 16F, 2 beim 18F) oder der Stacktiefe (8 beim 16F, 18F grad ned im Kopp) zu tun. Geht einfach Prinzipbedingt nicht aus dem
Jens Plappert wrote: >Das geht beim PIC nicht, hat auch nichts mit der Interrupttiefe (das >wären z.b. 1 beim 16F, 2 beim 18F) oder der Stacktiefe (8 beim 16F, 18F >grad ned im Kopp) zu tun. Geht einfach Prinzipbedingt nicht aus
-
Thread
Ansteuerung Digitalpoti DS1267
ein Oszi angeschlossen. Der Signalgenerator gibt ein Rechteck auf Pin 2(H1) des DS1267, Pin 4(W1) geht an das Oszi, Pin 3(L1) liegt auf GND. Über ein LCD gebe ich die Daten aus, die an das DS1267 gesendet werden. Die Daten, die gesendet werden sind soweit korrekt. Was passiert ist folgendes: Beim ändern
Hier die relevanten Zeilen des Bascom-Programmes: ' Ansteuerung des DS1267 Ds1267_clk Alias Portc.5 Ds1267_dq Alias Portc.4 Ds1267_rst Alias Portc.3 Config Ds1267_clk = Output Config Ds1267_dq = Output Config Ds1267_rst = Output ... ' Lautstärke über DS1267 regeln Sub Setvolume(byval Tot_vol
-
Thread
ADC mit ATmega8A
tun hat, aber genau aus dem Grund lasse ich keine Warnig stehen. Zeile 206, 208, 1000 als uint8_t geht nicht. Zeile 230 Wert bei Initialisierung von i fehlt.
Habe das In-Out mal richtig gestellt. Auf meinem Testboard ändert sich der Ton wenn ich am PortC was mache. Habe allerdings keine Sensoren.
-
Thread
bringe GLCD nicht zum laufen.
kann wie ich das Ding zum laufen bringe?? Wenn du sagst um welchen AVR und um welches Display es geht, sowie die Anschlussbelegung zeigst, dann könnte man unter Umständen helfen.
Hi >PORTC: PC0 bis PC7 sind D0 bis D7 Dann hast du hoffentlich das JTAG-Interface abgaschaltet. MfG Spess
-
Thread
Bitreihenfolge tauschen
Falls es um avr-gcc geht: Neue Versionen haben ein extra built-in für solches Bitgefummel: [c] unsigned char inv (unsigned char portd) { unsigned char portc = __builtin_avr_insert_bits (0x04217563, portd, 0); return portc; }[/c] Für die obige Zuordnung wirft das folgende Sequenz raus: [avrasm]swap r24 bst r24,0 ror r24 bld r24,7 mov __tmp_reg__,r24 bst r0,0 bld r24,2 bst r0,2 bld r24,3 bst r0,3 bld
-
Thread
Kleine Bitmanipulationsfrage
scheint > aber so nicht zu funktionieren... Wie sollte es auch. Mit "|" ein Bit zu löschen, geht nun mal nicht.
ausdrücklich SBI zum "Single Bit toggle" genannt wird. Wenn die bei Atmel merken, daß das keinesfalls geht, Eden sie traurig sein.
-
Thread
Anfänger Frage zu PWM beim ATMEGA8
auch das tutorial zu interrupts bringt mich kein stück weiter. kann mir vlt jemand erklären wie das geht? welche interrupts ich brauche und wofür oO lg
Kanäle besteht, ein simpler 5 Zeiler in der Hauptschleife, der dann auch noch banal zu parametrieren geht.
-
Thread
2 Atmega8 über I²C / TWI verbinden
main (void) { DDRB = 0b00000001; //PB0 = Ausgang PORTB = 0b00000000; // LED aus ! PORTC = 0b00110000; // Pull-Up für TWI an PORTC4 und 5 //TWI als Slave mit Adresse slaveadr starten while(1) { init_twi_slave(SLAVE_ADRESSE); //i2cdatamit Werten füllen
Narkus Schlitz schrieb im Beitrag #4051889: > ............. Wenn das so weiter geht, dann wird das nichts, lieber Knarkus Schwitz
-
Thread
Messn wieoft ein Schalter prellt
ist die Taste gedrückt worden. Jetzt kann aber das Signal noch eine Zeitliang prellen. Das Signal geht also wieder zurück auf 1, nochmal auf 0, wieder auf 1 und wieder auf 0. Dein Programm untersucht also ständig das Signal um diese Wechsel zu erkennen. Dazu vergleicht es einfach den jetzigen Pin
was er da macht ist so ziemlich die einzige Möglichkeit einen Taster so schnell es nur irgendwie geht per Polling abzufragen. Wenn er damit ein Prellen nicht feststellen kann, dann wäre Prellen in einer Polling-Umgebung kein Problem.
-
Thread
B ASCOM, mega8, Zeit anzeigen
Nicht PortB, PORTC !
Iss ja richtig... Portc.6 = Reset Port.7 = Gibt es nicht!! Soll ich den Mega vielleicht noch einen Anschluss extra anbauen?
-
Thread
Interupt löst nicht aus, was mach ich falsch?
--------------------------------- ISR(INT1_vect) { PORTC = 0b00000001; } //-------------------------------------------------------------------- // TIMER0_OVF_vect - Timer0 Interrupt bei Überlauf // aktuelle Einstellung: 14.063 Hz 71.111 ms //-----
Der Timer läuft, es geht nur um INT0 und INT1.
-
Thread
Digital-Servo Futaba S3151 am ATMega48
freiem Auge und ohne Messgerät erkennbar abweichend von 1 Sekunde. Habe den Test gemacht. LED geht regelmäßig nach einer Sekunde an und wieder aus. Scheint taktmäßig alles OK zu sein. Folgenden Code habe ich dazu verwendet: [c] void delay_ms(int ms) { TCCR0B |= (1<<CS01) | (1<<CS00)
) ; TCNT0=0; } TCCR0B=0; } int main() { DDRC = 0b00100000; while (1) { PORTC |= (1<<PC5) ; delay_ms(1000); PORTC &= ~(1<<PC5) ; delay_ms(1000); } } [/c]
-
Thread
RAM-Bankswitching - wie am geschicktesten mit GCC auf AVR?
; adr.dw=address; PORTF=(PORTF&0x0F)|(adr.b[3]<<4); PORTC=adr.b[2]; //(oder wo auch immer A8-15 liegen) uint8_t *zeiger = (uint8_t *) adr.b[0]; *zeiger = byte; } [/c] Das dürfte nochmal etwa Faktor 2 schneller sein, als obige Lösung. Allerdings ist
Benedikt K. wrote: > PORTF=(PORTF&0x0F)|(adr.b[3]<<4); > PORTC=adr.b[2]; //(oder wo auch immer A8-15 liegen) Die Indizes würde ich nochmal überdenken. Ich bin übrigens nicht sicher, ob die Variante über Speicheradressen via union schneller ist, als die geschickte
-
Thread
Unklarheit bei Berechnung von OCR1A / Timer1-Delay
und erhalte für 1+OCR1nA den Wert 7812,5. Diesen packe ich in meinen Code (Auszug): [c] //PORTC &= ~(1 << PINC0); // spikes vermeiden DDRC = (1 << PINC0); // timer configurieren TCCR1B = ( (1 << CS12) | (1 << WGM12) ); // Prescaler auf 1024 und CTC mode akivieren OCR1A = 7812; //
ISR(TIMER1_COMPA_vect){ flag = !flag; // toggeln // ausgang setzen if (flag) { PORTC |= (1 << PINC0); } else { PORTC &= ~(1 << PINC0); } } void main(void) { init(); for(;;) {} } [/c]
-
Thread
Ausgangsbits werden nicht gelöscht
) | (1<<PC5) | (1<<PC6) | (1<<PC7) ); // Datenrichtungsregister für PORT C setzen (Eingänge) PORTC |= (1<<PC0) | (1<<PC1) | (1<<PC2) | (1<<PC3) | (1<<PC4) | (1<<PC5) | (1<<PC6) | (1<<PC7); // Datenregister für PORT C setzen (Pull-Up-Widerstände aktivieren) DDRB &= ~( (1<<PB0) | (1<<PB1)
Neuer Tag Neues Glück, habe gerade das Programm nochmal probiert und siehe da es geht auf einmal. Trotzdem danke für die Mühe.
-
Thread
Timer0/ PWM auf Atmega48/88
flüssigen aber gut ausreichenden Sprachkenntnissen auch nich unbedingt einfachst zu lesen). Aber ohne gehts nicht, das stimmt schon. >Zum Erzeugen von Frequenzen ist CTC besser als Fast PWM geeignet. Dann versuch ichs mal...
aber gut ausreichenden > Sprachkenntnissen auch nich unbedingt einfachst zu lesen). Aber ohne > gehts nicht, das stimmt schon. Das kann ich verstehen. Die Kapitel sind schon sehr umfangreich im Datenblatt. Wenn man aber erst einmal weiß, welcher Modus was macht, dann ist es eigentlich sehr einfach
-
Thread
Handycamera MCA-25 ansteuern - ip webcam mit mega32
ich hab keine ahnung warum aber es geht plötzlich. Aber ping geht nimma (auch ned ohne Cam). Hab mal n DivX video hochgeladen: www.ludwigspowerseite.de/MCA25video.zip
oder Server abgestürzt... jetzt geht nix mehr
-
Thread
74LS245 zu lahm?
quasi so aus: [c] do { while(PINC & (1<<PINC5); //warte bis ARDY an der Z80-PIO anliegt PORTC |= (( 1<<PINC3 )); // setze ASTB *buffer++ = PINA; PORTC &= ~(( 1<<PINC3 )); // lösche ASTB while(PINC & (1<<PINC5); //warte bis ARDY an der Z80-PIO erloschen ist while (durchlauf <
Wie genau funktioniert die Z80-PIO? Ich hätte gedacht: Ausgangszustand: /ASTB ist high ARDY geht irgendwann auf high -> sagt mir "ich habe Daten für dich" /ASTB wird auf von mir auf low gesetzt (ich setze es auf High, über den NPN geht es aber auf Low) Daten liegen nun an der PIO an. Ich lese
-
Thread
2-Draht Übertragnung
selbige dann bitweise ausliest, hast Du mit wenig Aufwand sehr viele Signale verarbeitet. Vielleicht gehts auch ohne Umweg über ne weitere Variable, aber ich kenne Dein System nicht. Grüße, Tom PS: Welche SPS verwendest Du?
Func2=In Func1=In Func0=In // State6=P State5=P State4=P State3=P State2=P State1=P State0=P PORTC=0x7F; DDRC=0x00; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=
-
Thread
16 bit timer als delay nutzen um lm75 auszulesen
} //Programmende /* void pb_reset(void) { if(bit_is_clear(PIND, PIND3) ) { PORTC &= ~(1<<PORTC6) ; PORTD |= (1<<PORTD1) ; PORTD &= ~(1<<PORTD1) ; } else{ PORTC |= (1<<PORTC6) ; PORTD |= (1<<PORTD1); } }//ende pb_reset */
Benutze bitte die c-Umgebung für Code oder lade die C-Datei selbst hoch. 2. Was willst du nun wissen? Geht deine Auslesefunktion und du willst das nur noch zyklisch abfragen?
-
Thread
ATMega128 - Programm Reset nach Portzugriff (PORTA)
LCD-Controller in einem 12864 LCD ansprechen. Die Datenübertragung ist im 8-Bit-Mode. Datenport ist PORTC, Über PA4..PA7 laufen RS, RW, E und RST. Der ATMega128 hat folgende Fuses: L:E4, H:D1, E:FF. Problem: Sobald ich PA7 auf "hi" setze (also nach dem RESET des LCD) und einen weiteren Schreibzugriff
in das Hauptprogramm setze, der Fehler dann nicht mehr auftritt. Dann habe die PINs an PORTA und PORTC bei Überprüfung mit dem Scope die korrekten Signale und Soft- und Hardware arbeiten einwandfrei. Die Platine habe ich auch überprüft. Zwei ATMega128 (jeweils auf Breakoutboards verlötet) zeigen
-
Thread
PIC16f887 PORTB Interrupt funktioniert nicht
MOVWF PORTB CLRF SHADOW_PORTC MOVF SHADOW_PORTC MOVWF PORTC CLRF SHADOW_PORTD
Warum der Port-Change Interrupt nicht geht, sehe ich auch gerade nicht. Aber müsste nicht z.B. MOVF SHADOW_PORTA heißen: MOVF SHADOW_PORTA,W AFAIK nimmt der Assembler sonst als Default-Destination "File" (MOVF SHADOW_PORTA
-
Thread
STK500 + Servo Problem
einstellen? so sieht mein programm aus: $crystal = 4000000 $regfile = "m163def.dat" Config Portc.0 = Output Config Portb = Input Portb = &H03 Config Servos = 1 , Servo1 = Portc.0 , Reload = 10 Enable Interrupts Dim Winkel As Byte Winkel = 70 Servo(1) = Winkel Do If Pinb.1
Dauerbrenner, da wurde schon hunderte mal erschöpfend drüber diskutiert. Ist fast so ergiebig wie "LCD geht nicht"... ...
-
Thread
ATmega128 und SPI Problem
nein, er muss nicht auf Ausgang stehen, aber er darf niemals low werden, sonst geht der µC vom Master- in den Slave-mode über.
den Pin wenigstens noch gebrauchen. Darum macht es Sinn ihn direkt als CS Pin zu nehmen. Dafür geht er gut, man hat keinen Pin verschwendet und man kommt später nicht in Versuchung den Pin als Eingang zu verwenden.
-
Thread
LCD von Peter Fleury
kleines LED Flackern, weil mein Display an Port C und nicht an Port B angeschlossen ist aber nun geht es! Echt vielen Dank! Gruß Sebastian
hallo, ich kriege das lcd-display am portc nicht zum laufen. wer kann ein beispiel herstellen. ich hänge schon mehrere tage bei. mfg pebisoft
-
Thread
Elektronisches Metronom
| 328Ohm PC7 | 1 | 329Ohm Eigentlich sollte das doch so stimmen oder?! Das geht jedenfalls aus dem datenblatt der Anzeigen hervor: (siehe Anhang) Grüße
Hi, die Situation hat sich ein wenig geändert: das metronom geht in den Sleep modus und wacht auch wieder auf. Komischerweise nur extrem selten. Also es geht extrem selten in den sleep modus. Das ganze sieht dann etwa so aus: http://tinyurl.com/35tk6yg Woran
-
Thread
HD44780 LCD - Keine Anzeige
Jeder der noch alle Tassen im Schrank hat klickt nicht auf ein Word Dokument. Geht das nicht als Textdatei?
wurde, geht das nicht. Die Datenleitungen müssen an PC0 bis PC3 angeschlossen werden. Sinnvoll wäre hier ein Anhang mit dem Schaltplan deines Aufbaus. Man kann die Steuerleitungen und die Datenleitungen an verschiedenen
-
Thread
Bitlevelaccess PORTF und PORTG MEAGA 64
meckert er delay_us(3); adr_reset=0; // da meckert er auch DDRC=0xFF; // PORTC -> Output cs_memory=0; PORTC=0xAA; delay_us(1); cs_memory=1; // sonstiger kram Gruss Tobi
Das heisst bitsetting geht nicht? oder muss ich dann auf ASM ebene runter? Wenn ja wie? Gruss Tobi
-
Thread
NeuesOS für AVR Mikrocontroller
Hallo ??? Kann mir jetzt einmal jemand sagen, um was es hier eigentlich geht ?? Das herumhacken und herumzicken geht langsam auf dem sack. Geht es jetzt um technische weiter entwicklung oder ob jemand etwas veroeffentlicht unter GNU und dabei wo moeglich einige Code fragmente
Roman65536 schrieb im Beitrag #1869372: > Kann mir jetzt einmal jemand sagen, um was es hier eigentlich geht ?? > Das herumhacken und herumzicken geht langsam auf dem sack. Hättest Du erstmal ruhig bis zum Ende gelesen, hättest Du gemerkt, dass alle Wogen bereits wieder geglättet sind. > Geht es jetzt
-
Thread
4" TFT für 7,97€
Ich würde mich auch gerne dranhängen, wenn's geht.
Grandios Benedikt ! Wär hätte gedacht, dass es so einfach geht ? Werd am Wochenende die Chinaplatinen schlachten :)
-
Thread
Timer, Interrupt, Taster, C
minuten == 60){ minuten = 0; stunden++; } if(stunden == 12){ stunden = 0; } PORTC = minuten; PORTB = stunden; if(sekunden==0 || sekunden == 30){ PORTD ^= (1<<PD6); } PORTD ^= (1<<PD7); } int timer (void) { if(sekunden == 60) { minuten++; sekunden =
Interrupt), optimiert er da u.U. ungewollt Zugriffe weg. Typisches Symptom: mit -O0 (ohne Optimierung) geht es, mit Optimierung (egal ob auf Zeit oder Codegröße) geht es nicht mehr.
-
Thread
Suche besseren C-Code
auslese. Man gibt ihm einen Takt und er gibt 18bit aus. Ob high oder low lese ich am PORTpin DO1 von PORTC ab. (es ist ein AS5045 chip, magnetic rotary encoder) Ich habe definiert: uint32_t data, aux; for (dIndex=11; dIndex>=0; dIndex--) {//readout position data aux = (PINC & (1<<DO1))>>
funktioniert so wie ich will, sprich die Logik stimmt. Dies ist meine "optimalste" Variante. Vielleicht geht es ja noch besser. Wer kann mir sagen wie ich dies 2 Zeilen moeglichst hardwarefreundlich umgestalte, sprich in moeglichst wenigen Prozessortakten abarbeite. Laut Disassembler von AVR Studio entstehen
-
Thread
I2C meldet status 0x38
nicht richtig;) > >0 spricht alle I2C-Teilnehmer an. Du willst aber nur einen. Wenn 0x0C nicht geht versuch 0x06.
Es geht immer noch nicht Hello world... 0x08 0x18 0x28 Byte sent: 1 0x38 Byte sent: 2 bekomme ich per RS232 zurück
-
Thread
stm32f103c8 lässt sic nich flashen
ST Visual programmer : http://www.st.com/en/development-tools/stvp-stm32.html Wenn der nicht geht, liegt es an der Hardware.
eine andere Datei aus dem Netz zu flashen, aber die muss natürlich compiliert sein. Der Quelltext geht da natürlich nicht, nie.
-
Thread
Grosse Statemachine
if ( taster == 1 ) { state++; } if ( state == 60 ) { state = 0; } PORTC= state; } Das ist eine Statemachine mit 60 zuständen und sie ist wunderbar lesbar.
App heraus, die zeigt, wie man Chaos produziert. Die 60 states sind im Übrigen nicht viel. Das geht noch schlimmer.
-
Thread
SPI funktioniert nicht
Sendepuffer steht jetzt empfangenes Byte return SPDR; } ISR (SIG_SPI) { // PORTC ^= ( 1 << PC1 ); if (status == 1){ PORTC &=~(1<<PC1); status = 0; } else { PORTC |=(1<<PC1); status = 1; } //data = SPDR; data = receive(); if (data == '1'){ PORTC |= (1 << PC0) ;} //LEDs an // if (data == '0') PORTC &= ~(1 << PC0) ; //LEDs aus else { PORTC &= ~(1 << PC0) ;} } void slave_init (void) { // DDRB |= _BV(PB4);
-
Thread
physikalischen Zustand der Ausgänge lesen
weiter gehen, wenn er wirklich physikalisch gesetzt. Welches Register muss ich dazu auslesen? geht das überhaupt? Danke, Alex
schon zwei zeilen weiter ist im Code, der Pin aber noch gar nicht tatsächlich highpedel hat. also PORTC = 0x01; PORTC = 0x00; würde nicht wirkich was bewirken, weil bei der zweiten komandozeile der PIn noch gar nicht auf High ist. Ist das beim Atmel auch so oder würde das so funktionieren nund eine
-
Thread
BASCOM und Pollin LCD Display
Ergänzung E2 Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , E = Portc.3 , E2 = Portc.2 , Rs = Portb.0 ' Systemvariable der LCD-Bibliothek (wichtig, bloß nicht ändern) Dim ___lcde As Byte Main: ' wählt die beiden oberen Zeilen aus ___lcde = 0 ' löscht
über meinen ATmega8 und Bascom bekomme ich nur komische Zeichen in den Zeilen dargestellt. Alles geht drunter und drüber...