Commit graph

229 commits

Author SHA1 Message Date
Victor Koenders 86444448a4
Migrated examples to the new uart system 2021-12-25 09:46:40 +01:00
Victor Koenders c41c273131
Added reader/writer split to UartPeripheral 2021-12-25 09:46:38 +01:00
Victor Koenders 84b8fb05b0
Fixed compile errors on eh1_0_alpha feature 2021-12-25 09:46:34 +01:00
Victor Koenders a8a27672b8
Constraint the uart::pin:: traits to UartDevice 2021-12-25 09:45:57 +01:00
Victor Koenders a4a0bcf987
Added pins to the uart constructor functions 2021-12-25 09:45:54 +01:00
Victor Koenders bdfb4d82c9
Split uart in separate files, introduced a typesystem constraint for valid UART pin configurations 2021-12-25 09:45:45 +01:00
Jonathan Pallant 4959afe151 Include manufacturer in BSP crate name.
Avoids ambiguity.
2021-12-20 21:28:00 +00:00
Pedro Ferreira 24a417f01a
Make fields in UartConfig public (#233)
Otherwise it's impossible to have a configuration which differs from the provided default options.
2021-12-14 10:47:35 +11:00
9names 427344667e
Add basic multicore FIFO example (#226)
* Add basic multicore fifo example

* Add documentation for multicore

* Send system_clock frequency to core1 over FIFO in example

* Add Stack::new() to HAL. Use Stack::new() in example
2021-12-08 19:34:39 +11:00
Jonathan 'theJPster' Pallant b94a5ab885
Merge pull request #232 from jannic/refactor-uart-init
Refactor uart init
2021-12-05 18:02:44 +00:00
Jan Niehusmann b380b3ddf6 Reset UART in new() 2021-12-05 07:05:12 +00:00
9names dc8ceffd09 Move uses of sio::Sio to Sio 2021-12-04 16:20:27 +11:00
9names 11aa0b87af Cargo fmt 2021-12-04 15:38:25 +11:00
Jan Niehusmann 26fa532fa3 Refactor Uart initialization 2021-12-03 21:24:50 +00:00
9names 33ff337631
Merge branch 'rp-rs:main' into reexport_mod_structs 2021-12-04 00:43:14 +11:00
9names 6ab9cd7ed3 Generate sev in sio.fifo.write() 2021-12-04 00:42:46 +11:00
9names 55a8b4acf9 Re-export mod structs 2021-12-04 00:04:45 +11:00
9names a7d5dc2bee Add safety docs from atsamd-rs to GPIO traits 2021-12-03 23:42:45 +11:00
Gus Caplan 5dafe3985f use user-provided stack for core 1
Fixes: https://github.com/rp-rs/rp-hal/issues/218
2021-12-03 20:24:53 +11:00
9names d84e641390
Add simple interrupt_disable+spinlock critical-section impl (#151)
* Add basic interrupt_disable+spinlock critical-section

* Update impl based on feedback from jannic

* Get rid of count variable, switch to AtomicU8 for lock state

* Remove interrupt::disable that isn't necessary for safety

* Rename variables, re-write most of the comments

* Add fences to ensure ordering
2021-12-02 00:03:41 +11:00
devsnek e1f99443d9
multicore (#89)
mvp multicore implementation

Co-authored-by: Jan Niehusmann <jan@gondor.com>
2021-12-01 23:52:53 +11:00
Trangar f68f148d12
Added RtcClock DateTime and alarms (#213)
* Added RealTimeClock, DateTime and RTC alarms

* Improved documentation on weird behaviors in the RealTimeClock

* Fixed incorrect leap_year_check in RealTimeClock

* Fixed rtc-datetime PR feedback
2021-11-29 21:15:20 +11:00
Jonathan 'theJPster' Pallant fad1dfa259
Merge pull request #191 from jannic/rename-set_instruction
Rename set_instruction to exec_instruction
2021-11-25 19:08:13 +00:00
Jonathan 'theJPster' Pallant 3a3280575f
Merge pull request #204 from rp-rs/add_sio_fifo
Add SIO FIFO
2021-11-25 19:05:40 +00:00
Jan Niehusmann bb8531445e Fix fmt
Thats what happens when editing files directly on github...
2021-11-25 16:44:57 +00:00
Jan Niehusmann 15c162757f
Update docs in rp2040-hal/src/pio.rs
Co-authored-by: Wilfried Chauveau <wilfried.chauveau@ithinuel.me>
2021-11-25 17:38:18 +01:00
Jonathan Pallant (Ferrous Systems) 69255f7b8c Fix wfe/sev semantics.
We must sev on write, so the other core can wfe on read.
2021-11-25 15:14:03 +00:00
Jonathan Pallant ed860ed106
Merge pull request #208 from VictorKoenders/spinlock
Added spinlocks
2021-11-25 14:44:46 +00:00
Jonathan Pallant 968e49aa03
Merge pull request #198 from VictorKoenders/alarm
Added timer alarms
2021-11-25 14:33:06 +00:00
Jonathan Pallant 292a6f13c8
Merge pull request #205 from jannic/eh-1_alpha6
Update eh1_0_alpha feature for embedded-hal 1.0.0-alpha.6
2021-11-25 14:30:02 +00:00
Victor Koenders 111b355da2
Fixed error in spinlock's documentation 2021-11-24 11:59:43 +01:00
Victor Koenders 88fbc38f8b
Added spinlocks 2021-11-24 08:19:42 +01:00
Victor Koenders a9d96f352e
Removed incorret unsafe impl Sync, added interrupt_free around obtaining an alarm 2021-11-24 07:41:04 +01:00
Victor Koenders 1fd04d3384
Made the alarmX take exclusive ownership of Timer on functions that could cause UB when run in parallel 2021-11-24 07:41:03 +01:00
Victor Koenders 97a5bd355c
Added AlarmX::disable_interrupt, made AlarmX::schedule able to return an error if the time is too short 2021-11-24 07:41:00 +01:00
Victor Koenders 119c5a94e8
Added timer alarms 2021-11-24 07:40:56 +01:00
Jan Niehusmann 3ab84702b7 Update comments 2021-11-21 13:16:03 +00:00
Jan Niehusmann 9a018ac359 Update uart implementation of embedded-hal 1.x to 1.0.0-alpha.6 2021-11-19 22:46:55 +00:00
Jan Niehusmann 1294f556e9 Update SPI implementation of embedded-hal 1.x to 1.0.0-alpha.6 2021-11-19 22:46:55 +00:00
Jan Niehusmann 0f3bb8e88c Update I2C implementation of embedded-hal 1.x to 1.0.0-alpha.6 2021-11-19 21:41:45 +00:00
Jonathan Pallant 038f792e21 Apply clippy's suggestions. 2021-11-19 17:38:32 +00:00
Jonathan Pallant 68014469dd Add SIO FIFO interface. 2021-11-19 17:19:04 +00:00
Jonathan Pallant 0a082c0f03 Changes to work with upcoming PAC 0.16. 2021-11-19 12:16:50 +00:00
Jan Niehusmann aafa3dd587 Keep old function as a deprecated alternative, for now
Mainly so i2c-pio-rs doesn't fail, as it is used by examples.
Should be removed once i2c-pio-rs is updated.
2021-11-16 22:27:08 +00:00
Jan Niehusmann 3756cd2fb5 Rename set_instruction to exec_instruction 2021-11-16 22:27:08 +00:00
Jonathan Pallant b9497d9b82 Resolve review comments.
Adds same functions to RX FIFO.
2021-11-16 21:45:52 +00:00
Jonathan Pallant 5c1bcd2604 Adds some useful functions when using PIO FIFOs with DMA. 2021-11-16 19:18:32 +00:00
contradict f9b3d8341d
Document properties needed for PIO Send safety (#190)
Start to address #186 (Safety requirement must be verbosely advertised to not be overlooked in future changes).

#177 (Mark PIO StateMachine, Rx and Tx as Send) added the Send trait to StateMachine, Tx and Rx, That documentation was expanded as suggested.

PIO, UninitStateMachine, Interrupt were marked Send before #177, added some documentation to those as well.
2021-11-10 21:55:37 +11:00
Wilfried Chauveau 620d5f0e0c
Use the PIOn peripherals in pin functions rather than creating an enum. (#193)
This allows the `FuncionPio?` to be inferred from the `pac::PIO?` used.
This change shall be transparent for anyone using the `FunctionPio?` aliases.
2021-11-10 21:27:46 +11:00
Wilfried Chauveau 990d964a93
Implement peripheral support for i2c and an advanced example (#162)
* Implement peripheral support for i2c and an advanced example for the pico board.

* Simplify i2c peripheral bootstrap and add a "free" function to allow switching modes.

* Set dependency to futures & nostd_async to specific version/revision.

* move enum & struct to the start of the file

* Add a bit of documentation to the pico_i2c_controller_peripheral demo.

* Migrate to pico_i2c_controller_peripheral to embassy & simplify the peripheral support

nostd_async is broken since last stable roll out.
The pico_i2c_controller_peripheral is being migrated to use embassy's executor.
The Controller Async API is now aligned with embassy's traits to facilitate integration.

The peripheral no longer require async to run and now appears as an event iterator.

Embassy's support relies on unstable features (generic_associated_types and type_alias_impl_traits)
and is therefore gated behind the `embassy-traits` feature flag.

* make futures & embassy optional for the pico board too

* Pin embassy to a specific rev.

* Impl embassy_traits::i2c::WriteIter & enable unlimited transfer size on i2c

* Applies comment suggestion from @9names for the advanced i2c example.

Co-authored-by: 9names <60134748+9names@users.noreply.github.com>

* use `I2C block` instead of `IP`.

* Fix formatting (unnecessary space at end of line)

* Enhance explanation for why `rd_req()`  is not cleared in `Iterator::next`'s
implementation.

Co-authored-by: 9names <60134748+9names@users.noreply.github.com>
2021-11-08 23:23:28 +11:00